{"version":3,"file":"static/js/7.35dfe4625808104ac886.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/components/quotation-list.tsx?af62","webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/components/orderTemplateList-status-message.tsx?1e05","webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/components/create-order-template.tsx?665c","webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/quotation-list.props.autogenerated.ts?8de7","webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/quotation-list.tsx?a75e","webpack://Msdyn365.Commerce.Online/./src/modules/quotation-list/quotation-list.view.tsx?cc45","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-order-template-to-cart.component.tsx?9a91","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/bulk-actions.tsx?fd67","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/common/item-added-to-cart-dialog.component.tsx?d169","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/spinner.tsx?9c11","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/add-line.tsx?e326","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/dropdown.tsx?5620","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/not-found.tsx?cbbf","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/common/quotation-quantity.tsx?8980","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/product-configuration.tsx?7a76","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/add-line/product-list.tsx?ce9a","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/quotation-actions.tsx?956b","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/quotation-lines.tsx?e9f8","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/quotation-lines-status-message.tsx?ac7f","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/components/quotation-table-heading.tsx?9da4","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/quotation.tsx?1bd1","webpack://Msdyn365.Commerce.Online/./src/modules/quotation/quotation.view.tsx?2130","webpack://Msdyn365.Commerce.Online/./src/modules/bulk-purchase/bulk-purchase.tsx?9fd5","webpack://Msdyn365.Commerce.Online/./src/modules/bulk-purchase/bulk-purchase.view.tsx?feac","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.tsx?80d4","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.view.tsx?d82f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/components/promocode.component.tsx?d9d6","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/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/social-share-item/social-share-item.tsx?bbcb","webpack://Msdyn365.Commerce.Online/./src/modules/social-share-item/social-share-item.view.tsx?2d3e","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"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\r\nimport { AddOrderTemplateToCartComponent } from '../../quotation/components';\r\nimport { getUrlSync, ICoreContext, IImageSettings, ITelemetry } from '@msdyn365-commerce/core'; //Image\r\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { OrderTemplate, OrderTemplateLine } from '@msdyn365-commerce-modules/retail-actions'; //getFallbackImageUrl, getProductUrlSync,\r\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateActionMessageState } from '../quotation-list';\r\n\r\nexport interface ISingleOrderTemplateProps extends ProductList {\r\n orderTemplateState: IOrderTemplateActionMessageState;\r\n name?: string;\r\n orderTemplate: OrderTemplate;\r\n context: ICoreContext;\r\n imageSettings?: IImageSettings;\r\n enableImageProductLink?: boolean;\r\n removeFromOrderTemplateListText: string;\r\n addToBagText: string;\r\n index: number;\r\n itemKey: string;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n handlers: {\r\n onRemoveOrderTemplate(id: string): void | undefined;\r\n onDismiss(): void;\r\n };\r\n resources: {\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ISingleOrderTemplateViewProps {\r\n key: string;\r\n orderTemplateImage: React.ReactNode;\r\n addToCartButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n orderTemplateStatusMessage?: React.ReactNode;\r\n orderTemplateName?: React.ReactNode;\r\n orderTemplateAriaLabel?: string;\r\n orderTemplateHeaderDivider?: React.ReactNode;\r\n}\r\n\r\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\r\n const { onRemoveOrderTemplate } = props.handlers;\r\n const { itemKey } = props;\r\n\r\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\r\n};\r\n\r\nconst OrderTemplateActions = {\r\n removeOrderTemplate: _removeItemFromOrderTemplateList\r\n};\r\n\r\n/**\r\n * Remove order template action.\r\n * @param input -Single order template props.\r\n * @returns Set remove order template.\r\n */\r\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\r\n OrderTemplateActions.removeOrderTemplate(input);\r\n};\r\n\r\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\r\n const {\r\n Id,\r\n orderTemplate,\r\n removeFromOrderTemplateListText,\r\n orderTemplateState,\r\n handlers,\r\n name,\r\n imageSettings,\r\n context,\r\n telemetryContent,\r\n enableImageProductLink\r\n } = input;\r\n\r\n if (!Id) {\r\n return null;\r\n }\r\n\r\n const _getOrderTemplatePageUrl = (): string => {\r\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\r\n const separator = url.includes('?') ? '&' : '?';\r\n if (Id) {\r\n return `${url}${separator}id=${Id}`;\r\n }\r\n return '';\r\n };\r\n\r\n const { onDismiss } = handlers;\r\n\r\n return {\r\n key: `${Id}-template`,\r\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\r\n orderTemplateAriaLabel: _renderAriaLabel(input),\r\n orderTemplateName: (\r\n
\r\n
\r\n \r\n {name}\r\n \r\n
\r\n
{orderTemplate.totalLines} line items
\r\n
\r\n
\r\n ),\r\n addToCartButton: (\r\n
\r\n \r\n
\r\n ),\r\n removeButton: (\r\n \r\n ),\r\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\r\n
\r\n \r\n {orderTemplateState.userMessage}\r\n \r\n
\r\n )\r\n };\r\n};\r\n\r\n/**\r\n * On image click handler.\r\n * @param productUrl -Product url value.\r\n * @returns Assign window location.\r\n */\r\n// const onClickHandler = (productUrl: string) => () => {\r\n// window.location.assign(productUrl);\r\n// };\r\n\r\nconst _renderOrderTemplateImages = (\r\n context: ICoreContext,\r\n orderTemplateLines?: OrderTemplateLine[],\r\n imageSettings?: IImageSettings,\r\n enableImageProductLink?: boolean\r\n): JSX.Element | null => {\r\n // const defaultImageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\r\n // lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\r\n // xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\r\n // },\r\n // lazyload: true\r\n // };\r\n\r\n if (orderTemplateLines) {\r\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\r\n\r\n return (\r\n
\r\n {orderTemplateLines?.slice(0, count).map(line => {\r\n // const productUrl = line.fullProduct\r\n // ? getProductUrlSync(line.fullProduct.ProductDetails, context.actionContext, undefined)\r\n // : '';\r\n\r\n return (\r\n <>\r\n // \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return
;\r\n};\r\n\r\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\r\n const { name } = props;\r\n return `${name}`;\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { orderTemplateListStatus } from '../quotation-list';\r\n\r\nexport interface IOrderTemplateListStatusMessageProps {\r\n className?: string;\r\n errorType: orderTemplateListStatus;\r\n text?: string;\r\n}\r\n\r\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\r\n switch (errorType) {\r\n case 'EMPTY':\r\n return

{text}

;\r\n case 'FAILED':\r\n return

{text}

;\r\n case 'LOADING':\r\n default:\r\n return

{text}

;\r\n }\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = props => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IQuotationList contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport interface IQuotationListConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n enableImageProductLink?: boolean;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface IQuotationListResources {\r\n emptyOrderTemplateText: string;\r\n unableToGetOrderTemplateList: string;\r\n removeButtonText: string;\r\n addToBagButtonText: string;\r\n createNewTemplateButtonText: string;\r\n orderTemplateCreatedSuccessText: string;\r\n orderTemplateListTitle: string;\r\n orderTemplateCreationFailedText: string;\r\n deleteOrderTemplateFailedText: string;\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n viewCartButtonText: string;\r\n orderTemplateCloseButtonText: string;\r\n linesAddedToCartHeaderItemsOneText: string;\r\n linesAddedToCartHeaderLinesOneText: string;\r\n linesAddedToCartHeaderLinesFormatText: string;\r\n linesAddedToCartHeaderMessageText: string;\r\n createOrderTemplateHeader: string;\r\n orderTemplateTitle: string;\r\n orderTemplateNameAriaLabel: string;\r\n createOrderTemplateDescription: string;\r\n createOrderTemplateButtonText: string;\r\n cancelNewOrderTemplateCreationButtonText: string;\r\n defaultOrderTemplateName: string;\r\n addToOrderTemplateDialogWarningV2: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IQuotationListProps extends Msdyn365.IModule {\r\n resources: IQuotationListResources;\r\n config: IQuotationListConfig;\r\n}\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\r\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\r\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISingleOrderTemplateProps,\r\n ISingleOrderTemplateViewProps,\r\n OrderTemplateListStatusMessage,\r\n OrderTemplateRender\r\n} from './components';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template';\r\nimport { IQuotationListData } from './quotation-list.data';\r\nimport { HeadingTag, IQuotationListProps, IQuotationListResources } from './quotation-list.props.autogenerated';\r\n\r\nexport interface IOrderTemplateActionMessageState {\r\n itemKey: string;\r\n userMessage: string;\r\n statusCssString: string;\r\n messageGlyph: string;\r\n isOpen: boolean;\r\n headerStatusMessage: string;\r\n}\r\n\r\nexport type orderTemplateListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\r\n\r\nexport interface IOrderTemplateListViewProps extends IQuotationListProps {\r\n OrderTemplateList: IModuleProps;\r\n status?: orderTemplateListStatus;\r\n statusMessage?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n OrderTemplates?: INodeProps;\r\n OrderTemplate?: INodeProps;\r\n orderTemplates?: ISingleOrderTemplateViewProps[];\r\n createOrderTemplateButton?: React.ReactNode;\r\n templateHeaderStatusMessage?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * OrderTemplateList component.\r\n * @extends {React.PureComponent, IOrderTemplateListActionMessageState>}\r\n */\r\n@observer\r\nclass OrderTemplateList extends React.Component, IOrderTemplateActionMessageState> {\r\n constructor(props: IQuotationListProps) {\r\n super(props);\r\n this.state = {\r\n itemKey: '',\r\n userMessage: '',\r\n headerStatusMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n this.setState({});\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IQuotationListProps, nextState: IOrderTemplateActionMessageState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { className, heading } = this.props.config;\r\n const { emptyOrderTemplateText, createNewTemplateButtonText } = this.props.resources;\r\n const { orderTemplates } = this.props.data;\r\n const orderTemplatesData = orderTemplates && orderTemplates.result;\r\n const orderTemplateListHeading = heading?.text ?? this.props.resources.orderTemplateListTitle;\r\n\r\n if (orderTemplates.status === 'LOADING') {\r\n const errorProps: IOrderTemplateListViewProps = {\r\n ...(this.props as IQuotationListProps),\r\n OrderTemplateList: {\r\n moduleProps: this.props,\r\n className: classnames('ms-order-template', className)\r\n },\r\n status: 'LOADING',\r\n statusMessage: ,\r\n heading: (\r\n \r\n )\r\n };\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n if (orderTemplatesData && orderTemplatesData.length === 0) {\r\n // When no order templates are found for customer\r\n const emptyViewProps: IOrderTemplateListViewProps = {\r\n ...(this.props as IQuotationListProps),\r\n OrderTemplateList: {\r\n moduleProps: this.props,\r\n className: classnames('ms-order-template', className)\r\n },\r\n status: 'EMPTY',\r\n statusMessage: ,\r\n heading: (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(emptyViewProps);\r\n }\r\n\r\n const viewProps: IOrderTemplateListViewProps = {\r\n ...(this.props as IQuotationListProps),\r\n OrderTemplateList: {\r\n moduleProps: this.props,\r\n className: classnames('ms-order-template', className)\r\n },\r\n status: 'SUCCESS',\r\n heading: ,\r\n createOrderTemplateButton: (\r\n \r\n ),\r\n templateHeaderStatusMessage: this.state.isOpen && this.state.headerStatusMessage && (\r\n
\r\n \r\n {this.state.headerStatusMessage}\r\n \r\n
\r\n ),\r\n OrderTemplates: {\r\n className: 'ms-order-template__list-item',\r\n tag: 'ul'\r\n },\r\n OrderTemplate: {\r\n className: 'ms-order-template__tile',\r\n tag: 'li'\r\n },\r\n orderTemplates: orderTemplatesData && this._renderOrderTemplateList(orderTemplatesData)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _generateOrderTemplateNameDialogResources(resources: IQuotationListResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n }\r\n\r\n private _renderOrderTemplateList(orderTemplates: OrderTemplate[]): ISingleOrderTemplateViewProps[] {\r\n const { context, telemetry } = this.props;\r\n const { imageSettings, enableImageProductLink } = this.props.config;\r\n return orderTemplates.map((orderTemplate: OrderTemplate, index) => {\r\n const currentTemplateProps: ISingleOrderTemplateProps = {\r\n orderTemplateState: this.state,\r\n Id: orderTemplate.productList.Id,\r\n name: orderTemplate.productList.Name,\r\n orderTemplate,\r\n context,\r\n imageSettings,\r\n enableImageProductLink,\r\n removeFromOrderTemplateListText: 'remove',\r\n addToBagText: this.props.resources.addToBagButtonText,\r\n index,\r\n itemKey: orderTemplate.productList.Id,\r\n telemetry,\r\n moduleId: this.props.id,\r\n moduleTypeName: this.props.typeName,\r\n handlers: {\r\n onRemoveOrderTemplate: this._onRemoveFromOrderTemplateList,\r\n onDismiss: this._onDismiss\r\n },\r\n resources: {\r\n closeWindowButtonText: this.props.resources.closeWindowButtonText,\r\n addToCartFailureMessage: this.props.resources.addToCartFailureMessage,\r\n addToCartSuccessMessage: this.props.resources.addToCartSuccessMessage,\r\n addToCartProcessMessage: this.props.resources.addToCartProcessMessage,\r\n linesAddedToCartDialogResources: {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\r\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\r\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\r\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\r\n }\r\n }\r\n };\r\n\r\n return OrderTemplateRender(currentTemplateProps)!;\r\n });\r\n }\r\n\r\n private readonly _onDismiss = () => {\r\n this.setState({\r\n isOpen: false\r\n });\r\n };\r\n\r\n private readonly _reloadPage = async () => {\r\n window.location.reload();\r\n };\r\n\r\n private readonly _onRemoveFromOrderTemplateList = (productListId: string): void | undefined => {\r\n const { context, data, telemetry, resources } = this.props;\r\n const { orderTemplates } = data;\r\n\r\n if (context && context.actionContext) {\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplates.result && orderTemplates.result[0] && productListId) {\r\n const orderTemplate = orderTemplates.result.find(p => p.productList.Id === productListId);\r\n if (orderTemplate) {\r\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.productList)\r\n .then()\r\n .catch((error: string) => {\r\n telemetry.warning('[order-template-list] Unable to delete order template.');\r\n telemetry.error(error);\r\n this.setState({\r\n itemKey: productListId,\r\n headerStatusMessage: resources.deleteOrderTemplateFailedText,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n })\r\n .then(this._reloadPage);\r\n } else {\r\n telemetry.warning('[order-template-list] Failed to delete order template. Order template was not found');\r\n }\r\n } else {\r\n telemetry.warning('[order-template-list] Failed to delete order template.');\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport default OrderTemplateList;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISingleOrderTemplateViewProps } from './components';\r\nimport { IOrderTemplateListViewProps } from './quotation-list';\r\n\r\nexport const OrderTemplateListView: React.FC = props => {\r\n const {\r\n OrderTemplateList,\r\n status,\r\n statusMessage,\r\n heading,\r\n OrderTemplates,\r\n orderTemplates,\r\n OrderTemplate,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n \r\n {createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n \r\n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\r\n \r\n {orderTemplates &&\r\n orderTemplates.map(orderTemplate => {\r\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nexport default OrderTemplateListView;\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 { FullProduct } from '@msdyn365-commerce/commerce-entities';\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { addOrderTemplateToCartAction, AddOrderTemplateToCartInput, OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPopupProductsProps,\r\n ITelemetryContent,\r\n PopupProducts,\r\n TelemetryConstant,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { ILinesAddedToCartDialogResources, LinesAddedToCartDialog } from '@msdyn365-commerce/components'; //' ../lines-added-to-cart-dialog/lines-added-to-cart-dialog.component';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport interface IAddOrderTemplateToCartComponentData {\r\n orderTemplate: OrderTemplate;\r\n}\r\n\r\nexport interface IAddOrderTemplateToCartComponentProps extends IComponentProps {\r\n className?: string;\r\n parentElementRef?: React.RefObject{' '}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport interface IModalWarningPropsFromLineAction {\r\n buttonLabel: string;\r\n className: string;\r\n applicationNode: string;\r\n isOpen: boolean;\r\n onWarningSubmit(product: SimpleProduct, quantity: number, itemKey: string, productSpecification: AttributeValue[]): void;\r\n warningClose(): void;\r\n productFromLineAction: SimpleProduct;\r\n quantityFromLineAction: number;\r\n itemKeyFromLineAction: string;\r\n productSpecificationFromLineAction: AttributeValue[];\r\n modalWarningResources?: IModalWarningResources;\r\n}\r\n\r\nexport class ModalWarningFromLineAction extends React.PureComponent {\r\n public modalWarningBtn: React.RefObject;\r\n\r\n constructor(props: IModalWarningPropsFromLineAction) {\r\n super(props);\r\n this.state = {\r\n warningAccepted: false\r\n };\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.accept = this.accept.bind(this);\r\n this.onWarningChecked = this.onWarningChecked.bind(this);\r\n this.modalWarningBtn = React.createRef();\r\n }\r\n\r\n public toggle(): void {\r\n this.setState({\r\n warningAccepted: false\r\n });\r\n this.props.warningClose();\r\n }\r\n\r\n public accept(): void {\r\n this.setState({\r\n warningAccepted: false\r\n });\r\n this.props.warningClose();\r\n this.props.onWarningSubmit(\r\n this.props.productFromLineAction,\r\n this.props.quantityFromLineAction,\r\n this.props.itemKeyFromLineAction,\r\n this.props.productSpecificationFromLineAction\r\n );\r\n }\r\n\r\n public onWarningChecked(): void {\r\n this.setState({\r\n warningAccepted: !this.state.warningAccepted\r\n });\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n

{this.props.modalWarningResources?.modalWarningHeader ?? 'Quotation process warning'}

\r\n
\r\n \r\n
\r\n {this.props.modalWarningResources?.modalWarningMessage ??\r\n 'To ensure that your quote contains only selected items, please empty your basket before converting list to bag.'}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {' '}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst AddOrderTemplate: React.FC = (props: IAddOrderTemplateToCartComponentProps) => {\r\n const [uploadStatus, setUploadStatus] = useState('WAITING');\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [addedLinesCount, setAddedLinesCount] = useState(0);\r\n const [linesAddedToCartDialogOpen, setLinesAddedToCartDialogOpen] = useState(false);\r\n const [modalWarningOpen, setModalWarningOpen] = useState(false);\r\n\r\n const onClickHandler = async (event: React.MouseEvent) => {\r\n buttonEventReference = event.target as HTMLButtonElement;\r\n await AddToCartComponentActions.onClick(\r\n event,\r\n props,\r\n setUploadStatus,\r\n setModalOpen,\r\n setLinesAddedToCartDialogOpen,\r\n setAddedLinesCount\r\n );\r\n };\r\n\r\n const warningHandler = () => {\r\n //debugger;\r\n setModalWarningOpen(true);\r\n };\r\n\r\n const warningClose = () => {\r\n setModalWarningOpen(false);\r\n };\r\n\r\n const closeLinesAddedToCartDialog = () => {\r\n setLinesAddedToCartDialogOpen(false);\r\n buttonEventReference?.focus();\r\n };\r\n\r\n const modalText = _getModalText(uploadStatus, props);\r\n const processStatusClass = uploadStatus.toLowerCase();\r\n const dialogStrings = { closeWindowButtonText: props.dialogStrings.closeWindowButtonText };\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.AddOrderTemplateToCart);\r\n const addOrderTemplateAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n\r\n const popupProps: IPopupProductsProps = {\r\n dialogStrings,\r\n className: 'msc-add-order-template-to-cart',\r\n processStatusClass,\r\n text: modalText,\r\n modalOpen,\r\n setModalOpen\r\n };\r\n\r\n const renderModalPopup = ;\r\n\r\n const products = props.data.orderTemplate.orderTemplateLines\r\n .map(line => line.fullProduct)\r\n .filter(fullProduct => fullProduct) as FullProduct[];\r\n\r\n return (\r\n <>\r\n {renderModalPopup}\r\n \r\n {props.addToCartText}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const AddOrderTemplateToCartComponent: React.FunctionComponent =\r\n // @ts-expect-error -- As per design, custom component\r\n msdyn365Commerce.createComponent('AddOrderTemplate', {\r\n component: AddOrderTemplate,\r\n ...AddToCartComponentActions\r\n });\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\n/* eslint-disable no-duplicate-imports */\r\n//import { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../quotation';\r\nimport { IQuotationData } from '../quotation.data';\r\nimport { IQuotationProps } from '../quotation.props.autogenerated';\r\nimport { AddLineToTemplate } from '.';\r\n\r\ninterface IOrderTemplateBulkActionsProps extends IQuotationProps {\r\n orderTemplateId: string;\r\n selectedLines: IOrderTemplateLineViewModel[];\r\n isMinifiedView: boolean;\r\n onAddSelectionToBag(): void;\r\n onRemoveSelection(): void;\r\n}\r\n\r\ninterface IOrderTemplateBulkActionsState {\r\n isAddDisabled: boolean;\r\n isRemoveDisabled: boolean;\r\n}\r\n\r\n/**\r\n * Bulk Order Template line actions.\r\n */\r\nexport class OrderTemplateBulkActions extends React.PureComponent {\r\n public state: IOrderTemplateBulkActionsState = {\r\n isAddDisabled: true,\r\n isRemoveDisabled: true\r\n };\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateBulkActionsProps,\r\n state: IOrderTemplateBulkActionsState\r\n ): IOrderTemplateBulkActionsState {\r\n const selectedLines = props.selectedLines.length;\r\n let nextState = { ...state };\r\n nextState = {\r\n isAddDisabled: selectedLines === 0,\r\n isRemoveDisabled: selectedLines === 0\r\n };\r\n return nextState;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n //addSelectedToBagButtonText,\r\n //removeSelectedToBagButtonText,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n } = this.props.resources;\r\n const addLineProps = {\r\n context: this.props.context,\r\n resources: {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n },\r\n imageSettings: this.props.config.imageSettings,\r\n orderTemplateId: this.props.orderTemplateId\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {/* \r\n \r\n {!this.props.isMinifiedView && addSelectedToBagButtonText}\r\n \r\n \r\n \r\n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\r\n */}\r\n \r\n );\r\n }\r\n\r\n // private readonly addHandler = (event: React.MouseEvent) => {\r\n // this.setState({\r\n // isAddDisabled: true\r\n // });\r\n\r\n // this.props.onAddSelectionToBag();\r\n\r\n // this.setState({\r\n // isAddDisabled: false\r\n // });\r\n // };\r\n\r\n // private readonly removeHandler = (event: React.MouseEvent) => {\r\n // this.setState({\r\n // isRemoveDisabled: true\r\n // });\r\n\r\n // this.props.onRemoveSelection();\r\n // };\r\n}\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 { getUrlSync, IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core'; //Image\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy'; //ProductPrice\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions'; //getFallbackImageUrl\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { PriceComponent } from '@msdyn365-commerce/components'; //'../../price/price.components';\r\nimport { IItemWithAttributeAddedToCartDialogData } from '../../quotation';\r\n\r\nexport interface IItemAddedToCartDialogResources {\r\n viewCartButtonText: string;\r\n orderTemplateCloseButtonText: string;\r\n itemAddedToCartHeaderItemOneText: string;\r\n itemAddedToCartHeaderItemFormatText: string;\r\n itemAddedToCartHeaderMessageText: string;\r\n\r\n freePriceText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n}\r\n\r\n// export interface IItemAddedToCartDialogData {\r\n// product: SimpleProduct;\r\n// productPrice: ProductPrice;\r\n// quantity: number;\r\n// }\r\n\r\nexport interface IItemAddedToCartDialogProps extends IComponentProps {\r\n className: string;\r\n\r\n dialogStrings: IItemAddedToCartDialogResources;\r\n\r\n modalOpen: boolean | undefined;\r\n onClose(): void;\r\n}\r\n\r\nconst renderImage = (context: ICoreContext, className: string, product: SimpleProduct, imageSettings?: IImageSettings) => {\r\n // const fallbackImageUrl = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\r\n // const defaultImageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\r\n // lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\r\n // xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\r\n // },\r\n // lazyload: true\r\n // };\r\n return (\r\n <>\r\n // \r\n );\r\n};\r\n\r\nconst _getErpSizeDescription = (attributeValues: AttributeValue[]): string => {\r\n if (!attributeValues || !ArrayExtensions.hasElements(attributeValues)) {\r\n return '';\r\n }\r\n const externalItemIdAttribute = attributeValues.find(\r\n attribute =>\r\n //attribute.Name === 'ERP_Sizes' || attribute.KeyName === 'ERPSizes'\r\n attribute.Name === 'Description'\r\n );\r\n if (externalItemIdAttribute) {\r\n return externalItemIdAttribute.TextValue ?? '';\r\n }\r\n return '';\r\n};\r\n\r\nexport const ItemWithAttributeAddedToCartDialog = (dialogProps: IItemAddedToCartDialogProps) => {\r\n const {\r\n dialogStrings,\r\n className,\r\n context,\r\n modalOpen,\r\n data: { product, productPrice, quantity, producSpecification }\r\n } = dialogProps;\r\n\r\n const getCartPageUrl = (): string => {\r\n return getUrlSync('cart', context.actionContext) || '';\r\n };\r\n\r\n const close: () => void = () => {\r\n dialogProps.onClose();\r\n };\r\n\r\n const itemsString =\r\n quantity === 1\r\n ? dialogStrings.itemAddedToCartHeaderItemOneText\r\n : dialogStrings.itemAddedToCartHeaderItemFormatText.replace('{0}', quantity.toString());\r\n\r\n return (\r\n \r\n \r\n {itemsString}\r\n {dialogStrings.itemAddedToCartHeaderMessageText}\r\n \r\n \r\n
\r\n {renderImage(context, `${className}__dialog`, product)}\r\n
\r\n
{product.Name}
\r\n
\r\n {productPrice && (\r\n \r\n )}\r\n
\r\n {// product.Dimensions &&\r\n //
\r\n // {product.Dimensions.map(dimension => dimension.DimensionValue?.Value).filter(value => value).join(', ')}\r\n //
\r\n _getErpSizeDescription(producSpecification)}\r\n
\r\n
\r\n
\r\n \r\n \r\n {dialogStrings.viewCartButtonText}\r\n \r\n \r\n {dialogStrings.orderTemplateCloseButtonText}\r\n \r\n \r\n
\r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport default (props: { className: string; msg?: string }) => (\r\n <>\r\n
\r\n {props?.msg &&
{props?.msg}
}\r\n \r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n addItemToOrderTemplate,\r\n AddItemToOrderTemplateInput,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getSelectedVariant,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport { get } from 'lodash';\r\nimport { computed } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\r\nimport Spinner from './spinner';\r\n\r\nexport interface IAddLineToTemplateProps {\r\n context: ICoreContext;\r\n resources: IAddLineToTemplateResources;\r\n orderTemplateId: string;\r\n imageSettings?: IImageSettings;\r\n}\r\n\r\nexport interface IAddLineToTemplateResources {\r\n addLineModalLinkText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n searchModalPlaceholderText: string;\r\n selectProductButtonText: string;\r\n addItemToTemplateText: string;\r\n addLineProductUnitPricePrefix: string;\r\n backButtonText: string;\r\n decrementButtonAriaLabel: string;\r\n incrementButtonAriaLabel: string;\r\n quantitySelectLabel: string;\r\n addLineProductUnitOfMeasurePrefix: string;\r\n notFoundSearchErrorNotice: string;\r\n notFoundSearchErrorRedediation: string;\r\n searchErrorMessage: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n searchResultsCountVerbage: string;\r\n searchResultsCountSubject: string;\r\n addToTemplateConfirmation: string;\r\n totalPriceLabel: string;\r\n progressNotificationText: string;\r\n addToTemplateDuplicateError: string;\r\n addToTemplateGenericError: string;\r\n dimensionMissingError: string;\r\n backToResultsText?: string;\r\n}\r\n\r\nenum CONTENT {\r\n Search,\r\n ProductList,\r\n ProductConfiguration,\r\n NotFound,\r\n Error,\r\n Loading\r\n}\r\n\r\ninterface IAddLineToTemplateState {\r\n isOpen: boolean;\r\n query: string;\r\n products: ProductSearchResult[];\r\n content: number;\r\n selectedProduct: SimpleProduct | null;\r\n selectedProductDimensions?: ProductDimensionFull[];\r\n selectedQuantity?: number;\r\n reloadPage?: boolean;\r\n}\r\n\r\n/**\r\n * Add Lines to order template.\r\n */\r\nexport class AddLineToTemplate extends React.Component {\r\n public state: IAddLineToTemplateState = {\r\n isOpen: false,\r\n query: '',\r\n products: [],\r\n content: CONTENT.Search,\r\n selectedProduct: null\r\n };\r\n\r\n public defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\r\n\r\n private readonly addLineButtonRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IAddLineToTemplateProps) {\r\n super(props);\r\n }\r\n\r\n public onComponentDidMount(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n public onComponentDidUpdate(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n @computed get showBackArrow(): boolean {\r\n return this.state.content === CONTENT.ProductConfiguration;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { addLineModalLinkText, backToResultsText }\r\n } = this.props;\r\n\r\n const modalProps = {\r\n ...this.props,\r\n className: 'msc-add-line-to-template',\r\n toggle: this._toggleModalHandler,\r\n isOpen: this.state.isOpen,\r\n ariaLabel: addLineModalLinkText\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {this.showBackArrow && (\r\n \r\n )}\r\n {addLineModalLinkText}\r\n \r\n {this._renderContent()}\r\n \r\n \r\n \r\n {addLineModalLinkText}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly _renderSearchForm = () => {\r\n const {\r\n resources: { searchButtonAriaLabel, searchModalPlaceholderText }\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _onIncrementalChange(amount: number): void {\r\n const updatedQuantity = this.state.currentInput + amount;\r\n\r\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\r\n this.props.onChange && this.props.onChange(updatedQuantity);\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = Number.parseInt(e.target.value, 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n this.setState({ currentInput: this.props.max });\r\n } else {\r\n this.setState({ currentInput: currentValue }, () => {\r\n debounce(() => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }, 200)();\r\n });\r\n }\r\n }\r\n\r\n private readonly _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n\r\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\r\n this.props.onChange && this.props.onChange(minValue);\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n };\r\n}\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\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings } from '@msdyn365-commerce/core'; //Image\r\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n //getFallbackImageUrl,\r\n getPriceForSelectedVariant,\r\n getProductAvailabilitiesForSelectedVariant,\r\n getSelectedVariant,\r\n IProductInventoryInformation,\r\n PriceForSelectedVariantInput,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport OrderTemplateQuantity from '../common/quotation-quantity';\r\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\r\n\r\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n imageSettings: IImageSettings;\r\n telemetryContent?: ITelemetryContent;\r\n searchForm: React.ReactNode;\r\n addToTemplateHandler(params: IProductConfigurationState): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n}\r\n\r\nexport interface IProductConfigurationState {\r\n quantity: number;\r\n unitPrice: number;\r\n totalPrice: number;\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n selectedDimensions: {};\r\n productAvailableQuantity?: IProductInventoryInformation;\r\n buttonDisabled: boolean;\r\n showAddConfirmation: boolean;\r\n errorMessage?: string;\r\n isBusy: boolean;\r\n errors: { dimension?: string[]; add?: string };\r\n}\r\n\r\n/**\r\n * Configure selected product for addition to order template.\r\n */\r\nexport class ProductConfiguration extends React.Component {\r\n private selectedDimensions: {} = {};\r\n\r\n constructor(props: IProductCnnfigurationProps) {\r\n super(props);\r\n\r\n this.state = {\r\n quantity: 1,\r\n unitPrice: props.product.Price,\r\n totalPrice: props.product.Price,\r\n product: props.product,\r\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n selectedDimensions: {},\r\n buttonDisabled: false,\r\n showAddConfirmation: false\r\n } as IProductConfigurationState;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n // context: {\r\n // actionContext: {\r\n // requestContext: { apiSettings }\r\n // },\r\n // request: { gridSettings }\r\n // },\r\n resources: {\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n totalPriceLabel\r\n },\r\n //imageSettings,\r\n highlightSearchTerm\r\n } = this.props;\r\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\r\n\r\n return (\r\n <>\r\n \r\n {this.props.searchForm}\r\n
\r\n
\r\n
\r\n {/* */}\r\n
\r\n
{product?.ItemId}
\r\n {highlightSearchTerm(product?.Name ?? '')}\r\n
\r\n {addLineProductUnitPricePrefix} {this._formatPrice(unitPrice)}\r\n
\r\n
\r\n {addLineProductUnitOfMeasurePrefix} {product?.DefaultUnitOfMeasure}\r\n
\r\n
\r\n
\r\n
{this._getDimensionsNodes()}
\r\n
\r\n
\r\n
{quantitySelectLabel}
\r\n \r\n
\r\n
\r\n
\r\n {totalPriceLabel} {this._formatPrice(totalPrice)}\r\n
\r\n
\r\n \r\n {showAddConfirmation && (\r\n \r\n
\r\n )}\r\n {errors?.add && (\r\n
\r\n
\r\n )}\r\n \r\n {addItemToTemplateText}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _getConfirmationMessage(): string {\r\n const selectedDimensionNames = this.state.dimensions\r\n .map(dimension => {\r\n let variant = dimension.DimensionValues?.find(\r\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\r\n )?.Value;\r\n if (dimension.DimensionTypeValue === 3) {\r\n variant = `size ${variant}`;\r\n }\r\n return variant;\r\n })\r\n .filter(value => value);\r\n\r\n return this.props.resources.addToTemplateConfirmation\r\n .replace('{count}', this.state.quantity.toString())\r\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\r\n }\r\n\r\n private _getDimensionsNodes(): React.ReactElement[] {\r\n const { dimensions } = this.state;\r\n const { resources } = this.props;\r\n\r\n return dimensions?.map((dimension: ProductDimensionFull) => {\r\n const { DimensionValues, DimensionTypeValue } = dimension;\r\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\r\n id: value.RecordId,\r\n value: value.Value || ''\r\n });\r\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\r\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\r\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\r\n\r\n return (\r\n
\r\n
{dimensionName}
\r\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n private readonly _getDimensionsError = (dimensionName: string) =>\r\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\r\n\r\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\r\n // Hide confirmation of previous addition when adding multiple items\r\n this.setState({\r\n isBusy: true,\r\n showAddConfirmation: false,\r\n errors: { ...this.state.errors, add: undefined }\r\n });\r\n\r\n const missingDimensions = this.state.dimensions\r\n .map(dimension => dimension.DimensionTypeValue.toString())\r\n .filter(type => !this.selectedDimensions[type]);\r\n\r\n this.setState({\r\n errors: { dimension: missingDimensions }\r\n });\r\n if (missingDimensions.length > 0) {\r\n this.setState({\r\n isBusy: false\r\n });\r\n return;\r\n }\r\n\r\n this.props\r\n .addToTemplateHandler({ ...this.state })\r\n .then(status => {\r\n // Validate against the existance of a ProductListId\r\n if (status.ProductListId) {\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: true\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\r\n let errorMessage;\r\n\r\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\r\n errorMessage = addToTemplateDuplicateError;\r\n } else {\r\n errorMessage = addToTemplateGenericError;\r\n }\r\n\r\n this.setState({\r\n isBusy: false,\r\n errors: { ...this.state.errors, add: errorMessage }\r\n });\r\n this.props.context.telemetry.error('Error adding item to order template');\r\n });\r\n };\r\n\r\n private readonly _onQuantityChange = (newValue: number) => {\r\n this.setState({\r\n quantity: newValue,\r\n totalPrice: newValue * this.props.product.Price\r\n });\r\n };\r\n\r\n private readonly _updateDimensionValue = (\r\n productDimensionFull: ProductDimensionFull,\r\n newValueId: string | undefined\r\n ): ProductDimensionValue | undefined => {\r\n if (newValueId && productDimensionFull.DimensionValues) {\r\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // Rehydrate the selected variants price, available dimensions & sizes\r\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\r\n const { product, dimensions, context } = this.props;\r\n const {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n } = context;\r\n\r\n // Remaining error notifications for missing dimensions\r\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\r\n\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: false,\r\n buttonDisabled: true,\r\n errors: { add: undefined, dimension: remainingDimensionsErrors }\r\n });\r\n\r\n // Update currently selected dimensions\r\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\r\n\r\n const mappedDimensions = dimensions\r\n ?.map(dimension => {\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue:\r\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\r\n dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n })\r\n .filter(dimension => {\r\n return dimension && dimension.DimensionValue;\r\n });\r\n\r\n const variantProduct = await getSelectedVariant(\r\n new SelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n undefined,\r\n this.props.context.request\r\n ),\r\n actionContext\r\n );\r\n\r\n if (!variantProduct) {\r\n this.props.context.telemetry.error(\r\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\r\n );\r\n return;\r\n }\r\n\r\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n this.props.context.request\r\n );\r\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\r\n\r\n if (!variantDimensions) {\r\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId\r\n );\r\n\r\n // @TODO sync UX quantity w/ actual availability\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\r\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\r\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\r\n\r\n if (!productPrice) {\r\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n buttonDisabled: false,\r\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\r\n unitPrice: +(productPrice.BasePrice || product.Price),\r\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n product: variantProduct\r\n });\r\n };\r\n\r\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\r\n switch (dimensionType) {\r\n case 1: // Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // Style\r\n return resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private _formatPrice(price: number): string {\r\n const {\r\n context: {\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n }\r\n } = this.props;\r\n\r\n return formatCurrency(price.toFixed(2), currencyCode);\r\n }\r\n}\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\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings } from '@msdyn365-commerce/core'; //Image\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\n//import { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IAddLineToTemplateProps } from '.';\r\n\r\nexport interface IProductListProps extends IAddLineToTemplateProps {\r\n products: ProductSearchResult[];\r\n imageSettings: IImageSettings;\r\n searchForm: React.ReactNode;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n renderResultCountText(): string;\r\n}\r\n\r\nexport const ProductList = (props: IProductListProps) => {\r\n const {\r\n products,\r\n context: {\r\n // actionContext: {\r\n // requestContext: { apiSettings }\r\n // },\r\n //request: { gridSettings },\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n },\r\n clickHandler,\r\n highlightSearchTerm,\r\n renderResultCountText,\r\n resources: { selectProductButtonText }\r\n //imageSettings\r\n } = props;\r\n\r\n return (\r\n <>\r\n

\r\n {renderResultCountText()}\r\n

\r\n {props.searchForm}\r\n
\r\n {products.map((product: ProductSearchResult, index: number) => {\r\n const { Price, ItemId, Name } = product; //PrimaryImageUrl\r\n const price = formatCurrency(Price.toFixed(2), currencyCode);\r\n //const fallBackImg = getFallbackImageUrl(ItemId, apiSettings) ?? '';\r\n\r\n return (\r\n
\r\n
\r\n {/* */}\r\n
\r\n
{ItemId}
\r\n {highlightSearchTerm(Name ?? '')}\r\n
\r\n
\r\n
\r\n {price}\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\n\r\ninterface IProductSelectButton {\r\n product: ProductSearchResult;\r\n buttonText: string;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n}\r\n\r\nconst ProductSelectButton = (props: IProductSelectButton) => {\r\n const [isBusy, setBusy] = useState(false);\r\n const { product, buttonText, clickHandler } = props;\r\n const getClickHandler = React.useCallback(async () => {\r\n setBusy(!isBusy);\r\n await clickHandler(product);\r\n setBusy(!isBusy);\r\n }, [clickHandler, isBusy, product]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources,\r\n RenameOrderTemplateComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { AddOrderTemplateToCartComponent } from './';\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\r\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IOrderTemplateActionsData {\r\n orderTemplate: OrderTemplate;\r\n}\r\n\r\nexport interface IOrderTemplateActionsProps extends IComponentProps {\r\n context: ICoreContext;\r\n telemetryContent?: ITelemetryContent;\r\n handlers: {\r\n onRemoveTemplate(orderTemplateId: string): void;\r\n onRenameTemplate(orderTemplate: ProductList): Promise;\r\n };\r\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\r\n resources: {\r\n addTemplateToBagButtonText: string;\r\n renameTemplateButtonText: string;\r\n deleteTemplateButtonText: string;\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\r\n };\r\n}\r\n\r\nexport interface IOrderTemplateActionsViewProps {\r\n addTemplateToBag: React.ReactNode;\r\n renameTemplate?: React.ReactNode;\r\n removeTemplate?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Remove Order Action.\r\n * @param props -Order template action props.\r\n * @returns Remove order template.\r\n */\r\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\r\n _removeOrderTemplate(props);\r\n};\r\n\r\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\r\n const { resources } = props;\r\n const { deleteTemplateButtonText } = resources;\r\n\r\n return {\r\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\r\n renameTemplate: _getOrderTemplateRenameControl(props),\r\n removeTemplate: (\r\n \r\n )\r\n };\r\n};\r\n\r\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\r\n const {\r\n data: { orderTemplate },\r\n handlers\r\n } = props;\r\n const { onRemoveTemplate } = handlers;\r\n\r\n if (onRemoveTemplate) {\r\n onRemoveTemplate(orderTemplate.productList.Id);\r\n }\r\n};\r\n\r\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const {\r\n data: { orderTemplate },\r\n typeName,\r\n id,\r\n context,\r\n telemetryContent,\r\n resources\r\n } = props;\r\n const {\r\n addTemplateToBagButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n linesAddedToCartDialogResources\r\n } = resources;\r\n\r\n const dialogStrings = {\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n linesAddedToCartDialogResources\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\r\n return (\r\n \r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { ICoreContext, IImageSettings, ITelemetry } from '@msdyn365-commerce/core'; //Image\r\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { AttributeValue, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { getFallbackImageUrl, ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../quotation';\r\nimport OrderTemplateQuantity from './common/quotation-quantity';\r\n\r\nexport interface IOrderTemplateLineProps extends ProductListLine {\r\n orderTemplateLine: IOrderTemplateLineViewModel;\r\n productListLine: ProductListLine;\r\n price?: ProductPrice;\r\n context: ICoreContext;\r\n productUrl: string;\r\n imageSettings?: IImageSettings;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n quantity: number;\r\n isQuantityDisabledForUpdate?: boolean;\r\n handlers: {\r\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, producSpecification: AttributeValue[]): void;\r\n onRemoveItem(line: IOrderTemplateLineViewModel): void | undefined;\r\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\r\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\r\n };\r\n resources: {\r\n selectOneRowText?: string;\r\n moreButtonText?: string;\r\n viewProductDetailsText?: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n freePriceText: string;\r\n inputQuantityAriaLabel: string;\r\n removeFromOrderTemplateLinesText: string;\r\n addToBagButtonText: string;\r\n deleteButtonText: string;\r\n incrementButtonAriaLabel?: string;\r\n decrementButtonAriaLabel?: string;\r\n editOrderTemplateLineQuantityError?: string;\r\n };\r\n index: number;\r\n isMobile: boolean;\r\n productQuantityView?: React.ReactNode;\r\n addToBagButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\r\n}\r\n\r\nexport interface IOrderTemplateLineViewProps {\r\n key?: string;\r\n productImage: React.ReactNode;\r\n productPrice?: React.ReactNode;\r\n addToBagButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n productName?: string;\r\n productNumber?: React.ReactNode;\r\n productInfo?: React.ReactNode;\r\n productLabel?: React.ReactNode;\r\n productUnitOfMeasure?: React.ReactNode;\r\n productQuantity?: number;\r\n productQuantityView?: React.ReactNode;\r\n productListId?: string;\r\n selectLine?: React.ReactNode;\r\n popUp?: JSX.Element;\r\n isMobile?: boolean;\r\n externalItemId: string;\r\n}\r\n\r\ninterface IEventHandlerFactory {\r\n getAddToBag(): (event: React.MouseEvent) => void;\r\n getRemoveItem(): (event: React.MouseEvent) => void;\r\n}\r\n\r\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\r\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\r\n const { LineId } = productListLine;\r\n const { onAddToBag, onRemoveItem } = handlers;\r\n\r\n return {\r\n getAddToBag: () => (event: React.MouseEvent) => {\r\n LineId &&\r\n orderTemplateLine.fullProduct &&\r\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, orderTemplateLine.productSpecificationData);\r\n },\r\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\r\n };\r\n};\r\n\r\ninterface IPopupProps extends IOrderTemplateLineProps {\r\n addButtonClassName: string;\r\n removeButtonClassName: string;\r\n}\r\n\r\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\r\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\r\n const [showMobile, setShowMobile] = useState(false);\r\n const componentClassName = 'ms-table';\r\n\r\n const getViewHandler = () => (event: React.MouseEvent) => {\r\n props.toggleDetailsDisplayed(props);\r\n };\r\n\r\n const toggle = React.useCallback(() => {\r\n setShowMobile(!showMobile);\r\n }, [showMobile]);\r\n\r\n return (\r\n
\r\n \r\n {showMobile && (\r\n
\r\n \r\n View\r\n \r\n {getActionButton(\r\n props.isMobile,\r\n props.removeButtonClassName,\r\n removeFromOrderTemplateLinesText,\r\n OrderTemplateLineActions(props).getRemoveItem()\r\n )}\r\n {getActionButton(\r\n props.isMobile,\r\n props.addButtonClassName,\r\n addToBagButtonText,\r\n OrderTemplateLineActions(props).getAddToBag()\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst getActionButton = (\r\n isMobile: boolean,\r\n className: string,\r\n buttonText: string,\r\n clickHandler: (event: React.MouseEvent) => void\r\n): React.ReactNode => (\r\n \r\n);\r\n\r\n/**\r\n * On Select line function.\r\n * @param orderTemplateLine -Order template line.\r\n * @param input -Order template line props.\r\n * @returns Set on select order template.\r\n */\r\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\r\n event: React.ChangeEvent\r\n) => {\r\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\r\n\r\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\r\n};\r\n\r\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\r\n const { orderTemplateLine, productListLine, price, context, imageSettings, quantity, resources, isMobile } = input;\r\n const product = orderTemplateLine.fullProduct;\r\n const { LineId, UnitOfMeasure } = productListLine;\r\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const { ItemId, Name, PrimaryImageUrl } = product.ProductDetails;\r\n const fallbackImage = getFallbackImageUrl(ItemId, context.actionContext.requestContext.apiSettings);\r\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\r\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\r\n\r\n return {\r\n isMobile,\r\n selectLine: (\r\n \r\n ),\r\n key: LineId!,\r\n productImage:\r\n PrimaryImageUrl &&\r\n Name &&\r\n _renderProductImage(\r\n 'ms-order-template-table-line__product-image',\r\n context,\r\n product.ProductDetails.Name!,\r\n PrimaryImageUrl,\r\n fallbackImage,\r\n imageSettings\r\n ),\r\n productInfo: renderProductInfo(input),\r\n productPrice: price && _renderPrice(input),\r\n productNumber: product &&
{ItemId}
,\r\n productUnitOfMeasure: price ? (\r\n
{UnitOfMeasure || price.UnitOfMeasure}
\r\n ) : (\r\n undefined\r\n ),\r\n productListId: LineId!,\r\n removeButton: getActionButton(\r\n input.isMobile,\r\n removeButtonClassName,\r\n removeFromOrderTemplateLinesText,\r\n OrderTemplateLineActions(input).getRemoveItem()\r\n ),\r\n productQuantityView:
{_generateQuantity(input, LineId!)}
,\r\n productQuantity: quantity,\r\n addToBagButton: getActionButton(\r\n input.isMobile,\r\n addButtonClassName,\r\n addToBagButtonText,\r\n OrderTemplateLineActions(input).getAddToBag()\r\n ),\r\n popUp: ,\r\n externalItemId: _getExternalItemId(orderTemplateLine)\r\n };\r\n};\r\n\r\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\r\n const { orderTemplateLine, productListLine, price, context, imageSettings } = input;\r\n const product = orderTemplateLine.fullProduct;\r\n const { LineId, UnitOfMeasure } = productListLine;\r\n if (!product) {\r\n return;\r\n }\r\n const { ItemId, Name, PrimaryImageUrl } = product.ProductDetails;\r\n const fallbackImage = getFallbackImageUrl(ItemId, context.actionContext.requestContext.apiSettings);\r\n\r\n return {\r\n productImage:\r\n PrimaryImageUrl &&\r\n Name &&\r\n _renderProductImage('thumbnail', context, product.ProductDetails.Name!, PrimaryImageUrl, fallbackImage, imageSettings),\r\n productInfo: renderProductInfo(input),\r\n productPrice: price && _renderPrice(input),\r\n productNumber: ItemId,\r\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\r\n productQuantityView: _generateQuantity(input, LineId!),\r\n externalItemId: _getExternalItemId(orderTemplateLine)\r\n };\r\n};\r\n\r\nexport interface IOrderTemplateProductQuantityViewProps {\r\n ContainerProps: INodeProps;\r\n input: React.ReactNode;\r\n}\r\n\r\nconst _getExternalItemId = (orderTemplateLine: IOrderTemplateLineViewModel): string => {\r\n const attributeValues = orderTemplateLine.productSpecificationData;\r\n\r\n if (!attributeValues || !ArrayExtensions.hasElements(attributeValues)) {\r\n return '';\r\n }\r\n const externalItemIdAttribute = attributeValues.find(\r\n attribute =>\r\n //attribute.Name === 'External Item Id' || attribute.Name === 'ERP_ExternalItemID' || attribute.KeyName === 'ERPExternalItemID'\r\n attribute.Name === 'Catalog Number'\r\n );\r\n if (externalItemIdAttribute) {\r\n return externalItemIdAttribute.TextValue ?? '';\r\n }\r\n return '';\r\n};\r\n\r\nconst _getErpSizeDescription = (orderTemplateLine: IOrderTemplateLineViewModel): string => {\r\n const attributeValues = orderTemplateLine.productSpecificationData;\r\n\r\n if (!attributeValues || !ArrayExtensions.hasElements(attributeValues)) {\r\n return '';\r\n }\r\n const externalItemIdAttribute = attributeValues.find(\r\n attribute =>\r\n //attribute.Name === 'ERP_Sizes' || attribute.KeyName === 'ERPSizes'\r\n attribute.Name === 'Description'\r\n );\r\n if (externalItemIdAttribute) {\r\n return externalItemIdAttribute.TextValue ?? '';\r\n }\r\n return '';\r\n};\r\n\r\n/**\r\n * On Change function.\r\n * @param onChangeQuantity -On change quantity function.\r\n * @param itemKey -String.\r\n * @param props -Order template line props.\r\n * @returns Set change quantity.\r\n */\r\nconst onChangeHandler = (\r\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\r\n itemKey: string,\r\n props: IOrderTemplateLineProps\r\n) => (newValue: number) => {\r\n if (onChangeQuantity) {\r\n onChangeQuantity(itemKey, newValue, props);\r\n }\r\n};\r\n\r\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\r\n const { handlers, resources, quantity } = props;\r\n const { onChangeQuantity } = handlers;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const _renderProductImage = (\r\n className: string,\r\n context: ICoreContext,\r\n heading: string,\r\n image?: string,\r\n fallbackImage?: string,\r\n imageSettings?: IImageSettings\r\n): JSX.Element | null => {\r\n // const defaultImageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n // lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n // xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\r\n // },\r\n // lazyload: true\r\n // };\r\n\r\n if (image) {\r\n return (\r\n <>\r\n // \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\r\n const { price, context, moduleId, moduleTypeName, resources } = props;\r\n\r\n if (price) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\n// const _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\r\n// const { orderTemplateLine } = props;\r\n\r\n// if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\r\n// return [];\r\n// }\r\n\r\n// return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\r\n// if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\r\n// return undefined;\r\n// }\r\n\r\n// return dimension.DimensionValue.Value;\r\n// });\r\n// };\r\n\r\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\r\n const { orderTemplateLine, productUrl } = props;\r\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\r\n\r\n //const dimensions = _renderProductDimensions(props);\r\n if (!orderTemplateLine.fullProduct) {\r\n return [];\r\n }\r\n\r\n const productName = productUrl ? (\r\n \r\n {name}\r\n \r\n ) : (\r\n
{name}
\r\n );\r\n\r\n const dimensionsLine: string = _getErpSizeDescription(props.orderTemplateLine); //dimensions.join(', ');\r\n\r\n return (\r\n
\r\n
{productName}
\r\n
{dimensionsLine}
\r\n
\r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { orderTemplateLinesStatus } from '../quotation';\r\n\r\nexport interface IOrderTemplateLinesStatusMessageProps {\r\n className?: string;\r\n errorType: orderTemplateLinesStatus;\r\n text?: string;\r\n}\r\n\r\nexport const OrderTemplateLinesStatusMessage: React.FC = ({ className, errorType, text }) => {\r\n switch (errorType) {\r\n case 'EMPTY':\r\n return

{text}

;\r\n case 'FAILED':\r\n return

{text}

;\r\n case 'LOADING':\r\n default:\r\n return

{text}

;\r\n }\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../quotation';\r\n\r\nexport interface IOrderTemplateTableHeadingProps {\r\n selectAllRowsText?: string;\r\n productNumber: string;\r\n productName: string;\r\n productUnitPrice: string;\r\n productUOM: string;\r\n productQuantity: string;\r\n productActions: string;\r\n lines: IOrderTemplateLineViewModel[];\r\n isMobile: boolean;\r\n clickHandler(isChecked: boolean): void;\r\n}\r\n\r\n/**\r\n * Order Template's table state.\r\n */\r\nexport interface IOrderTemplateTableHeadingState {\r\n isChecked: boolean;\r\n}\r\n\r\nexport interface IOrderTemplateTableShortHeading {\r\n productNumber: string;\r\n productActions: string;\r\n}\r\n\r\n/**\r\n * Order Template's table heading.\r\n */\r\nexport class OrderTemplateTableHeading extends React.PureComponent {\r\n public state: IOrderTemplateTableHeadingState = {\r\n isChecked: false\r\n };\r\n\r\n private readonly componentClassName: string = 'ms-table';\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateTableHeadingProps,\r\n state: IOrderTemplateTableHeadingState\r\n ): IOrderTemplateTableHeadingState {\r\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\r\n let nextState = { ...state };\r\n nextState = { isChecked: checkedLines === 0 };\r\n return nextState;\r\n }\r\n\r\n public getOnChange = () => (event: React.ChangeEvent) => {\r\n this.setState(\r\n {\r\n isChecked: this.state.isChecked\r\n },\r\n () => {\r\n this.props.clickHandler(!this.state.isChecked);\r\n }\r\n );\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  \r\n {this.props.productNumber}\r\n {!this.props.isMobile ? {this.props.productName} : null}\r\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\r\n {!this.props.isMobile ? {this.props.productUOM} : null}\r\n {!this.props.isMobile ? {this.props.productQuantity} : null}\r\n {!this.props.isMobile ? {this.props.productActions} : }\r\n \r\n \r\n );\r\n }\r\n}\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n //IItemAddedToCartDialogData,\r\n IItemAddedToCartDialogResources,\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources //,\r\n //ItemAddedToCartDialog\r\n} from '@msdyn365-commerce/components';\r\nimport { ItemWithAttributeAddedToCartDialog } from './components/common/item-added-to-cart-dialog.component';\r\nimport MsDyn365, { AsyncResult, getUrlSync, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { ProductList, ProductListLine, ProductPrice, AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n deleteAsync,\r\n removeProductListLinesAsync,\r\n updateProductListLinesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n getPriceForSelectedVariant,\r\n getProductUrlSync,\r\n ObjectExtensions,\r\n OrderTemplate,\r\n OrderTemplateLine,\r\n PriceForSelectedVariantInput,\r\n getSelectedVariant,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Alert,\r\n getTelemetryObject,\r\n Heading,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n UncontrolledPagination\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport debounce from 'lodash/debounce';\r\nimport { action, computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IOrderTemplateActionsProps,\r\n IOrderTemplateActionsViewProps,\r\n IOrderTemplateLineProps,\r\n IOrderTemplateLineViewProps,\r\n IOrderTemplateTableHeadingProps,\r\n OrderTemplateActionsView,\r\n OrderTemplateLinesStatusMessage,\r\n OrderTemplateLineView,\r\n OrderTemplateMobileLineView,\r\n OrderTemplateTableHeading,\r\n ModalWarning,\r\n ModalWarningFromLineAction,\r\n IModalWarningResources\r\n} from './components'; //'@msdyn365-commerce-modules/order-template';\r\nimport { ActiveOrderTemplateLinesInput } from './actions/get-quotation';\r\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\r\nimport { IQuotationData } from './quotation.data';\r\nimport { IQuotationProps, IQuotationResources } from './quotation.props.autogenerated';\r\n\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '@msdyn365-commerce-modules/product-specification';\r\n\r\nexport interface IItemWithAttributeAddedToCartDialogData {\r\n product: SimpleProduct;\r\n productPrice: ProductPrice;\r\n quantity: number;\r\n producSpecification: AttributeValue[];\r\n}\r\n\r\nexport interface IOrderTemplateLineActionMessageState {\r\n itemKey: string;\r\n userMessage: string;\r\n statusCssString: string;\r\n messageGlyph: string;\r\n isOpen: boolean;\r\n isItemAddedToOrderTemplateOpen: boolean;\r\n isConfirmAddSelectionToBagModalOpen: boolean;\r\n itemAddedToCartDialogData?: IItemWithAttributeAddedToCartDialogData;\r\n productSelection: IOrderTemplateLineViewModel[];\r\n isDetailsDisplayed: boolean;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n isQuantityDisabledForUpdate?: boolean;\r\n modalWarningOpen: boolean;\r\n modalWarningFromLineActionOpen: boolean;\r\n productFromLineAction: SimpleProduct;\r\n quantityFromLineAction: number;\r\n itemKeyFromLineAction: string;\r\n productSpecificationFromLineAction: AttributeValue[];\r\n}\r\n\r\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\r\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface IOrderTemplateViewProps extends IQuotationProps {\r\n OrderTemplateLines: IModuleProps;\r\n callbacks?: IOrderTemplateLinesCallbacks;\r\n status?: orderTemplateLinesStatus;\r\n statusMessage?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n OrderTemplateActions?: INodeProps;\r\n ProductsTable?: INodeProps;\r\n ProductsTableRow?: INodeProps;\r\n ProductsTableHeading?: React.ReactNode;\r\n ProductDetails?: INodeProps;\r\n orderLines?: IOrderTemplateLineViewProps[];\r\n productListLines?: ProductListLine[];\r\n productsStatusMessage?: React.ReactNode;\r\n orderActions?: IOrderTemplateActionsViewProps | null;\r\n resources: IQuotationResources;\r\n pagination?: React.ReactNode;\r\n itemAddedToCartDialog?: React.ReactNode;\r\n bulkOrderLineActions?: React.ReactNode;\r\n isDetailsDisplayed?: boolean;\r\n detailedProduct?: IOrderTemplateLineProps;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n productQuantityView?: React.ReactNode;\r\n addButton?: React.ReactNode;\r\n isMobile?: boolean;\r\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\r\n modalWarning?: React.ReactNode;\r\n modalWarningFromLineAction?: React.ReactNode;\r\n}\r\n\r\nexport interface IOrderTemplateLinesCallbacks {\r\n updateQuantity(itemKey: string, quantity: number): void;\r\n}\r\n\r\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\r\n isChecked: boolean;\r\n productQuantityView: React.ReactNode;\r\n productSpecificationData: AttributeValue[];\r\n}\r\n\r\n/**\r\n *\r\n * OrderTemplateLines component.\r\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\r\n */\r\n@observer\r\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\r\n private readonly className: string;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n @observable\r\n private _viewport: GridSize;\r\n\r\n @computed get isMobile(): boolean {\r\n return this._viewport === 'xs' || this._viewport === 'sm';\r\n }\r\n\r\n public async _getProductSpecifications(orderTemplate: OrderTemplate | undefined): Promise {\r\n let orderTemplateWithAttributes: IOrderTemplateLineViewModel[] = [];\r\n\r\n const orderLength = orderTemplate?.orderTemplateLines.length ?? 0;\r\n for (let i = 0; i < orderLength; i++) {\r\n let line = orderTemplate?.orderTemplateLines[i];\r\n\r\n const productInput = new SelectedVariantInput(\r\n line?.fullProduct?.ProductDetails.RecordId ?? 0, //MasterProductId\r\n +this.props.context.actionContext.requestContext.apiSettings.channelId\r\n );\r\n const simpleProduct = await getSelectedVariant(productInput, this.props.context.actionContext);\r\n\r\n const attributeInput = new AttributesForSelectedVariantInput(\r\n line?.fullProduct?.ProductDetails.RecordId ?? 0, //MasterProductId\r\n +this.props.context.actionContext.requestContext.apiSettings.channelId,\r\n simpleProduct ?? undefined //this.props.data.product.result\r\n );\r\n const productSpecification = await getAttributesForSelectedVariant(attributeInput, this.props.context.actionContext);\r\n\r\n orderTemplateWithAttributes.push({\r\n ...(orderTemplate?.orderTemplateLines[i] as IOrderTemplateLineViewModel),\r\n productSpecificationData: productSpecification\r\n });\r\n }\r\n\r\n return orderTemplateWithAttributes;\r\n }\r\n\r\n constructor(props: IQuotationProps, state: IOrderTemplateLineActionMessageState) {\r\n super(props);\r\n //debugger;\r\n this.className = 'ms-order-template';\r\n this._viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._updateViewport = this._updateViewport.bind(this);\r\n\r\n this.state = {\r\n itemKey: '',\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: false,\r\n isConfirmAddSelectionToBagModalOpen: false,\r\n productSelection: [],\r\n isDetailsDisplayed: false,\r\n isQuantityDisabledForUpdate: false,\r\n modalWarningOpen: false,\r\n modalWarningFromLineActionOpen: false,\r\n productFromLineAction: Object(),\r\n quantityFromLineAction: 0,\r\n itemKeyFromLineAction: '',\r\n productSpecificationFromLineAction: []\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 this._updateViewport();\r\n\r\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated) {\r\n window.location.assign(this.props.context.request.user.signInUrl || '/');\r\n }\r\n }\r\n\r\n @action\r\n public async componentDidMount(): Promise {\r\n //debugger;\r\n this.setState({});\r\n const orderTemplate = await this.props.data.orderTemplate;\r\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\r\n\r\n const orderTemplateLinesWithAttributes = await this._getProductSpecifications(orderTemplate);\r\n\r\n this.setState({\r\n //productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\r\n productSelection: orderTemplateLinesWithAttributes as IOrderTemplateLineViewModel[]\r\n });\r\n\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public warningOpen = () => {\r\n this.setState({\r\n modalWarningOpen: true\r\n });\r\n };\r\n\r\n public warningClose = () => {\r\n this.setState({\r\n modalWarningOpen: false\r\n });\r\n };\r\n\r\n public warningFromLineActionOpen = (\r\n product: SimpleProduct,\r\n quantity: number,\r\n itemKey: string,\r\n productSpecification: AttributeValue[]\r\n ) => {\r\n this.setState({\r\n modalWarningFromLineActionOpen: true,\r\n productFromLineAction: product,\r\n quantityFromLineAction: quantity,\r\n itemKeyFromLineAction: itemKey,\r\n productSpecificationFromLineAction: productSpecification\r\n });\r\n };\r\n\r\n public warningFromLineActionClose = () => {\r\n this.setState({\r\n modalWarningFromLineActionOpen: false\r\n });\r\n };\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IQuotationProps, nextState: IOrderTemplateLineActionMessageState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, className } = this.props.config;\r\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\r\n const { orderTemplate, cart } = this.props.data;\r\n\r\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IQuotationProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(this.className, className)\r\n },\r\n status: 'LOADING',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IQuotationProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'FAILED',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n const orderTemplateResult = orderTemplate && orderTemplate.result;\r\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\r\n\r\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\r\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\r\n window.location.href = this._getOrderTemplatePageUrl();\r\n return null;\r\n }\r\n\r\n const emptyViewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IQuotationProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'EMPTY',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n\r\n return this.props.renderView(emptyViewProps);\r\n }\r\n\r\n const viewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IQuotationProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'SUCCESS',\r\n productsStatusMessage: this.state.isOpen && (\r\n
\r\n \r\n {this.state.userMessage}\r\n \r\n
\r\n ),\r\n heading: heading && ,\r\n OrderTemplateActions: {\r\n className: `${this.className}-action-bar`,\r\n tag: 'div'\r\n },\r\n ProductsTable: {\r\n className: `${this.className}__table`,\r\n tag: 'table',\r\n role: 'grid'\r\n },\r\n ProductsTableRow: {\r\n className: `${this.className}-table-line`,\r\n tag: 'tr'\r\n },\r\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\r\n ProductDetails: {\r\n className: `${this.className}-table-line__link`,\r\n tag: 'a'\r\n },\r\n orderLines: this._renderProductList(),\r\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\r\n orderActions: this._renderOrderTemplateActions(orderTemplateResult),\r\n pagination: this._renderPagination(),\r\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\r\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\r\n isDetailsDisplayed: this.state.isDetailsDisplayed,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\r\n detailedProductView: this.state.detailedProductView,\r\n isMobile: this.isMobile,\r\n modalWarning: this._renderModalWarning(),\r\n modalWarningFromLineAction: this._renderModalWarningFromLineAction()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\r\n line.isChecked = isChecked;\r\n\r\n const updated =\r\n this.state.productSelection.map(product => {\r\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\r\n line.isChecked = isChecked;\r\n }\r\n return product;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n public onSelectAll(isChecked: boolean): void {\r\n const updated =\r\n this.state.productSelection.map(line => {\r\n line.isChecked = isChecked;\r\n return line;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n private _renderProductListHeader(resources: IQuotationResources): React.ReactNode {\r\n const {\r\n productNumberText,\r\n productText,\r\n productUnitPriceText,\r\n productUOMText,\r\n productQuantityText,\r\n productActionsText,\r\n selectAllRowsText\r\n } = resources;\r\n const headers: IOrderTemplateTableHeadingProps = {\r\n productNumber: productNumberText,\r\n productName: productText,\r\n productUnitPrice: productUnitPriceText,\r\n productUOM: productUOMText,\r\n productQuantity: productQuantityText,\r\n productActions: productActionsText,\r\n selectAllRowsText,\r\n lines: this.state.productSelection,\r\n isMobile: this.isMobile,\r\n clickHandler: (isChecked: boolean) => {\r\n this.onSelectAll(isChecked);\r\n }\r\n };\r\n\r\n return ;\r\n }\r\n\r\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\r\n return (\r\n line.isChecked)}\r\n onAddSelectionToBag={this.warningOpen} //{this._onAddSelectionToBag}\r\n onRemoveSelection={this._onRemoveSelection}\r\n isMinifiedView={this.isMobile}\r\n />\r\n );\r\n }\r\n\r\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\r\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\r\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\r\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\r\n };\r\n }\r\n\r\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\r\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\r\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\r\n freePriceText: this.props.resources.freePriceText,\r\n originalPriceText: this.props.resources.originalPriceText,\r\n currentPriceText: this.props.resources.currentPriceText\r\n };\r\n }\r\n\r\n private readonly _onRemoveSelection = (): void => {\r\n const { context, resources } = this.props;\r\n const { telemetry } = context;\r\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\r\n const lines = this.state.productSelection;\r\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\r\n\r\n if (productListLines && productListLines.length > 0) {\r\n const productListId = productListLines[0].ProductListId;\r\n\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\r\n .then(async () => {\r\n this.setState({\r\n userMessage: removeSelectedSuccessMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n this.setState({\r\n userMessage: removeSelectedFailureMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n });\r\n }\r\n };\r\n\r\n private readonly _getOrderTemplatePageUrl = (): string => {\r\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\r\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\r\n if (this.props.data.orderTemplate?.result?.productList.Id) {\r\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\r\n }\r\n return '';\r\n };\r\n\r\n private readonly _onAddSelectionToBag = async (): Promise => {\r\n const lines = this.state.productSelection;\r\n const selectedLines = lines.filter(line => line.isChecked);\r\n if (selectedLines.length > 0) {\r\n for (const productLine of selectedLines) {\r\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\r\n const product = productLine.fullProduct?.ProductDetails ?? {\r\n RecordId: 0,\r\n ProductTypeValue: 0,\r\n BasePrice: 0,\r\n Price: 0,\r\n AdjustedPrice: 0\r\n };\r\n const productSpecification = productLine.productSpecificationData;\r\n const quantity = productLine.productListLine.Quantity ?? 0;\r\n this._addItemToBag(product, quantity, itemKey, productSpecification);\r\n }\r\n }\r\n return Promise.resolve(void 0);\r\n };\r\n\r\n private _renderOrderTemplateActions(orderTemplate: OrderTemplate): IOrderTemplateActionsViewProps {\r\n const { id, typeName, context, resources } = this.props;\r\n const {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage\r\n } = resources;\r\n\r\n const orderTemplateActions: IOrderTemplateActionsProps = {\r\n data: { orderTemplate },\r\n id,\r\n typeName,\r\n context,\r\n telemetryContent: this.telemetryContent,\r\n handlers: {\r\n onRenameTemplate: this._renameTemplate,\r\n onRemoveTemplate: this._removeTemplate\r\n },\r\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\r\n resources: {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n closeWindowButtonText,\r\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\r\n }\r\n };\r\n\r\n return OrderTemplateActionsView(orderTemplateActions);\r\n }\r\n\r\n private _generateOrderTemplateNameDialogResources(resources: IQuotationResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\r\n orderTemplateDescription: '',\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\r\n };\r\n }\r\n\r\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\r\n if (MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n }\r\n return new URL(reqContext.url.requestUrl.href);\r\n };\r\n\r\n /**\r\n * On close handler.\r\n */\r\n private readonly onCloseHandler = () => {\r\n this.setState({\r\n itemKey: this.state.itemKey,\r\n userMessage: this.state.userMessage,\r\n statusCssString: this.state.statusCssString,\r\n messageGlyph: this.state.messageGlyph,\r\n isOpen: this.state.isOpen,\r\n isItemAddedToOrderTemplateOpen: false\r\n });\r\n };\r\n\r\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\r\n if (!this.state.itemAddedToCartDialogData) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _isFirstPage(): boolean {\r\n return this._getCurrentPageNumber() === 0;\r\n }\r\n\r\n private _getCurrentPageNumber(): number {\r\n const itemsPerPage = this.props.config.itemsPerPage || 50;\r\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\r\n }\r\n\r\n private readonly _renderPagination = (): React.ReactNode | null => {\r\n const { config, context, data, resources } = this.props;\r\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\r\n if (!orderTemplate) {\r\n return null;\r\n }\r\n\r\n const fullUrl = this._getCurrentUrl(context.request);\r\n const itemsPerPage = config.itemsPerPage || 50;\r\n const currentPageNumber = this._getCurrentPageNumber();\r\n const skipCount = currentPageNumber * itemsPerPage;\r\n const totalItems = orderTemplate && orderTemplate.totalLines;\r\n const previousText = resources.flipperPrevious;\r\n const nextText = resources.flipperNext;\r\n\r\n if (totalItems <= itemsPerPage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _renderProductList(): IOrderTemplateLineViewProps[] {\r\n const {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n addOrderTemplateItemToBagButtonText,\r\n removeItemFromOrderTemplateButtonText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n inputQuantityAriaLabel,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel\r\n } = this.props.resources;\r\n\r\n const { context, telemetry } = this.props;\r\n const { imageSettings } = this.props.config;\r\n\r\n return this.state.productSelection.map((line, index) => {\r\n const currentProductProps: IOrderTemplateLineProps = {\r\n orderTemplateLine: line,\r\n productListLine: line.productListLine,\r\n price: line.fullProduct?.ProductPrice,\r\n context,\r\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\r\n productUrl: line.fullProduct ? getProductUrlSync(line.fullProduct.ProductDetails, context.actionContext, undefined) : '',\r\n imageSettings,\r\n telemetry,\r\n moduleId: this.props.id,\r\n moduleTypeName: this.props.typeName,\r\n quantity: line.productListLine.Quantity!,\r\n handlers: {\r\n onAddToBag: this.warningFromLineActionOpen,\r\n onRemoveItem: this._removeItemFromOrderTemplateLines,\r\n onChangeQuantity: this._changeQuantity,\r\n onSelect: this.onSelect.bind(this)\r\n },\r\n resources: {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n freePriceText: priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n inputQuantityAriaLabel,\r\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\r\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel\r\n },\r\n index,\r\n isMobile: this.isMobile,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed\r\n };\r\n\r\n return OrderTemplateLineView(currentProductProps)!;\r\n });\r\n }\r\n\r\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\r\n let state = {\r\n isDetailsDisplayed: !this.state.isDetailsDisplayed\r\n };\r\n if (props) {\r\n state = {\r\n ...state,\r\n ...{\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n }\r\n };\r\n }\r\n this.setState(state);\r\n };\r\n\r\n // Dismiss alert when addingToCart/removeItem\r\n private readonly _onDismiss = () => {\r\n this.setState({\r\n isOpen: false\r\n });\r\n };\r\n\r\n private readonly _changeQuantity = (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\r\n const { context, data, telemetry, config, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context) {\r\n if (orderTemplate?.result) {\r\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\r\n if (orderTemplateLinesData) {\r\n const orderLineIndex = orderTemplateLinesData.findIndex(\r\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\r\n );\r\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\r\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\r\n return;\r\n }\r\n const prevQuantity = newProductListLine.productListLine.Quantity;\r\n newProductListLine.productListLine.Quantity = quantity;\r\n const { fullProduct, ...line } = newProductListLine;\r\n\r\n // Update mobile modal\r\n if (props) {\r\n props.quantity = quantity;\r\n this.setState({\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n }\r\n\r\n this.setState({\r\n isQuantityDisabledForUpdate: true\r\n });\r\n\r\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\r\n line.productListLine\r\n ])\r\n .then(list => {\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: false\r\n });\r\n if (list) {\r\n const newLine = list.find(lines => lines.LineId === itemKey);\r\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\r\n const updatedLines = [...orderTemplateLinesData];\r\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\r\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\r\n context.actionContext.update(\r\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\r\n updatedOrderTemplate\r\n );\r\n }\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\r\n telemetry.error(error);\r\n const userMessage = resources.editOrderTemplateLineQuantityError;\r\n if (props) {\r\n props && (props.productListLine.Quantity = prevQuantity);\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true,\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n } else {\r\n newProductListLine.productListLine.Quantity = prevQuantity;\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private readonly _addItemToBag = (\r\n product: SimpleProduct,\r\n quantity: number,\r\n itemKey: string,\r\n producSpecification: AttributeValue[]\r\n ): void => {\r\n const { context, data, resources, telemetry } = this.props;\r\n const { cart } = data;\r\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\r\n\r\n if (context) {\r\n if (cart.result) {\r\n const addProductToCartInput = {\r\n product,\r\n count: quantity\r\n };\r\n\r\n cart.result\r\n .addProductToCart(addProductToCartInput)\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'SUCCESS') {\r\n return getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(\r\n product.RecordId,\r\n this.props.context.actionContext.requestContext.apiSettings.channelId,\r\n product\r\n ),\r\n this.props.context.actionContext\r\n ).then(priceResult => {\r\n if (!priceResult) {\r\n return AsyncResult.reject('Failed to retrieve product price');\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: !isMiniCart,\r\n itemAddedToCartDialogData: {\r\n product,\r\n productPrice: priceResult,\r\n quantity,\r\n producSpecification\r\n },\r\n isDetailsDisplayed: false\r\n });\r\n return AsyncResult.resolve();\r\n });\r\n } else if (result.substatus === 'MAXQUANTITY') {\r\n this.setState({\r\n itemKey,\r\n userMessage:\r\n maxQuantityLimitText\r\n .replace('{curQuantity}', quantity.toString())\r\n .replace('{maxQuantity}', context.app.config.maxQuantityForProductListLineItem.toString()) ||\r\n `You can only add ${context.app.config.maxQuantityForProductListLineItem} of this item to your shopping bag`,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n })\r\n .catch((error: Error) => {\r\n telemetry.warning(error.message);\r\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n });\r\n }\r\n }\r\n };\r\n\r\n private readonly _removeItemFromOrderTemplateLines = (line: IOrderTemplateLineViewModel): void | undefined => {\r\n const { context, data, telemetry } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate?.result && line) {\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\r\n line.productListLine\r\n ])\r\n .then(async () => {\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n });\r\n } else {\r\n telemetry.warning(\r\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\r\n );\r\n }\r\n }\r\n };\r\n\r\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\r\n window.location.reload();\r\n return Promise.resolve();\r\n };\r\n\r\n private readonly _removeTemplate = () => {\r\n const { context, data, telemetry, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate && orderTemplate.result) {\r\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\r\n .then()\r\n .catch((error: string) => {\r\n telemetry.warning('[order-template] Unable to delete order template.');\r\n telemetry.error(error);\r\n this.setState({\r\n itemKey: orderTemplate.result?.productList.Id || '',\r\n userMessage: resources.deleteOrderTemplateFailedText,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n });\r\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\r\n if (newLink) {\r\n window.location.assign(newLink);\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template.');\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n }\r\n\r\n private readonly _getViewport = (): GridSize => {\r\n const { context } = this.props;\r\n\r\n // Always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'xs';\r\n };\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n\r\n private _renderModalWarning = () => {\r\n const modalWarningResources: IModalWarningResources = {\r\n modalWarningMessage: this.props.resources.addToOrderTemplateDialogWarningV2\r\n };\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _renderModalWarningFromLineAction = () => {\r\n return (\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default OrderTemplateLines;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewProps } from './components';\r\nimport { IOrderTemplateViewProps } from './quotation';\r\n\r\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\r\n const {\r\n OrderTemplateLines,\r\n status,\r\n statusMessage,\r\n heading,\r\n ProductsTable,\r\n ProductsTableHeading,\r\n orderLines,\r\n ProductsTableRow,\r\n productsStatusMessage,\r\n OrderTemplateActions,\r\n orderActions,\r\n pagination,\r\n itemAddedToCartDialog,\r\n bulkOrderLineActions,\r\n isDetailsDisplayed,\r\n detailedProductView,\r\n toggleDetailsDisplayed,\r\n modalWarning,\r\n modalWarningFromLineAction,\r\n resources: { cancelBtnLabel, productNumberText, productText, productUnitPriceText, productUOMText, productQuantityText }\r\n } = props;\r\n\r\n const toggleDetails = React.useCallback(() => {\r\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\r\n }, [toggleDetailsDisplayed]);\r\n\r\n return (\r\n \r\n {heading}\r\n {OrderTemplateActions && (\r\n \r\n {orderActions?.addTemplateToBag}\r\n {orderActions?.renameTemplate}\r\n {orderActions?.removeTemplate}\r\n {!isDetailsDisplayed && productsStatusMessage}\r\n \r\n )}\r\n {bulkOrderLineActions}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {ProductsTable && orderLines && orderLines.length > 0 && (\r\n \r\n \r\n {ProductsTableHeading}\r\n \r\n {orderLines &&\r\n orderLines.map(product => {\r\n return _renderItem(product, productQuantityText, ProductsTableRow);\r\n })}\r\n \r\n \r\n {pagination}\r\n \r\n )}\r\n {itemAddedToCartDialog}\r\n \r\n Product Details\r\n \r\n
    \r\n
  • {detailedProductView?.productImage}
  • \r\n
  • \r\n {productText}:\r\n {detailedProductView?.productInfo}\r\n
  • \r\n
  • \r\n {productNumberText}:\r\n {detailedProductView?.productNumber}\r\n
  • \r\n
  • \r\n {productUnitPriceText}: {detailedProductView?.productPrice}\r\n
  • \r\n
  • \r\n {productUOMText}: {detailedProductView?.productUnitOfMeasure}\r\n
  • \r\n
  • \r\n {productQuantityText}:\r\n {detailedProductView?.productQuantityView}\r\n
  • \r\n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {modalWarning}\r\n {modalWarningFromLineAction}\r\n
\r\n );\r\n};\r\n\r\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const {\r\n key,\r\n selectLine,\r\n productImage,\r\n productPrice,\r\n //productNumber,\r\n addToBagButton,\r\n removeButton,\r\n productInfo,\r\n productUnitOfMeasure,\r\n productQuantityView,\r\n productQuantity,\r\n popUp,\r\n isMobile,\r\n externalItemId\r\n } = product;\r\n\r\n return (\r\n \r\n {selectLine}\r\n {productImage}\r\n {isMobile ? (\r\n \r\n
{externalItemId}
\r\n
\r\n {quantityLabel}: {productQuantity}\r\n
\r\n \r\n ) : (\r\n {externalItemId}\r\n )}\r\n {!isMobile && {productInfo}}\r\n {!isMobile && {productPrice}}\r\n {!isMobile && {productUnitOfMeasure}}\r\n {!isMobile && {productQuantityView}}\r\n {isMobile && {popUp}}\r\n {!isMobile && (\r\n \r\n {addToBagButton}\r\n {removeButton}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateLinesView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * BulkPurchase state message Interface.\n */\nexport interface IBulkPurchaseStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n stateMessage?: IBulkPurchaseStateMessage;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly _errorCssClass: string = 'danger';\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n const userMessageNode = this.state.stateMessage ? (\n \n \n {this.state.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {userMessageNode}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n onErrorMessage={this._onErrorMessage}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n private _onErrorMessage = (errorMessage: string) => {\n this.setState({\n stateMessage: {\n messageText: errorMessage,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n });\n };\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\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 ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\ninterface IPromoCodeState {\n isCollapseOpen: boolean;\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.Component {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n isCollapseOpen: false,\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public shouldComponentUpdate(nextProps: IPromoCodeProps, nextState: IPromoCodeState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n private readonly _onInputChangeHandler = (e: React.ChangeEvent) => {\n const error = e.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: e.target.value.trim(),\n error,\n canApply: !!e.target.value\n });\n };\n\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(error => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On Submit function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotionHandler(cartState);\n };\n\n /**\n * On apply promotion function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n {promoCodeApplyButtonText}\n \n
\n
\n );\n };\n\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') || '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\n return;\n }\n let discountAmount = 0;\n for (const line of cartState.cart.CartLines) {\n if (line.DiscountLines) {\n for (const discountLine of line.DiscountLines) {\n if (discountLine.DiscountCode === code) {\n discountAmount += discountLine.DiscountCost!;\n }\n }\n }\n }\n return discountAmount * -1;\n };\n\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || props.cart.cart.Coupons.length === 0) {\n return;\n }\n\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce((count: number, coupon: Coupon) => {\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\n }, 0);\n\n return (\n <>\n
\n
{this.props.appliedPromoCodeHeadingText}
\n \n
\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {coupon.Code}{' '}\n \n
\n \n {props.removePromoText}\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\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 { 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 { SocialMedia, SocialMediaComponent } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISocialShareItemConfig, ISocialShareItemProps, socialMedia } from './social-share-item.props.autogenerated';\n\nexport interface ISocialShareItemViewProps extends ISocialShareItemProps {\n SocialShareItemElement: React.ReactNode | null;\n SocialShareItem: IModuleProps;\n}\n\n/**\n *\n * SocialShareItem component.\n * @extends {React.PureComponent>}\n */\nclass SocialShareItem extends React.PureComponent> {\n constructor(props: ISocialShareItemProps) {\n super(props);\n\n this._getSocialShareItem = this._getSocialShareItem.bind(this);\n }\n\n public render(): JSX.Element | null {\n const viewprops = {\n ...this.props,\n SocialShareItem: {\n moduleProps: this.props,\n className: 'ms-social-share-item'\n },\n SocialShareItemElement: this._getSocialShareItem()\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n\n private _getSocialShareItem(): React.ReactNode | null {\n const src = this.props.config.icon;\n if (MsDyn365.isBrowser) {\n switch (this.props.config.socialMedia) {\n case socialMedia.facebook:\n return (\n \n );\n case socialMedia.twitter:\n return (\n \n );\n case socialMedia.pinterest:\n return (\n \n );\n case socialMedia.linkedin:\n return (\n \n );\n case socialMedia.mail:\n return (\n \n );\n default:\n return null;\n }\n }\n return null;\n }\n}\n\nexport default SocialShareItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISocialShareItemViewProps } from './social-share-item';\n\nexport const SocialShareItemView: React.FC = props => {\n const { SocialShareItem, SocialShareItemElement } = props;\n\n if (!SocialShareItemElement) {\n props.context.telemetry.error('Social media is not valid, module wont render');\n return null;\n }\n return {SocialShareItemElement};\n};\n\nexport default SocialShareItemView;\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"],"names":["OrderTemplateActions","props","onRemoveOrderTemplate","handlers","itemKey","removeOrderTemplateActionHandler","input","_renderOrderTemplateImages","context","orderTemplateLines","imageSettings","enableImageProductLink","count","length","React","className","slice","map","line","_renderAriaLabel","name","OrderTemplateListStatusMessage","_ref","errorType","text","classnames","modalCloseButtonReference","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","useState","onCreateButtonClick","color","onClick","ref","createOrderTemplateText","OrderTemplateNameDialog","modalOpen","isUpdateDialog","setModalOpen","id","data","typeName","dialogStrings","createOrderTemplateDialogResources","onCancel","onSuccess","onOrderTemplateCreated","parentElementRef","HeadingTag","OrderTemplateList","constructor","super","_onDismiss","this","setState","isOpen","_reloadPage","async","window","location","reload","_onRemoveFromOrderTemplateList","productListId","telemetry","resources","orderTemplates","actionContext","request","user","isAuthenticated","token","result","orderTemplate","find","p","productList","Id","deleteAsync","callerContext","then","catch","error","warning","headerStatusMessage","deleteOrderTemplateFailedText","statusCssString","messageGlyph","state","userMessage","shouldComponentUpdate","nextProps","nextState","render","_heading$text","_heading$tag3","heading","config","emptyOrderTemplateText","createNewTemplateButtonText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","status","_heading$tag","errorProps","_objectSpread","moduleProps","statusMessage","Heading","tag","h2","renderView","_heading$tag2","emptyViewProps","viewProps","createOrderTemplateButton","CreateNewTemplateButtonComponent","_generateOrderTemplateNameDialogResources","templateHeaderStatusMessage","Alert","toggle","OrderTemplates","OrderTemplate","_renderOrderTemplateList","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","index","removeFromOrderTemplateListText","orderTemplateState","telemetryContent","onDismiss","key","orderTemplateImage","orderTemplateAriaLabel","orderTemplateName","href","_getOrderTemplatePageUrl","_getUrlSync","url","getUrlSync","separator","includes","totalLines","addToCartButton","AddOrderTemplateToCartComponent","moduleTypeName","addToCartText","addToBagText","removeButton","Button","orderTemplateStatusMessage","OrderTemplateRender","Name","addToBagButtonText","moduleId","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","linesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","__decorate","observer","OrderTemplateListView","Module","Object","assign","Node","_renderOrderTemplate","AddToCartComponentActions","_event","setUploadStatus","openModal","setLinesAddedToCartDialogOpen","setAddedLinesCount","addOrderTemplateToCartInput","AddOrderTemplateToCartInput","addOrderTemplateToCartAction","setTimeout","buttonEventReference","ModalWarning","warningAccepted","bind","accept","onWarningChecked","modalWarningBtn","warningClose","event","onWarningSubmit","_this$props$modalWarn","_this$props$modalWarn2","_this$props$modalWarn3","_this$props$modalWarn4","_this$props$modalWarn5","_this$props$modalWarn6","_this$props$modalWarn7","_this$props$modalWarn8","_this$props$modalWarn9","_this$props$modalWarn10","Modal","autoFocus","fade","applicationNode","returnFocusRef","horizontalPosition","verticalPosition","ModalHeader","modalWarningResources","modalWarningHeader","ModalBody","modalWarningMessage","type","checked","modalWarningCancel","ModalFooter","disabled","modalWarningOK","ModalWarningFromLineAction","productFromLineAction","quantityFromLineAction","itemKeyFromLineAction","productSpecificationFromLineAction","_this$props$modalWarn11","_this$props$modalWarn12","_this$props$modalWarn13","_this$props$modalWarn14","_this$props$modalWarn15","_this$props$modalWarn16","_this$props$modalWarn17","_this$props$modalWarn18","msdyn365Commerce","createComponent","component","uploadStatus","addedLinesCount","linesAddedToCartDialogOpen","modalWarningOpen","setModalWarningOpen","modalText","_getModalText","processStatusClass","toLowerCase","payLoad","getPayloadObject","TelemetryConstant","AddOrderTemplateToCart","addOrderTemplateAttribute","getTelemetryAttributes","popupProps","renderModalPopup","PopupProducts","products","fullProduct","filter","warningHandler","LinesAddedToCartDialog","linesCount","onClose","closeLinesAddedToCartDialog","_buttonEventReference","focus","buttonLabel","target","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","selectedLines","addLineModalLinkText","searchButtonAriaLabel","searchInputAriaLabel","searchModalPlaceholderText","selectProductButtonText","addItemToTemplateText","addLineProductUnitPricePrefix","backButtonText","decrementButtonAriaLabel","incrementButtonAriaLabel","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","searchErrorMessage","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeStyle","searchResultsCountVerbage","searchResultsCountSubject","addToTemplateConfirmation","totalPriceLabel","progressNotificationText","addToTemplateDuplicateError","addToTemplateGenericError","dimensionMissingError","addLineProps","orderTemplateId","AddLineToTemplate","ItemWithAttributeAddedToCartDialog","dialogProps","product","productPrice","quantity","producSpecification","close","itemsString","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","replace","toString","itemAddedToCartHeaderMessageText","PriceComponent","price","freePriceText","originalPriceText","currentPriceText","attributeValues","ArrayExtensions","hasElements","externalItemIdAttribute","attribute","_externalItemIdAttrib","TextValue","_getErpSizeDescription","title","msg","CONTENT","query","content","Search","selectedProduct","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","searchTextInput","addLineButtonRef","_renderSearchForm","role","autoComplete","onSubmit","_onSearchSubmit","placeholder","value","onChange","_onInputChange","maxLength","preventDefault","_get","Loading","_getSearchResults","NotFound","ProductList","Error","_onQuantityChangeHandler","selectedQuantity","_onSelectItem","apiSettings","channelId","varianteInput","SelectedVariantInput","RecordId","undefined","productVariant","getSelectedVariant","Promise","resolve","dimensions","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","RegExp","dangerouslySetInnerHTML","__html","_resultCountText","_addItemToTemplateHandler","AddItemToOrderTemplateInput","DefaultUnitOfMeasure","addItemToOrderTemplate","reloadPage","_toggleModalHandler","current","onComponentDidMount","_this$searchTextInput","onComponentDidUpdate","_this$searchTextInput2","backToResultsText","modalProps","ariaLabel","showBackArrow","_renderContent","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","clickHandler","renderResultCountText","Spinner","NotFoundComponent","searchText","searchCriteriaInput","Context","ChannelId","CatalogId","getCatalogId","IncludeAttributes","SearchCondition","searchByCriteriaAsync","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","computed","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","innerText","componentDidMount","dropdownList","dropdownName","item","selected","OrderTemplateQuantity","inputRef","_validateMin","minValue","min","isNaN","currentInput","currentCount","_handleChange","reaction","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","incDisabled","max","currentValue","extraClass","getChangeHandler","amount","_onIncrementalChange","tabIndex","pattern","onBlur","inputQuantityAriaLabel","updatedQuantity","e","Number","parseInt","inputElement","HTMLInputElement","_debounce","setAttribute","defaultProps","selectedDimensions","_getDimensionsError","dimensionName","_addToTemplateHandler","isBusy","showAddConfirmation","errors","add","missingDimensions","dimension","DimensionTypeValue","ProductListId","errorMessage","_onQuantityChange","newValue","totalPrice","Price","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","DimensionValue","ExtensionProperties","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","BasePrice","sort","a","b","_getDropdownName","dimensionType","_product$Name","ItemId","_formatPrice","_getDimensionsNodes","_getConfirmationMessage","selectedDimensionNames","_dimension$DimensionV","variant","Value","values","join","_this$state$errors2","unshift","assertive","cultureFormatter","formatCurrency","currencyCode","toFixed","ProductSelectButton","buttonText","setBusy","getClickHandler","removeOrderActionHandler","_removeOrderTemplate","OrderTemplateActionsView","deleteTemplateButtonText","addTemplateToBag","_getOrderTemplateAddToCartDialog","renameTemplate","_getOrderTemplateRenameControl","removeTemplate","onRemoveTemplate","addTemplateToBagButtonText","renameOrderTemplateDialogStrings","RenameOrderTemplateComponent","onRenameTemplate","renameOrderTemplateButtonText","renameTemplateButtonText","OrderTemplateLineActions","orderTemplateLine","productListLine","LineId","onAddToBag","onRemoveItem","getAddToBag","ProductDetails","productSpecificationData","getRemoveItem","PopUp","removeFromOrderTemplateLinesText","moreButtonText","viewProductDetailsText","showMobile","setShowMobile","toggleDetailsDisplayed","getActionButton","isMobile","removeButtonClassName","addButtonClassName","onSelectLineHandler","isChecked","onSelect","OrderTemplateLineView","UnitOfMeasure","selectOneRowText","PrimaryImageUrl","fallbackImage","getFallbackImageUrl","requestContext","selectLine","productImage","_renderProductImage","productInfo","renderProductInfo","_renderPrice","productNumber","productUnitOfMeasure","productQuantityView","_generateQuantity","productQuantity","addToBagButton","popUp","externalItemId","_getExternalItemId","OrderTemplateMobileLineView","onChangeHandler","onChangeQuantity","isQuantityDisabledForUpdate","image","_orderTemplateLine$fu","productUrl","productName","dimensionsLine","_externalItemIdAttrib2","OrderTemplateLinesStatusMessage","OrderTemplateTableHeading","componentClassName","getOnChange","checkedLines","lines","scope","selectAllRowsText","productUnitPrice","productUOM","productActions","OrderTemplateLines","warningOpen","warningFromLineActionOpen","productSpecification","modalWarningFromLineActionOpen","warningFromLineActionClose","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","productSelection","productListLines","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","_this$props$data$orde","substr","indexOf","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","ProductTypeValue","AdjustedPrice","Quantity","_addItemToBag","_getCurrentUrl","reqContext","MsDyn365","isBrowser","URL","requestUrl","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","itemAddedToCartDialogData","_generateItemAddedToCartDialogResources","_renderPagination","fullUrl","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","previousText","flipperPrevious","nextText","flipperNext","UncontrolledPagination","paginationAriaLabel","qsp","items","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","_changeQuantity","orderTemplateLinesData","orderLineIndex","findIndex","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","update","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","cart","maxQuantityLimitText","addedToCartFailureMessage","addProductToCartInput","addProductToCart","priceResult","AsyncResult","reject","isMiniCart","app","addToCartBehavior","substatus","maxQuantityForProductListLineItem","debug","message","_removeItemFromOrderTemplateLines","userToken","_renameTemplate","_removeTemplate","_orderTemplate$result","newLink","_getViewport","device","Type","innerWidth","gridSettings","sm","md","paginationPreviousText","paginationNextText","_renderModalWarning","addToOrderTemplateDialogWarningV2","_renderModalWarningFromLineAction","_viewport","_updateViewport","isConfirmAddSelectionToBagModalOpen","getTelemetryObject","telemetryPageName","friendlyName","signInUrl","_orderTemplate$orderT","orderTemplateWithAttributes","orderLength","i","_line$fullProduct$Pro","_line$fullProduct","_line$fullProduct$Pro2","_line$fullProduct2","productInput","simpleProduct","attributeInput","AttributesForSelectedVariantInput","getAttributesForSelectedVariant","push","orderTemplateLinesWithAttributes","_getProductSpecifications","addEventListener","componentWillUnmount","removeEventListener","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","ObjectExtensions","isNullOrUndefined","orderTemplateResult","_isFirstPage","productsStatusMessage","ProductsTable","ProductsTableRow","ProductsTableHeading","_renderProductListHeader","orderLines","_renderProductList","callbacks","updateQuantity","debounce","orderActions","_renderOrderTemplateActions","pagination","itemAddedToCartDialog","bulkOrderLineActions","_getOrderTemplateLineActions","modalWarning","modalWarningFromLineAction","updated","_product$fullProduct","_line$fullProduct3","onSelectAll","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","headers","onAddSelectionToBag","onRemoveSelection","isMinifiedView","_generateLinesAddedToCartDialogResources","orderTemplateActions","renameOrderTemplateTitleText","cancelBtnLabel","skip","priceFree","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","_line$fullProduct4","currentProductProps","ProductPrice","getProductUrlSync","observable","action","_renderItem","quantityLabel","toggleDetails","wrapClassName","BulkPurchase","_errorCssClass","_errorCssGlyphClass","collapseRef","_dimensionDropDownChange","_this$collapseRef$cur","reEvaluateHeight","_onErrorMessage","stateMessage","messageText","_toggleCollapse","isExpanded","_this$props$data$prod","hasDimensionsInProps","productDimensions","hasDimensionsInData","container","_renderCollapseContent","_renderCollapseButton","_renderCollapse","bulkPurchaseHeaderTitle","Collapse","_renderMainContent","isMobileDevice","VariantType","Viewport","userMessageNode","RichTextComponent","bulkPurchaseDescriptionText","_renderMatrix","_featureState$result","_this$props$data$cust","featureState","isMultipleCatalogsFeatureEnabled","IsEnabled","catalogId","validateCatalogId","ProductDimensionsMatrix","customerInformation","dimensionOnChange","onErrorMessage","isMultipleCatalogFeatureEnabledInHq","BulkPurchaseViewComponent","CarouselModule","_handleDismissCarousel","cookies","set","dismissCarousel","_next","slots","nextIndex","activeIndex","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","get","carouselContainer","closeAnimation","next","previous","onIndicatorsClickHandler","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","renderModuleAttributes","Carousel","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","directionTextNext","keyboard","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","_applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","attributes","_removePromotion","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_calculateDiscount","CartLines","discountAmount","DiscountLines","discountLine","DiscountCode","DiscountCost","_renderAppliedPromoCode","Coupons","removePromotionHandler","promoCodTotalDiscount","reduce","coupon","Code","appliedPromoCodeHeadingText","CustomerContextualPrice","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","isCollapseOpen","promoCodeHeadingText","HeaderPreferredStore","modalCloseButtonRef","handleClick","_findPreferredStoreOnClick","storeSelectorStateManager","storeSelector","storeName","preferredStore","StoreName","headerPreferredStoreText","headerPreferredStoreAriaLabel","modules","storeSelectorId","keys","openDialog","showMapViewLink","onLocationSelected","orgUnitLocation","Logo","_renderLogo","link","linkUrl","destinationUrl","openInNewTab","rel","_renderImage","Msdyn365","loadFailureBehavior","editProps","moduleType","imagePropertyName","shouldSkipToMainImage","NavIcon","toggleNavBar","mobileHamburgerAriaLabel","targetId","Header","isB2BSite","handleLinkTextChange","linkIndex","_this$props$config$my","myAccountLinks","linkText","popOverRef","_toggleNavbar","_togglePopover","_keydown","mobileMenuCollapsed","signinPopoverOpen","hasSigninerror","isChannelTypeB2B","_this$props$context$r","workerName","customerName","_this$props$data$empl","worker","employee","_this$props$data$acco","customer","accountInformation","FirstName","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","signInCustomerNotAuthorizedTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","wishlists","cartLabel","cartQtyLabel","logoLink","logoImage","shouldShowWishlistCount","disableTooltip","headerToggleClass","headerClassName","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","currentDistributorSlot","CommerceListLines","logo","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","navIcon","menuBar","search","siteOptions","HeaderTag","headerAriaLabel","HeaderContainer","HeaderTopBarContainer","Divider","MobileMenuContainer","MobileMenuHeader","MobileMenuBodyContainer","MobileMenuLinksContainer","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","displayName","Popover","placement","signInLink","_getSigninButton","signOutLink","_getSignOutButton","isOBORequest","switchCustomerLink","_getSwitchCustomerButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","accountLinks","_getAccountLinks","currentDistributor","slotName","SignIn","signInLinkText","signInLinkAriaText","onTelemetryClick","_user$signOutUrl","SignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","SwitchCustomer","isOBOAccountSelected","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","getBusinessPartnerSelectionUrl","removeAccountSelectionCookie","shoppingAsText","route","forEach","param","searchParams","delete","retailServerErrorCode","signUpCustomerNotFound","signUpMultipleCustomerFound","signInCustomerNotAuthorized","retailServerErrorMessage","MyProfile","innerRef","cta","contentAction","etext","editableLink","additionalProperties","onTextChange","keyCode","KeyCodes","Escape","_renderReactFragment","slot","_renderDesktopAccountBlock","QuickOrderDrawer","_toggle","isManuallyToggled","collapseProps","drawerGlyphClass","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","children","drawerClass","toggleButtonProps","block","_generateDrawerButtonInnerMarkup","collapseState","drawerButtonTextClass","toggleButtonClassName","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","onToggle","QuickOrderFormComponent","productTextInput","quantityTextInput","quickOrderState","maxChars","maxQuantity","disableAddtoCart","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","addQuantityPlaceholderText","handleQuantityChange","handleInputChange","handleAddToCartClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","quantityNode","addToCartBtn","QuickOrderProduct","cartLine","isSelected","QuickOrderDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderProductNumberText","quickOrderProductText","quickOrderUnitPriceText","quickOrderUnitOfMeasureText","quickOrderQuantityText","quickOrderTotalText","quickOrderActionsText","QuickOrderMobileHeaderCellsComponent","QuickOrderTableHeaderComponent","rowClassName","headerCells","cropFocalRegion","QuickOrderTableRowProductImageComponent","_props$context$reques","_props$data$product$P","_props$imageSettings","fallbackImageUrl","OmniChannelMedia","containerClassName","Image","altText","src","fallBackSrc","QuickOrderExtraActionsPopupComponent","StringExtensions","isNullOrWhitespace","getProductPageUrlSync","QuickOrderDesktopTableRowCellComponent","_product$Dimensions","_cartLine$LineId","Dimensions","dimensionValue","quickOrderProductDimensionsSeparator","UnitOfMeasureSymbol","IncrementalQuantity","quickOrderInputQuantityAriaLabel","quickOrderDecrementButtonAriaLabel","quickOrderIncrementButtonAriaLabel","isGiftCard","IsGiftCard","TotalAmount","quickOrderRemoveItemButtonAriaLabel","QuickOrderMobileTableRowCellComponent","quickOrderQuantityMobileText","QuickOrderTableRowComponent","QuickOrderTableComponent","setIsMobile","isMobileView","quickOrderProducts","updateViewport","quickOrderProduct","QuickOrder","waitTime","dimensionUpdateQueue","FinitePromiseQueue","initializedDimensions","Set","cssClassNameConfigure","quickOrderCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","size","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","changeUpdatingDimension","isUpdatingDimension","_handleInputChange","productResponse","inputQuantityText","quantityInput","cancellableDebounce","cancel","isQuickOrderFormExpanded","getScanResult","GetScanResultInput","results","Product","ProductDimensionFull","exception","_addItemToCart","quickOrderAddedToCartSuccessMessage","quickOrderAddedToCartFailureMessage","_validateCart","_this$props$context$a","deliveryOptions","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","emailDeliveryModeCode","channel","EmailDeliveryModeCode","defaultDeliveryOption","DeliveryOptions","_updateAvailability","shouldValidateQuantityLimits","_shouldValidateQuantityLimits","enableStockCheck","availableQuantity","ProductAvailableQuantity","AvailableQuantity","orderQuantityLimitsFeatureIsEnabled","isAddEmailDeliveryItemToCart","deliveryMode","inputProductText","maxQtyLimitReachedMessage","_getMaxQtyMessage","_result$errorDetails","errorDetails","LocalizedMessage","_featureStatuses$find","_featureStatuses$find2","_featureStatuses$find3","featureStatuses","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","isOrderQuantityLimitsFeatureEnabledInSiteSettings","IsB2b","_this$props$data$cart","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","_getConcatenatedMaxQtyMessage","currentQuantity","quickOrderMaxQuantityLimitText","quickOrderAlreadyItemQuantityText","_handleQuantityChange","_this$state$productRe","productDimensionTypeAmount","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","configureErrors","errorState","newProduct","productAvailable","ProductId","_getDimensionErrorString","dimensionTypeValue","quickOrderproductDimensionTypeColorErrorMessage","quickOrderproductDimensionTypeConfigurationErrorMessage","quickOrderproductDimensionTypeSizeErrorMessage","quickOrderproductDimensionTypeAmountErrorMessage","quickOrderproductDimensionTypeStyleErrorMessage","_updateProductAvailability","_productResponse$Dime","_getConfigureErrors","quickOrderWrongQuantityErrorMsg","quickOrderOutofStockErrorMsg","viewport","quickOrderFormClass","quickOrderFormProductContent","quickOrderFormMsgContent","quickOrderModuleHeading","quickOrderModuleDescription","quickOrderAddtobag","quickOrderProductQuantityInputLabel","quickOrderProductInputLabel","quickOrderProductDimensionTypeColor","quickOrderProductDimensionTypeConfiguration","quickOrderSelectDimensionFormatString","quickOrderProductDimensionTypeSize","quickOrderProductDimensionTypeStyle","quickOrderProductDimensionTypeAmount","quickAddQuantityPlaceholderText","productConfigureResources","selectDimensionFormatString","quickOrderProps","contentProps","isB2B","drawer","quickOrderForm","quickOrderList","_renderQuickOrderTable","form","configure","getProductConfigure","_initQuickOrderProducts","_cart$cart$CartLines","validValues","tableClassName","productInventoryInfo","_cart$result","maxQuantityForLineItem","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","addedQuantity","_item$ItemId","_this$state$productRe2","minInventory","Math","renderConfigure","containerProps","dropdowns","renderConfigureDropdown","dropdown","labelContainerProps","select","renderForm","quickOrderProductContent","quickOrderMsgContent","createObservableDataAction","ctx","productId","tenantId","inputIsValid","trace","serviceEndpoint","locale","sendRequest","userReviewData","Authorization","authorization","response","SubmitUserReviewInput","getCacheKey","getCacheObjectType","dataCacheType","onClickSubmit","ReviewModal","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modal","modalCSS","classNames","onModalToggle","returnRef","modalHeader","modalHeaderNode","modalFooter","modalBody","cancelButton","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","rating","ratingsInput","ratingLabel","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","inputRow","hasError","errorMessageText","userReview","reviewId","editReviewModalTitle","writeReviewModalTitle","stripWhiteSpacesFromString","reviewText","reviewTitle","RatingComponent","readOnly","avgRating","selectRatingAriaLabel","initialRating","parentId","parentType","onRatingChange","selectRatingLabel","reviewTitleMaxLength","renderContextId","onTitleChange","reviewTitleAriaLabel","htmlFor","reviewTitleLabel","reviewTextMaxLength","rows","reviewAriaLabel","reviewTextLabel","policyTextBlocks","privacyPolicyTextFormat","split","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","privacyPolicyTitle","submitReview","onReviewComplete","onReviewSubmission","getRnrPartnerId","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","Date","helpfulPositive","helpfulNegative","firstName","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","style","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","averageRating","TotalReviews","RatingsHistogram","handleHeadingChange","selectFilterBy","ratingCount","completeClass","classname","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","onEdit","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsCount","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","ceil","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","option","inputId","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","votedReviews","approved","isDisabled","isUserReview","isOboRequest","label","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","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","_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","header","headerSubmitted","feedbackThankYouText","cancelReportReviewText","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","ReportReviewModal","_onRadioChange","_reportReview","hasReportError","reported","reportReviewConcern","getUserToken","_value","reportedReview","notification","selectedOption","skipItems","getSelectedProductIdFromActionInput","getReviewsForGivenProduct","GetProductReviewsInput","getRnrEndpointId","_updateVoteUi","alreadyExists","concat","submitHelpfulnessVote","showSpinner","reviewModal","reportReviewModal","filterByDropdown","LabeledDropdown","labelText","filterByDropdownText","dropdownOptions","onSelectOption","controlledByParent","sortByDropdown","sortByDropdownText","reviewCount","refineReviewsProps","reviewsListProps","reviewCards","pageControls","noReviewsMessage","noReviewsWithFilterMessage","noReviewsWithSelectedFilterMessage","sortByOptions","filterByOptions","buildReviewCard","createReviewModal","createReportModal","SignInMessage","SignInButton","ModalToggle","WriteReview","writeReviewCallbacks","_modalToggleRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","modalToggle","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","SocialShareItem","_getSocialShareItem","viewprops","SocialShareItemElement","icon","socialMedia","SocialMediaComponent","SocialMedia","Facebook","postUrl","document","Twitter","Pinterest","Linkedin","Mail","SocialShareItemView","getAdditionalContentItems","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","links","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","handleTextChange","handleParagraphChange","paragraph","options","video","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","detailsContainer","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleAdditionalLink","_this$props$config$ad","linkData","linkId","detailsContainerCta"],"sourceRoot":""}