{"version":3,"file":"static/js/7.108e527678955ebfb686.chunk.js","mappings":"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I,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/account-welcome-tile/account-welcome-tile.tsx?2115","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?0588","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?f114","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/account-wishlist-tile.tsx?b721","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?d6f5","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-tile/b2b-requests-tile.tsx?9498","webpack://venchi-ecommerce-msdyn365/./src/modules/account-welcome-tile/account-welcome-tile.view.tsx?e5e3","webpack://venchi-ecommerce-msdyn365/./src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?095e","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://venchi-ecommerce-msdyn365/./src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?3f4e","webpack://venchi-ecommerce-msdyn365/./src/modules/aad-generic/aad-generic.tsx?c076","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://venchi-ecommerce-msdyn365/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/components/link.tsx?d232","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://venchi-ecommerce-msdyn365/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://venchi-ecommerce-msdyn365/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://venchi-ecommerce-msdyn365/./src/modules/image-list/image-list.tsx?5602","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://venchi-ecommerce-msdyn365/./src/modules/map/map.tsx?6111","webpack://venchi-ecommerce-msdyn365/./src/modules/subscribe/subscribe.tsx?9fea","webpack://venchi-ecommerce-msdyn365/./src/modules/country-selector/country-selector.tsx?a8bc","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/pva-chat-connector.tsx?def7","webpack://venchi-ecommerce-msdyn365/./src/modules/country-selector/country-selector.view.tsx?44d3","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?734c","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?742f","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?d5f8","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?2cd6","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/helpers/consts.ts?02a5","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/date-range-trigger.ts?8bfc","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?fd6f","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/page-visits-trigger.ts?cce7","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?e87a","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/specific-page-trigger.ts?6e03","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?d898","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/proactive/index.ts?36a2","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/helpers/ContextProvider.ts?4518","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/helpers/StyleComposers.ts?0192","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/helpers/CommerceChatStore.ts?5b45","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/components/ChatCore.tsx?a412","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/components/Chat.tsx?1581","webpack://venchi-ecommerce-msdyn365/./src/modules/pva-chat-connector/pva-chat-connector.view.tsx?3d5c","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/account-profile.view.tsx?555a","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/loyalty-sign-up.view.tsx?1edc","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/order-template-list.view.tsx?f44e","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/sign-in.view.tsx?a0ea","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/write-review.view.tsx?10da","webpack://venchi-ecommerce-msdyn365/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://venchi-ecommerce-msdyn365/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://venchi-ecommerce-msdyn365/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://venchi-ecommerce-msdyn365/./src/modules/image-list/image-list.view.tsx?2bed","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://venchi-ecommerce-msdyn365/./src/modules/map/map.view.tsx?5db9","webpack://venchi-ecommerce-msdyn365/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0"],"sourcesContent":["/*!\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 { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text ? config.heading.text : ''} ${\n accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''\n }`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\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\nexport default AccountWelcomeTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\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 { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \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 handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\n });\n};\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\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 | null {\n const { config } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\n \n )\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 handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\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 { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\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 { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\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 { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\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 { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isOpen: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\n@observer\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n private invoiceIds: string[] = [];\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isOpen: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '', heading },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n\n reaction(\n () => this.state.isInvoiceRequestModalOpen,\n async () => {\n if (this.invoiceIds && !this.state.isInvoiceRequestModalOpen) {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n for (const invoiceId of this.invoiceIds) {\n await BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(\n context,\n b2bUserId,\n invoiceId,\n BusinessPartnerOperationDeliveryType.Email\n );\n }\n this.invoiceIds = [];\n }\n }\n );\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner?.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer?.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerContentClass = `${containerClass}__content`;\n const filterClassName = `${className}__filter`;\n return (\n
\n
{this._renderInvoiceInCartPaymentMessage()}
\n \n
\n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderInvoiceInCartPaymentMessage(): JSX.Element {\n const cart = this.props.data.cart?.result;\n\n if (!cart?.hasInvoiceLine) {\n return <>;\n }\n\n return (\n \n \n \n );\n }\n\n // Dismiss alert.\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n this.invoiceIds.push(invoiceId);\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\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 { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\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 { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\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 | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\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, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\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 * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\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 { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\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 { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\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, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IInvoiceErrorState, IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\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, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\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, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n xl: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.ProductId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IInvoiceErrorState, InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n errorState?: IInvoiceErrorState;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = { errorState: { errorMessage: '', otherError: '' } };\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false,\n errorState: { errorMessage: '', otherError: '' }\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.ProductId)\n .map(\n product =>\n new ProductInput(\n product.ProductId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n\n // check for errorcode and otherError which contains the LocalizedMessage from API\n if (\n errorState &&\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\n errorState.otherError\n ) {\n this.setState({ errorState: errorState });\n }\n\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private timeout: number = 500;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const loadMapAPIInput = {\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n };\n\n if (\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded\n ) {\n this._initMap();\n if (this.props.data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n this._updateMapsForDistributor();\n } else {\n this._updateMap();\n }\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n when(\n () => !!this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.loadMapApi ||\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi,\n () => {\n if (this.props.data.distributorSelectorStateManager?.result?.loadMapApi) {\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n } else {\n this.props.data.storeSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n }\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.distributorSelectorStateManager?.result?.distributorList,\n this.props.data.distributorSelectorStateManager?.result?.selectedDistributorId,\n this.map\n ];\n },\n () => {\n this._updateMapsForDistributor();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data\n } = this.props;\n\n const shouldDisplayMap = data.storeSelectorStateManager?.result?.isDialogOpen\n ? data.storeSelectorStateManager?.result?.listMapViewState.displayMap\n : data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen\n ? data.distributorSelectorStateManager?.result?.listMapViewState.displayMap\n : false;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data\n } = this.props;\n\n if (data.storeSelectorStateManager?.result?.isMapApiLoaded || data.distributorSelectorStateManager?.result?.isMapApiLoaded) {\n const mapLoadOptions = {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n };\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, mapLoadOptions);\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n if (data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n // Hide the distributor details that appear below the screen size of 768px.\n data.distributorSelectorStateManager?.result?.updateDistributorMapVisibility(false);\n await data.distributorSelectorStateManager?.result?.setSelectedDistributorId(undefined);\n } else {\n await data.storeSelectorStateManager?.result?.setSelectedStoreLocationId(undefined);\n }\n });\n }\n };\n\n private readonly _updateMapsForDistributor = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n const distributorInfoList = distributorSelectorStateManager?.distributorList;\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n if (this.map && ArrayExtensions.hasElements(distributorInfoList)) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const distributorList = distributorInfoList.filter(distributor => distributor.OrgUnit !== undefined);\n\n for (const [index, distributorInfo] of distributorList.entries()) {\n const orgUnit = distributorInfo.OrgUnit;\n\n if (orgUnit?.Latitude && orgUnit.Longitude) {\n const isLocationSelected = selectedDistributorId === orgUnit?.RecordId;\n const options = this._getPushpinOptions(isLocationSelected, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(orgUnit?.Latitude, orgUnit.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleDistributorPushpinClick(orgUnit.RecordId);\n });\n isLocationSelected ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isLocationSelected) {\n mapLocation = orgUnit;\n }\n }\n }\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n }, this.timeout);\n }\n };\n\n /**\n * Handle the click event of the pushpin for distributors on the maps.\n * @param recordId - RecordId.\n */\n private readonly handleDistributorPushpinClick = (recordId: number | undefined): void => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n // Show the distributor details that appear below the screen size of 768px.\n distributorSelectorStateManager?.updateDistributorMapVisibility(true);\n distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n if (recordId) {\n setTimeout(() => {\n distributorSelectorStateManager?.setSelectedDistributorId(recordId);\n }, this.timeout);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\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 { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\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\nexport default Subscribe;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, ICountrySelectorData } from './country-selector.data';\r\nimport { ICmsNavItemsData, ICountrySelectorProps, ISubMenusData } from './country-selector.props.autogenerated';\r\n\r\nexport interface ICountrySelectorViewProps extends ICountrySelectorProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n DivContainer?: INodeProps;\r\n ImageDivContainer?: INodeProps;\r\n countrySelectorIntroText: string;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CountrySelector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CountrySelector extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: ICountrySelectorProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames(\r\n 'ms-nav menu--country-selector',\r\n this.props.config.className,\r\n this.state.isMobile ? 'mobile-vp' : 'desktop-vp'\r\n ),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.config.countrySelectorAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link'\r\n },\r\n DivContainer: {\r\n tag: 'div',\r\n className: 'ms-nav__feature'\r\n },\r\n ImageDivContainer: {\r\n tag: 'div',\r\n className: 'category-image',\r\n role: 'tabpanel'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData) => mergedData.push(this._constructMenuItemData(item)));\r\n }\r\n return mergedData;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(cmsItem?: ICmsNavItemsData): IMenuItemData {\r\n return {\r\n id: CountrySelector.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(item));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\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 if (typeof window !== undefined && 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 } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default CountrySelector;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport { isOboRequest } from '@msdyn365-commerce/core-internal';\r\nimport { IPvaChatConnectorData } from './pva-chat-connector.data';\r\nimport { IPvaChatConnectorConfig, IPvaChatConnectorProps } from './pva-chat-connector.props.autogenerated';\r\n\r\nexport interface IPvaChatConnectorViewProps extends IPvaChatConnectorProps {\r\n config: IPvaChatConnectorConfig;\r\n}\r\n\r\n/**\r\n * PvaChatConnector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass PvaChatConnector extends React.PureComponent> {\r\n // Loads CDN version of Botframework-Webchat library\r\n public componentDidMount(): void {\r\n if (isOboRequest(this.props.context.request)) {\r\n return;\r\n }\r\n\r\n const url = this.props.config.botFrameworkCDNURL || this.props.context.app.config.pvaChatConnectorBotFrameworkCDNURL;\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.async = true;\r\n script.crossOrigin = 'anonymous';\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (isOboRequest(this.props.context.request)) {\r\n return null;\r\n }\r\n\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default PvaChatConnector;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IDrawerState,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICountrySelectorViewProps } from './country-selector';\r\nimport { IMenuItemData } from './country-selector.data';\r\nimport { ICountrySelectorConfig } from './country-selector.props.autogenerated';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CountrySelectorView extends React.PureComponent {\r\n private currentLevel: number = 0;\r\n private escapeKey: number = 27;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n constructor(props: ICountrySelectorViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n categoryImageAltText: ''\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\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.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n private initializeResizeObserver = () => {\r\n this.resizeObserver = new ResizeObserver(_ => {\r\n const div = document.querySelector('.mobile.menus');\r\n if (div) {\r\n div.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n }\r\n });\r\n };\r\n\r\n public componentDidMount(): void {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n this.initializeResizeObserver();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n public handleDrawerToggle = (e: IDrawerState) => {\r\n const mobileMenu = document.querySelector('.mobile.menus');\r\n if (e.isOpen && mobileMenu && this.resizeObserver) {\r\n this.resizeObserver.observe(mobileMenu);\r\n }\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation, config } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem, config);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem, config);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const toggleButtonImg = menuItem.imageSource;\r\n return (\r\n \r\n
\r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined, linkImg: string | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n {linkImg && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemData[i].linkText\r\n });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({\r\n parentMenu: item && item.id,\r\n mobileViewLabelText: subMenus[i].linkText\r\n });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = false;\r\n const multiLevelSupportedMenu = 2;\r\n // const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Active menu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Submenu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n {option.imageSource && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const currentSite = typeof window !== 'undefined' && `${location.origin}${this.props.context.request.sitePath}`;\r\n const currentLang = currentSite === option.linkURL ? true : false;\r\n return (\r\n \r\n {imagesource && {''}}\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, config } = this.props;\r\n const DivContainerClass = this.currentLevel > 2 ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n\r\n {menuOptions}\r\n
\r\n
\r\n );\r\n }\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n}\r\n\r\nexport default CountrySelectorView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IProactiveChatTrigger } from '../../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\n\r\n/**\r\n * ProactiveChatTrigger class - checks if Proactive Chat should be triggered, starts the chat and sets context\r\n */\r\nabstract class ProactiveChatTrigger implements IProactiveChatTrigger {\r\n public props: IPvaChatConnectorViewProps;\r\n public context: IChatContext;\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n this.props = props;\r\n this.context = context;\r\n }\r\n\r\n /**\r\n * Generates Chat Context with included properties related to Proactive Chat\r\n * @returns TContextProvider - Chat Context\r\n */\r\n public abstract getContextProvider(): TContextProvider;\r\n\r\n /**\r\n * Generates chat welcome message to be used if Proactive Chat is triggered\r\n * @returns string - chat welcome message\r\n */\r\n public abstract getMessage(): string;\r\n\r\n /**\r\n * Validate specific trigger conditions if Proactive Chat should be initiated\r\n * @returns boolean (TRUE if Proactive Chat should be triggered)\r\n */\r\n public abstract validate(): Promise;\r\n}\r\n\r\nexport default ProactiveChatTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartAmountTrigger class - proactive chat is triggered if cArt amount is in preset boundaries (config.proactiveOnCartAmountMin, config.proactiveOnCartAmountMax)\r\n */\r\nclass CartAmountTrigger extends ProactiveChatTrigger {\r\n private min?: number;\r\n private max?: number;\r\n private totalInCart: number = 0;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.min = this.props.config.proactiveOnCartAmountMin;\r\n this.max = this.props.config.proactiveOnCartAmountMax;\r\n this.props.context.telemetry.debug(\r\n `[Chat][${CartAmountTrigger.name}] Cart amount proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const cart = await this._getCart();\r\n if (cart.isEmpty) {\r\n this.props.context.telemetry.debug(`[Chat][${CartAmountTrigger.name}] Cart was empty. Validation returning 'false'.`);\r\n return false;\r\n }\r\n\r\n this.totalInCart = cart.cart.TotalAmount || 0;\r\n let retVal = false;\r\n if (this.min) {\r\n if (this.max) {\r\n retVal = this.min <= this.totalInCart && this.totalInCart <= this.max;\r\n } else {\r\n retVal = this.min <= this.totalInCart;\r\n }\r\n } else {\r\n if (this.max) {\r\n retVal = this.totalInCart <= this.max;\r\n } else {\r\n retVal = false;\r\n }\r\n }\r\n this.props.context.telemetry.debug(\r\n `[Chat][${CartAmountTrigger.name}] Validation result: '${retVal}'; Cart total: '${this.totalInCart}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Amount',\r\n eCommerceCustProactiveShoppingCartAmount: `${this.totalInCart}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartAmountMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartAmountTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartNumberOfItemsTrigger class - proactive chat is triggered if Cart Number of Items is in preset boundaries (config.proactiveOnCartNoOfItemsMin, config.proactiveOnCartNoOfItemsMax)\r\n */\r\nclass CartNumberOfItemsTrigger extends ProactiveChatTrigger {\r\n private min?: number;\r\n private max?: number;\r\n private numberOfItems: number = 0;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.min = this.props.config.proactiveOnCartNoOfItemsMin;\r\n this.max = this.props.config.proactiveOnCartNoOfItemsMax;\r\n\r\n this.props.context.telemetry.debug(\r\n `[${CartNumberOfItemsTrigger.name}] Cart number of items proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const cart = await this._getCart();\r\n if (cart.isEmpty) {\r\n this.props.context.telemetry.debug(`[Chat][${CartNumberOfItemsTrigger.name}] Cart was empty. Validation returning 'false'.`);\r\n return false;\r\n }\r\n\r\n this.numberOfItems = cart.cart.TotalItems || 0;\r\n\r\n let retVal = false;\r\n if (this.min) {\r\n if (this.max) {\r\n retVal = this.min <= this.numberOfItems && this.numberOfItems <= this.max;\r\n } else {\r\n retVal = this.min <= this.numberOfItems;\r\n }\r\n } else {\r\n if (this.max) {\r\n retVal = this.numberOfItems <= this.max;\r\n } else {\r\n retVal = false;\r\n }\r\n }\r\n this.props.context.telemetry.debug(\r\n `[${CartNumberOfItemsTrigger.name}] Validation result: '${retVal}'; Number of items in cart: '${this.numberOfItems}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Number of Items',\r\n eCommerceCustProactiveShoppingCartNumberOfItems: `${this.numberOfItems}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartNoOfItemsMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartNumberOfItemsTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-ignore\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * CartSpecificProductTrigger class - proactive chat is triggered if a Product in the Cart is in preset list of products (config.proactiveOnCartSpecificProductList)\r\n */\r\nclass CartSpecificProductTrigger extends ProactiveChatTrigger {\r\n private product: string = '';\r\n\r\n public async validate(): Promise {\r\n let isValid = false;\r\n const cart = await this._getCart();\r\n if (!cart.isEmpty) {\r\n if (cart.cart.CartLines) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Number of cart line items was '${cart.cart.CartLines?.length}'`\r\n );\r\n for (let i = 0; i < cart.cart.CartLines?.length; i++) {\r\n if (cart.cart.CartLines[i]) {\r\n if (this.props.config.proactiveOnCartSpecificProductList) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Number of cart specific products was configured for proactive chat was '${this.props.config.proactiveOnCartSpecificProductList?.length}'`\r\n );\r\n // Find first item, from user-defined list of products, that matches the cart lines' itemId in the cart.\r\n for (let j = 0; j < (this.props.config.proactiveOnCartSpecificProductList?.length || 0); j++) {\r\n if (\r\n this.props.config.proactiveOnCartSpecificProductList &&\r\n cart.cart.CartLines[i].ItemId &&\r\n this.props.config.proactiveOnCartSpecificProductList[j] === cart.cart.CartLines[i].ItemId\r\n ) {\r\n this.props.context.telemetry.debug(\r\n `[${CartSpecificProductTrigger.name}] Matched cart line item ID '${cart.cart.CartLines[i].ItemId}' against user-defined list of specific products for proactive chat.`\r\n );\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n // Rest of the CartLines are undefined\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart did not contain any cart lines.`);\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart was empty.`);\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: 'Cart Specific Product',\r\n eCommerceCustProactiveShoppingCartSpecificProduct: `${this.product}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnCartSpecificProductMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private async _getCart(): Promise {\r\n return getCartState(this.props.context.actionContext);\r\n }\r\n}\r\n\r\nexport default CartSpecificProductTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nexport enum ProactiveChatNames {\r\n DateRange = 'Date Range',\r\n FromSpecificPage = 'From Specific Page',\r\n PageVisits = 'Page Visits',\r\n SpecificLocation = 'Specific Location',\r\n SpecificPage = 'Specific Page',\r\n WaitOnTime = 'Wait On Time'\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * DateRangeTrigger class - proactive chat is triggered if current date is in preset date boundaries (config.proactiveOnDateRangeStart, config.proactiveOnDateRangeEnd)\r\n */\r\nclass DateRangeTrigger extends ProactiveChatTrigger {\r\n private start?: Date;\r\n private end?: Date;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.start = this._toDate(this.props.config.proactiveOnDateRangeStart);\r\n this.end = this._toDate(this.props.config.proactiveOnDateRangeEnd);\r\n\r\n this.props.context.telemetry.debug(\r\n `[${DateRangeTrigger.name}] Proactive chat initialized with startDate: '${this.start}'; max: '${this.end}'.`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n\r\n let retVal = false;\r\n if (this.start) {\r\n if (this.end) {\r\n retVal = this.start.getTime() <= now.getTime() && now.getTime() <= this.end.getTime();\r\n } else {\r\n retVal = this.start.getTime() <= now.getTime();\r\n }\r\n } else if (this.end) {\r\n retVal = now.getTime() <= this.end.getTime();\r\n }\r\n\r\n this.props.context.telemetry.debug(\r\n `[${DateRangeTrigger.name}] Validation result: '${retVal}'; Current date used to compare: '${now}'.`\r\n );\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.DateRange,\r\n eCommerceCustProactiveFromDate: this.start ? this.start.toUTCString() : '',\r\n eCommerceCustProactiveToDate: this.end ? this.end.toUTCString() : ''\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnDateRangeMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n /**\r\n * Converts string(us-en) to date\r\n * @param date string (mm/dd/yyyy)\r\n * @returns Date or undefined\r\n */\r\n private _toDate(date?: string): Date | undefined {\r\n if (date) {\r\n const dateParts = date.split('/');\r\n return new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\nexport default DateRangeTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * FromSpecificPageTrigger class - proactive chat is triggered if user has come from specific page (the one listed in config.proactiveOnFromSpecificPageList)\r\n */\r\nclass FromSpecificPageTrigger extends ProactiveChatTrigger {\r\n public async validate(): Promise {\r\n let isValid = false;\r\n if (this.props.config.proactiveOnFromSpecificPageList) {\r\n this.props.context.telemetry.debug(\r\n `[${FromSpecificPageTrigger.name}] Number of items in user-defined list of 'From Specific Page' was '${this.props.config.proactiveOnFromSpecificPageList?.length}'.`\r\n );\r\n for (let i = 0; i < (this.props.config.proactiveOnFromSpecificPageList?.length || 0); i++) {\r\n const fromSpecificPageTrimmed: string = this.props.config.proactiveOnFromSpecificPageList[i].trim();\r\n this.props.context.telemetry.debug(\r\n `[Chat][${FromSpecificPageTrigger.name}] Current page URL: '${window.document.referrer}'.`\r\n );\r\n this.props.context.telemetry.debug(\r\n `[${FromSpecificPageTrigger.name}] Current item from user-defined list of 'From Specific Page': '${fromSpecificPageTrimmed}'.`\r\n );\r\n\r\n if (window.document.referrer.indexOf(fromSpecificPageTrimmed) > -1) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(\r\n `[Chat][${FromSpecificPageTrigger.name}] User-defined 'From Specific Page' list was undefined.`\r\n );\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${FromSpecificPageTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.FromSpecificPage,\r\n eCommerceCustProactiveCameFromPage: window.document.referrer\r\n };\r\n };\r\n }\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnFromSpecificPageMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default FromSpecificPageTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ICookieContext } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/ICookieContext';\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * PageVisitTrigger class - proactive chat is triggered if user has visited current page for (config.proactiveOnPageVisitNumber) or more times\r\n */\r\nclass PageVisitTrigger extends ProactiveChatTrigger {\r\n public visits: number = 0;\r\n private cookieName: string = 'TimesPageVisited';\r\n private expdate: Date;\r\n private cookies: ICookieContext;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.cookies = this.props.context.request.cookies;\r\n this.expdate = new Date();\r\n // Set expiry date to 365 days.\r\n this.expdate.setTime(this.expdate.getTime() + 24 * 60 * 60 * 1000 * 365);\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie expiry date set to: '${this.expdate}'.`);\r\n\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie context is given: '${this.cookies.isConsentGiven()}'.`);\r\n if (this.cookies.isConsentGiven()) {\r\n this.cookies.setConsentCookie();\r\n }\r\n\r\n this._updateVisitCounter();\r\n }\r\n\r\n public async validate(): Promise {\r\n let retVal: boolean = false;\r\n\r\n if (this.props.config.proactiveOnPageVisitNumber) {\r\n retVal = this.visits >= this.props.config.proactiveOnPageVisitNumber;\r\n }\r\n\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Validation result: '${retVal}'.`);\r\n return retVal;\r\n }\r\n\r\n public clear(): void {\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Clearing cookie for page visit counter.`);\r\n this.cookies.set(this.cookieName, 0, {\r\n domain: window.location.hostname,\r\n path: window.location.pathname,\r\n expires: this.expdate\r\n });\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.PageVisits,\r\n eCommerceCustProactiveNumberOfVisits: `${this.visits}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnPageVisitMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n\r\n private _updateVisitCounter(): void {\r\n this.visits = this.cookies.get(this.cookieName).value || 0;\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter BEFORE update: '${this.visits}.`);\r\n ++this.visits;\r\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter AFTER update: '${this.visits}.`);\r\n\r\n this.cookies.set(this.cookieName, this.visits, {\r\n domain: window.location.hostname,\r\n path: window.location.pathname,\r\n expires: this.expdate\r\n });\r\n }\r\n}\r\n\r\nexport default PageVisitTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IExtendedRequest } from '../../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * SpecificPageTrigger class - proactive chat is triggered if user geographically uses the website from specific country/regions(config.proactiveOnSpecificCountryRegionCountry)\r\n */\r\nclass SpecificCountryRegionTrigger extends ProactiveChatTrigger {\r\n private customerCountryCode: string;\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n this.customerCountryCode = (this.props.context.request).suggestedMarket || 'n/a';\r\n this.props.context.telemetry.debug(\r\n `[${SpecificCountryRegionTrigger.name}] Customer country code set to: '${this.customerCountryCode}.'`\r\n );\r\n }\r\n\r\n public async validate(): Promise {\r\n const retVal: boolean = this.props.config.proactiveOnSpecificLocation\r\n ? this.props.config.proactiveOnSpecificLocation.toLowerCase().indexOf(this.customerCountryCode.toLowerCase()) > -1\r\n : false;\r\n this.props.context.telemetry.debug(`[Chat][${SpecificCountryRegionTrigger.name}] Validation returning '${retVal}'.`);\r\n return retVal;\r\n }\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveCountryCode: this.props.config.proactiveOnSpecificLocation || '',\r\n eCommerceCustProactiveType: ProactiveChatNames.SpecificLocation\r\n };\r\n };\r\n }\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnSpecificCountryRegionMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default SpecificCountryRegionTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * SpecificPageTrigger class - proactive chat is triggered if current page is listed in config.proactiveOnSpecificPageList\r\n */\r\nclass SpecificPageTrigger extends ProactiveChatTrigger {\r\n public async validate(): Promise {\r\n let isValid = false;\r\n if (this.props.config.proactiveOnSpecificPageList) {\r\n this.props.context.telemetry.debug(\r\n `[${SpecificPageTrigger.name}] Number of items in user-defined list of 'Specific Pages' was '${this.props.config.proactiveOnSpecificPageList?.length}'.`\r\n );\r\n for (let i = 0; i < (this.props.config.proactiveOnSpecificPageList?.length || 0); i++) {\r\n const specificPageTrimmed: string = this.props.config.proactiveOnSpecificPageList[i].trim();\r\n this.props.context.telemetry.debug(`[] Current location URL: ${window.location.href}.`);\r\n this.props.context.telemetry.debug(`[] Current item from user-defined list of 'Specific Page': ${specificPageTrimmed}.`);\r\n if (window.location.href.indexOf(specificPageTrimmed) > -1) {\r\n isValid = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] User-defined 'Specific Page' list was undefined.`);\r\n }\r\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] Validation returning '${isValid}'.`);\r\n return isValid;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.SpecificPage\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnSpecificPageMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default SpecificPageTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProactiveChatNames } from '../../helpers/consts';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../../pva-chat-connector';\r\nimport ProactiveChatTrigger from './proactive-chat-trigger';\r\n\r\n/**\r\n * WaitOnTimeTrigger - proactive chat is triggered if user stays on current page for more than (config.proactiveOnWaitTimeSeconds) seconds\r\n */\r\nclass WaitOnTimeTrigger extends ProactiveChatTrigger {\r\n private waitTimeInMilliseconds: number | undefined;\r\n\r\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\r\n super(props, context);\r\n if (this.props.config.proactiveOnWaitTimeSeconds && !isNaN(this.props.config.proactiveOnWaitTimeSeconds)) {\r\n this.waitTimeInMilliseconds = Number(this.props.config.proactiveOnWaitTimeSeconds) * 1000;\r\n this.props.context.telemetry.debug(\r\n `[Chat][${WaitOnTimeTrigger.name}] Wait time (ms) set to: '${this.waitTimeInMilliseconds}'.`\r\n );\r\n }\r\n }\r\n\r\n public async validate(): Promise {\r\n const retVal: boolean = this.waitTimeInMilliseconds !== undefined;\r\n this.props.context.telemetry.debug(`[Chat][${WaitOnTimeTrigger.name}] Validation returning '${retVal}'.`);\r\n return retVal;\r\n }\r\n\r\n public getContextProvider(): TContextProvider {\r\n const triggerTime = Date.now() + (this.waitTimeInMilliseconds || 0);\r\n return () => {\r\n return triggerTime > Date.now()\r\n ? this.context\r\n : {\r\n ...this.context,\r\n eCommerceCustIsProactiveChat: 'True',\r\n eCommerceCustProactiveType: ProactiveChatNames.WaitOnTime,\r\n eCommerceCustProactiveTimeOnPage: `${this.waitTimeInMilliseconds ? this.waitTimeInMilliseconds : 0}`\r\n };\r\n };\r\n }\r\n\r\n public getMessage(): string {\r\n // @TODO: Add message processing if needed\r\n return this.props.config.proactiveOnWaitTimeMessage || this.props.config.proactiveDefaultMessage;\r\n }\r\n}\r\n\r\nexport default WaitOnTimeTrigger;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport CartAmountTrigger from './triggers/cart-amount-trigger';\r\nimport CartNumberOfItemsTrigger from './triggers/cart-number-of-items-trigger';\r\nimport CartSpecificProductTrigger from './triggers/cart-specific-product-trigger';\r\nimport DateRangeTrigger from './triggers/date-range-trigger';\r\nimport FromSpecificPageTrigger from './triggers/from-specific-page-trigger';\r\nimport PageVisitTrigger from './triggers/page-visits-trigger';\r\nimport SpecificCountryRegionTrigger from './triggers/specific-CountryRegion-trigger';\r\nimport SpecificPageTrigger from './triggers/specific-page-trigger';\r\nimport WaitOnTimeTrigger from './triggers/wait-on-time-trigger';\r\n\r\ntype ProactiveChat =\r\n | typeof DateRangeTrigger\r\n | typeof SpecificPageTrigger\r\n | typeof FromSpecificPageTrigger\r\n | typeof PageVisitTrigger\r\n | typeof SpecificCountryRegionTrigger\r\n | typeof CartAmountTrigger\r\n | typeof CartNumberOfItemsTrigger\r\n | typeof CartSpecificProductTrigger\r\n | typeof WaitOnTimeTrigger;\r\n\r\n/**\r\n * List of Proactive Chat Validators in order of validation (first proactive chat that pass validation is triggered, the rest are ommited)\r\n */\r\nexport const ProactiveTriggers: ProactiveChat[] = [\r\n DateRangeTrigger,\r\n SpecificPageTrigger,\r\n FromSpecificPageTrigger,\r\n PageVisitTrigger,\r\n SpecificCountryRegionTrigger,\r\n CartAmountTrigger,\r\n CartNumberOfItemsTrigger,\r\n CartSpecificProductTrigger,\r\n WaitOnTimeTrigger\r\n];\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IRequestContextUser } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/IRequestContext';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { ProactiveTriggers } from '../proactive';\r\nimport ProactiveChatTrigger from '../proactive/triggers/proactive-chat-trigger';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\nimport { IProactiveData } from './../interfaces';\r\nimport { IChatContext, TContextProvider } from '@msdyn365-commerce-modules/chat';\r\n\r\n/**\r\n *\r\n * ContextProvider class - generates chat context, and checks for proactive triggers\r\n */\r\nclass ContextProvider {\r\n public data: IProactiveData;\r\n public props: IPvaChatConnectorViewProps;\r\n private user: IRequestContextUser;\r\n private userId: string;\r\n private context: IChatContext;\r\n private provider: TContextProvider | undefined;\r\n\r\n constructor(props: IPvaChatConnectorViewProps) {\r\n this.props = props;\r\n this.user = this.props.context.request.user;\r\n this.userId = `dl_${uuidv4()}`;\r\n this.context = this._getContext();\r\n // Proactive Chat related data\r\n this.data = {\r\n enabled: false,\r\n timeout: this.props.config.proactiveOnWaitTimeSeconds || 0,\r\n message: this.props.config.proactiveDefaultMessage\r\n };\r\n }\r\n\r\n /**\r\n * Executes Proactive Chat validation\r\n * @returns TContextProvider - a function returning IChatContext object\r\n */\r\n public async init(): Promise {\r\n try {\r\n await this._proactiveCheck();\r\n } catch (e) {\r\n // Use ?debug=true to see telemetry\r\n // If previous block fails, chat will still be available (no need to display any errors to user)\r\n this.props.telemetry.exception(e);\r\n }\r\n return this.provider || this._getProvider();\r\n }\r\n\r\n /**\r\n * Returns TContextProvider - a function returning IChatContext object\r\n */\r\n private _getProvider(): TContextProvider {\r\n return () => {\r\n return {\r\n eCommerceOperatingUnitNumber: this.props.context.request.apiSettings.oun,\r\n eCommerceBaseUrl: this.props.context.request.apiSettings.baseUrl,\r\n eCommerceDataAreaId: this.props.context.request.channel?.InventLocationDataAreaId,\r\n UserId: this.userId,\r\n // eCommerceCust...\r\n AccountNumber: this.user.customerAccountNumber ? this.user.customerAccountNumber : 'N/A',\r\n Email: this.user.emailAddress ? this.user.emailAddress : 'N/A',\r\n FirstName: this.user.firstName ? this.user.firstName : this.props.config.anonymousUserName,\r\n LastName: this.user.lastName ? this.user.lastName : 'N/A',\r\n Name: this.user.name ? this.user.name : this.props.config.anonymousUserName,\r\n eCommerceCustPageURL: window.location.href,\r\n eCommerceCustChatType: 'pva',\r\n // Proactive chat\r\n eCommerceCustIsProactiveChat: 'False',\r\n eCommerceCustProactiveType: 'N/A',\r\n // Date Range\r\n eCommerceCustProactiveFromDate: 'N/A',\r\n eCommerceCustProactiveToDate: 'N/A',\r\n // From Specific Page\r\n eCommerceCustProactiveCameFromPage: 'N/A',\r\n // No. Page Visits\r\n eCommerceCustProactiveNumberOfVisits: 'N/A',\r\n // Specific CountryRegion\r\n eCommerceCustProactiveCountryCode: 'N/A',\r\n // Specific Page => eCommerceCustPageURL\r\n // eCommerceCustProactiveSpecificPage: 'N/A',\r\n // Wait On Time\r\n eCommerceCustProactiveTimeOnPage: 'N/A',\r\n // Shopping cart amount\r\n eCommerceCustProactiveShoppingCartAmount: 'N/A',\r\n // Shopping cart number of items\r\n eCommerceCustProactiveShoppingCartNumberOfItems: 'N/A',\r\n // Shopping cart specific product\r\n eCommerceCustProactiveShoppingCartSpecificProduct: 'N/A'\r\n };\r\n };\r\n }\r\n\r\n /**\r\n * Returns default IChatContext object\r\n */\r\n private _getContext(): IChatContext {\r\n return this._getProvider()();\r\n }\r\n\r\n /**\r\n * Validates proactive triggers to check if proactive chat should be initialized\r\n */\r\n private async _proactiveCheck(): Promise {\r\n if (this.props.config.proactiveChatEnabled) {\r\n for (let i = 0; i < ProactiveTriggers.length; i++) {\r\n const proactive = new ProactiveTriggers[i](this.props, this.context);\r\n // Only first detected proactive trigger gets executed\r\n if (await this._isProactive(proactive)) {\r\n this.props.context.telemetry.debug(`First detected proactive trigger to be executed: ${proactive}`);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates if proactive chat should be triggered for given ProactiveTrigger\r\n * @param proactive ProactiveChatTrigger\r\n * @returns boolean\r\n */\r\n private async _isProactive(proactive: ProactiveChatTrigger): Promise {\r\n this.data.enabled = await proactive.validate();\r\n if (this.data.enabled) {\r\n this.provider = proactive.getContextProvider();\r\n this.data.message = proactive.getMessage();\r\n }\r\n return this.data.enabled;\r\n }\r\n}\r\n\r\nexport default ContextProvider;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/**\r\n * Style generating functions\r\n */\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IAvatarStyling, IBubbleStyling, IChatCustomStyle, IChatStyling, IOtherStyling, ISuggestedActionStyling } from '../interfaces';\r\nimport { IPvaChatConnectorConfig } from '../pva-chat-connector.props.autogenerated';\r\n\r\nconst getChatWrapperStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n position: config.position || 'inherit',\r\n top: config.top ? config.top : 'inherit',\r\n right: config.right ? config.right : 'inherit',\r\n bottom: config.bottom ? config.bottom : 'inherit',\r\n left: config.left ? config.left : 'inherit',\r\n zIndex: 1000,\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n };\r\n};\r\n\r\nconst getMaximizedChatWrapperStyle = (config: IPvaChatConnectorConfig, isMobileDevice: boolean): React.CSSProperties => {\r\n if (isMobileDevice) {\r\n return {\r\n height: '90%',\r\n width: '100%',\r\n bottom: '0.5em',\r\n right: '0',\r\n padding: '5px'\r\n };\r\n }\r\n return {\r\n height: config.chatHeight ? config.chatHeight : '80%',\r\n width: config.chatWidth ? config.chatWidth : 'inherit'\r\n };\r\n};\r\n\r\nconst getChatButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: config.startChatButtonBackgroundColor || 'white',\r\n color: config.startChatButtonTextColor || 'inherit',\r\n borderColor: config.startChatButtonBorderColor || 'inherit',\r\n borderRadius: config.startChatButtonBorderRadius || '0px',\r\n borderStyle: config.startChatButtonBorderStyle || 'solid',\r\n borderWidth: config.startChatButtonBorderWidth ? config.startChatButtonBorderWidth : '0px',\r\n padding: config.storeLogoURL ? '2px 20px 2px 2px' : '10px 20px 10px 20px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n alignSelf: 'flex-end',\r\n boxShadow: '0 0 4px rgba(102,102,102,.5)',\r\n WebkitBoxShadow: '0 0 4px rgba(102,102,102,.5)',\r\n MozBoxShadow: '0 0 4px rgba(102,102,102,.5)'\r\n };\r\n};\r\n\r\nconst getButtonStoreLogoStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n color: config.headerTextColor || 'inherit',\r\n borderRadius: '50%',\r\n padding: '11px',\r\n width: '30px',\r\n height: '30px',\r\n marginRight: '12px',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n boxSizing: 'content-box'\r\n };\r\n};\r\n\r\nconst getChatStoreLogoStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n color: config.headerTextColor || 'inherit',\r\n borderRadius: '50%',\r\n padding: '11px',\r\n width: '30px',\r\n height: '30px',\r\n margin: '5px 12px 5px 5px',\r\n alignSelf: 'center',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n boxSizing: 'content-box'\r\n };\r\n};\r\n\r\nconst getChatMessagesStyle = (config: IPvaChatConnectorConfig, minimized: boolean): React.CSSProperties => {\r\n return {\r\n display: minimized ? 'none' : 'block',\r\n backgroundColor: config.backgroundColor || 'White',\r\n height: '100%',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n position: 'relative'\r\n };\r\n};\r\n\r\nconst getChatMessageHeader = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\r\n color: config.headerTextColor || 'inherit',\r\n backgroundRepeat: 'no-repeat',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flexDirection: 'row',\r\n width: '100%',\r\n position: 'absolute',\r\n top: config.chatHeaderHeight ? `-${config.chatHeaderHeight}` : '',\r\n height: config.chatHeaderHeight,\r\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getMinimizeButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n borderTop: 'none',\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n borderBottom: `solid 2px ${config.headerTextColor || 'White'}`,\r\n backgroundColor: 'transparent',\r\n padding: '5px 10px 3px 10px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n marginTop: '7px',\r\n marginRight: '7px'\r\n };\r\n};\r\n\r\nconst getCloseButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n border: 'none',\r\n color: config.headerTextColor || 'White',\r\n backgroundColor: 'transparent',\r\n padding: '0px 0px 0px 7px',\r\n cursor: 'pointer',\r\n outlineStyle: 'none',\r\n marginTop: '7px',\r\n marginRight: '7px'\r\n };\r\n};\r\n\r\nconst getChatMessageContent = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n height: '100%',\r\n width: '100%',\r\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveWrapperStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n flexDirection: 'column',\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n backgroundColor: config.backgroundColor || 'White'\r\n };\r\n};\r\n\r\nconst getProactiveMessageHeader = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\r\n color: config.headerTextColor || 'inherit',\r\n backgroundRepeat: 'no-repeat',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n flexDirection: 'row',\r\n boxSizing: 'border-box',\r\n width: '100%',\r\n height: config.chatHeaderHeight,\r\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveMessageContent = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n width: '100%',\r\n padding: '10px 20px',\r\n boxSizing: 'border-box',\r\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\r\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\r\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\r\n };\r\n};\r\n\r\nconst getProactiveButtonStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\r\n return {\r\n color: config.headerTextColor || 'inherit',\r\n cursor: 'pointer',\r\n padding: '5px 10px',\r\n outline: 'none',\r\n border: 'none',\r\n backgroundColor: config.headerBackgroundColor || 'inherit',\r\n borderRadius: '25px'\r\n };\r\n};\r\n\r\nconst getRedDotStyle = (config: IPvaChatConnectorConfig): React.CSSProperties => {\r\n return {\r\n background: 'Red',\r\n borderRadius: '50%',\r\n height: '5px',\r\n width: '5px',\r\n position: 'absolute',\r\n right: '10px',\r\n bottom: '33px'\r\n };\r\n};\r\n\r\n/**\r\n * Generates styles for the chat wrapper, and proactive chat parts\r\n * @param config IPvaChatConnectorConfig\r\n * @param minimized boolean\r\n * @returns IChatCustomStyle\r\n */\r\nexport const getChatStyling = (config: IPvaChatConnectorConfig, minimized: boolean, isMobileDevice: boolean): IChatCustomStyle => {\r\n return {\r\n ChatWrapperStyle: getChatWrapperStyle(config),\r\n MaximizedChatWrapperStyle: getMaximizedChatWrapperStyle(config, isMobileDevice),\r\n ChatButtonStyle: getChatButtonStyle(config),\r\n ButtonStoreLogoStyle: getButtonStoreLogoStyle(config),\r\n ChatStoreLogoStyle: getChatStoreLogoStyle(config),\r\n ChatMessagesStyle: getChatMessagesStyle(config, minimized),\r\n ChatMessageHeader: getChatMessageHeader(config),\r\n MinimizeButtonStyle: getMinimizeButtonStyle(config),\r\n CloseButtonStyle: getCloseButtonStyle(config),\r\n ChatMessageContent: getChatMessageContent(config),\r\n ProactiveWrapperStyle: getProactiveWrapperStyle(config),\r\n ProactiveMessageHeader: getProactiveMessageHeader(config),\r\n ProactiveMessageContent: getProactiveMessageContent(config),\r\n ProactiveButtonStyle: getProactiveButtonStyle(config),\r\n RedDotStyle: getRedDotStyle(config)\r\n };\r\n};\r\n\r\nconst fontFormat = (font?: string): string | undefined => {\r\n if (font && font.length > 0) {\r\n const arr = font.split(',');\r\n for (let i = 0; i < arr.length; i++) {\r\n arr[i] = `'${arr[i].trim()}'`;\r\n }\r\n font = arr.join(', ');\r\n } else {\r\n font = \"'Calibri', 'Helvetica Neue', 'Arial', 'sans-serif'\";\r\n }\r\n\r\n return font;\r\n};\r\n\r\nconst getBubbleStyling = (config: IPvaChatConnectorConfig): IBubbleStyling => {\r\n return {\r\n bubbleBackground: config.bubbleBackground || 'White',\r\n bubbleTextColor: config.bubbleTextColor || 'Black',\r\n bubbleBorderColor: config.bubbleBorderColor || '#e6e6e6',\r\n bubbleBorderRadius: config.bubbleBorderRadius || '2',\r\n bubbleBorderStyle: config.bubbleBorderStyle || 'solid',\r\n bubbleBorderWidth: config.bubbleBorderWidth || '1',\r\n bubbleFromUserBackground: config.bubbleFromUserBackground || 'White',\r\n bubbleFromUserTextColor: config.bubbleFromUserTextColor || 'Black',\r\n bubbleFromUserBorderColor: config.bubbleFromUserBorderColor || '#e6e6e6',\r\n bubbleFromUserBorderRadius: config.bubbleFromUserBorderRadius || '2',\r\n bubbleFromUserBorderStyle: config.bubbleFromUserBorderStyle || 'solid',\r\n bubbleFromUserBorderWidth: config.bubbleFromUserBorderWidth || '1'\r\n };\r\n};\r\n\r\n// eslint-disable-next-line complexity\r\nconst getOtherStyling = (config: IPvaChatConnectorConfig): IOtherStyling => {\r\n return {\r\n groupTimestamp: config.groupTimestamp || true,\r\n sendTimeout: config.sendTimeout || '20000',\r\n sendTimeoutForAttachments: config.sendTimeoutForAttachments || '120000',\r\n timestampColor: config.timestampColor || 'undefined',\r\n timestampFormat: config.timestampFormat || 'undefined',\r\n notificationDebounceTimeout: config.notificationDebounceTimeout || '400',\r\n hideToaster: config.hideToaster || true,\r\n toasterHeight: config.toasterHeight || '32',\r\n toasterMaxHeight: config.toasterMaxHeight || '32 * 5',\r\n toasterSingularMaxHeight: config.toasterSingularMaxHeight || '50',\r\n toastFontSize: config.toastFontSize || '87.5%',\r\n toastIconWidth: config.toastIconWidth || '36',\r\n toastSeparatorColor: config.toastSeparatorColor || '#E8EAEC',\r\n toastTextPadding: config.toastTextPadding || '6',\r\n toastErrorBackgroundColor: config.toastErrorBackgroundColor || '#FDE7E9',\r\n toastErrorColor: config.toastErrorColor || '#A80000',\r\n toastInfoBackgroundColor: config.toastInfoBackgroundColor || '#CEF1FF',\r\n toastInfoColor: config.toastInfoColor || '#105E7D',\r\n toastSuccessBackgroundColor: config.toastSuccessBackgroundColor || '#DFF6DD',\r\n toastSuccessColor: config.toastSuccessColor || '#107C10',\r\n toastWarnBackgroundColor: config.toastWarnBackgroundColor || '#FFF4CE',\r\n toastWarnColor: config.toastWarnColor || '#3B3A39',\r\n typingAnimationBackgroundImage: config.typingAnimationBackgroundImage || 'undefined',\r\n typingAnimationDuration: config.typingAnimationDuration || '5000',\r\n typingAnimationHeight: config.typingAnimationHeight || '20',\r\n typingAnimationWidth: config.typingAnimationWidth || '64',\r\n videoHeight: config.videoHeight || '270',\r\n markdownExternalLinkIconImage:\r\n config.markdownExternalLinkIconImage ||\r\n 'url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjUwMSA0LjUwMDE3SDEwLjc0OTVDMTEuMTYzNyA0LjUwMDE3IDExLjQ5OTUgNC44MzU5NiAxMS40OTk1IDUuMjUwMTdDMTEuNDk5NSA1LjYyOTg2IDExLjIxNzMgNS45NDM2NiAxMC44NTEzIDUuOTkzMzJMMTAuNzQ5NSA2LjAwMDE3SDcuMjQ5NzRDNi4wNzA3OSA1Ljk5OTYxIDUuMTAzNDkgNi45MDY1NiA1LjAwNzg2IDguMDYxMTJMNS4wMDAyOCA4LjIyMDAzTDUuMDAzMTIgMTYuNzUwN0M1LjAwMzQzIDE3Ljk0MTUgNS45Mjg4NSAxOC45MTYxIDcuMDk5NjYgMTguOTk0OUw3LjI1MzcxIDE5LjAwMDFMMTUuNzUxOCAxOC45ODg0QzE2Ljk0MTUgMTguOTg2OCAxNy45MTQ1IDE4LjA2MiAxNy45OTM1IDE2Ljg5MjNMMTcuOTk4NyAxNi43Mzg0VjEzLjIzMjFDMTcuOTk4NyAxMi44MTc5IDE4LjMzNDUgMTIuNDgyMSAxOC43NDg3IDEyLjQ4MjFDMTkuMTI4NCAxMi40ODIxIDE5LjQ0MjIgMTIuNzY0MyAxOS40OTE4IDEzLjEzMDNMMTkuNDk4NyAxMy4yMzIxVjE2LjczODRDMTkuNDk4NyAxOC43NDA3IDE3LjkyOTMgMjAuMzc2OSAxNS45NTI4IDIwLjQ4MjlMMTUuNzUzOCAyMC40ODg0TDcuMjU4MjcgMjAuNTAwMUw3LjA1NDk1IDIwLjQ5NDlDNS4xNDIzOSAyMC4zOTU0IDMuNjA4OTUgMTguODYyNyAzLjUwODM3IDE2Ljk1MDJMMy41MDMxMiAxNi43NTExTDMuNTAwODkgOC4yNTI3TDMuNTA1MjkgOC4wNTAyQzMuNjA1MzkgNi4xMzc0OSA1LjEzODY3IDQuNjA0NDkgNy4wNTA5NiA0LjUwNTI3TDcuMjUwMSA0LjUwMDE3SDEwLjc0OTVINy4yNTAxWk0xMy43NDgxIDMuMDAxNDZMMjAuMzAxOCAzLjAwMTk3TDIwLjQwMTQgMy4wMTU3NUwyMC41MDIyIDMuMDQzOTNMMjAuNTU5IDMuMDY4MDNDMjAuNjEyMiAzLjA5MTIyIDIwLjY2MzQgMy4xMjE2MyAyMC43MTExIDMuMTU4ODVMMjAuNzgwNCAzLjIyMTU2TDIwLjg2NDEgMy4zMjAxNEwyMC45MTgzIDMuNDEwMjVMMjAuOTU3IDMuNTAwNTdMMjAuOTc2MiAzLjU2NDc2TDIwLjk4OTggMy42Mjg2MkwyMC45OTkyIDMuNzIyODJMMjAuOTk5NyAxMC4yNTU0QzIwLjk5OTcgMTAuNjY5NiAyMC42NjM5IDExLjAwNTQgMjAuMjQ5NyAxMS4wMDU0QzE5Ljg3IDExLjAwNTQgMTkuNTU2MiAxMC43MjMyIDE5LjUwNjUgMTAuMzU3MUwxOS40OTk3IDEwLjI1NTRMMTkuNDk4OSA1LjU2MTQ3TDEyLjI3OTcgMTIuNzg0N0MxMi4wMTM0IDEzLjA1MSAxMS41OTY4IDEzLjA3NTMgMTEuMzAzMSAxMi44NTc1TDExLjIxOSAxMi43ODQ5QzEwLjk1MjcgMTIuNTE4NyAxMC45Mjg0IDEyLjEwMjEgMTEuMTQ2MiAxMS44MDg0TDExLjIxODggMTEuNzI0M0wxOC40MzY5IDQuNTAxNDZIMTMuNzQ4MUMxMy4zNjg0IDQuNTAxNDYgMTMuMDU0NiA0LjIxOTMxIDEzLjAwNSAzLjg1MzI0TDEyLjk5ODEgMy43NTE0NkMxMi45OTgxIDMuMzcxNzcgMTMuMjgwMyAzLjA1Nzk3IDEzLjY0NjQgMy4wMDgzMUwxMy43NDgxIDMuMDAxNDZaIiBmaWxsPSIjMjEyMTIxIiAvPjwvc3ZnPg==)',\r\n markdownRespectCRLF: config.markdownRespectCRLF || 'true',\r\n internalLiveRegionFadeAfter: config.internalLiveRegionFadeAfter || '1000',\r\n accent: config.accent || '#0063B1',\r\n subtle: config.subtle || '#767676'\r\n };\r\n};\r\n\r\nconst getAvatarStyling = (config: IPvaChatConnectorConfig): IAvatarStyling => {\r\n return {\r\n avatarBorderRadius: config.avatarBorderRadius || '50%',\r\n avatarSize: config.avatarSize || '40',\r\n botAvatarBackgroundColor: config.botAvatarBackgroundColor || 'undefined',\r\n botAvatarImage: config.botAvatarImage || '',\r\n botAvatarInitials: config.botAvatarInitials || '',\r\n userAvatarBackgroundColor: config.userAvatarBackgroundColor || 'undefined',\r\n userAvatarImage: config.userAvatarImage || '',\r\n userAvatarInitials: config.userAvatarInitials || '',\r\n showAvatarInGroup: config.showAvatarInGroup || 'status'\r\n };\r\n};\r\n\r\nconst getSuggestedActionStyling = (config: IPvaChatConnectorConfig): ISuggestedActionStyling => {\r\n return {\r\n suggestedActionLayout: config.suggestedActionLayout || 'carousel',\r\n suggestedActionBackground: config.suggestedActionBackground || 'White',\r\n suggestedActionTextColor: config.suggestedActionTextColor || '',\r\n suggestedActionBorderColor: config.suggestedActionBorderColor || '',\r\n suggestedActionBorderRadius: config.suggestedActionBorderRadius || '0',\r\n suggestedActionBorderStyle: config.suggestedActionBorderStyle || 'solid',\r\n suggestedActionBorderWidth: config.suggestedActionBorderWidth || '2',\r\n suggestedActionDisabledBorderStyle: config.suggestedActionDisabledBorderStyle || 'solid',\r\n suggestedActionDisabledBorderWidth: config.suggestedActionDisabledBorderWidth || '2',\r\n suggestedActionDisabledTextColor: config.suggestedActionDisabledTextColor || '',\r\n suggestedActionHeight: config.suggestedActionHeight || '40',\r\n suggestedActionImageHeight: config.suggestedActionImageHeight || '20',\r\n suggestedActionsCarouselFlipperCursor: config.suggestedActionsCarouselFlipperCursor || '',\r\n suggestedActionsCarouselFlipperBoxWidth: config.suggestedActionsCarouselFlipperBoxWidth || '40',\r\n suggestedActionsCarouselFlipperSize: config.suggestedActionsCarouselFlipperSize || '20',\r\n suggestedActionsFlowMaxHeight: config.suggestedActionsFlowMaxHeight || '',\r\n suggestedActionsStackedHeight: config.suggestedActionsStackedHeight || '',\r\n suggestedActionsStackedOverflow: config.suggestedActionsStackedOverflow || '2',\r\n suggestedActionsStackedLayoutButtonMaxHeight: config.suggestedActionsStackedLayoutButtonMaxHeight || '',\r\n suggestedActionsStackedLayoutButtonTextWrap: config.suggestedActionsStackedLayoutButtonTextWrap || false\r\n };\r\n};\r\n\r\n/**\r\n * Generates style options for the Botframework-WebChat widget\r\n * @param config IPvaChatConnectorConfig\r\n * @returns IChatStyling\r\n */\r\nexport const getChatStyleOptions = (config: IPvaChatConnectorConfig): IChatStyling => {\r\n const bubbleStyling = getBubbleStyling(config);\r\n const avatarStyling = getAvatarStyling(config);\r\n const suggestedActionStyling = getSuggestedActionStyling(config);\r\n const otherStyling = getOtherStyling(config);\r\n return {\r\n hideUploadButton: true,\r\n primaryFont: fontFormat(config.primaryFont),\r\n backgroundColor: config.backgroundColor || 'White',\r\n ...bubbleStyling,\r\n ...avatarStyling,\r\n ...suggestedActionStyling,\r\n ...otherStyling\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React from 'react';\r\nimport { IAction, IDispatch, INext } from '../interfaces';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\n\r\nexport class CommerceChatStore {\r\n private props: IPvaChatConnectorViewProps;\r\n private setNewMessageAction: React.Dispatch>;\r\n private provider?: TContextProvider;\r\n\r\n /**\r\n * Gets conversation token\r\n * @param props IPvaChatConnectorViewProps\r\n */\r\n public static async getDirectLineToken(props: IPvaChatConnectorViewProps): Promise {\r\n if (props.config.powervaDirectlineTokenURL && props.config.botID && props.config.tenantID) {\r\n // use direct line token url, bot id and tenant id from module config to get conversation token\r\n const url = `${props.config.powervaDirectlineTokenURL}?botId=${props.config.botID}&tenantId=${props.config.tenantID}`;\r\n const options = { method: 'GET' };\r\n return fetch(url, options)\r\n .then(r => r.json())\r\n .then(r => {\r\n if (r.token) {\r\n return r.token;\r\n } else {\r\n throw r;\r\n }\r\n });\r\n }\r\n\r\n // use direct line token url, bot id and tenant id from app config to get conversation token\r\n const url = `${props.context.app.config.pvaChatConnectorPowervaDirectlineTokenURL}?botId=${props.context.app.config.pvaChatConnectorBotID}&tenantId=${props.context.app.config.pvaChatConnectorTenantID}`;\r\n const options = {\r\n method: 'GET'\r\n };\r\n return fetch(url, options)\r\n .then(r => r.json())\r\n .then(r => {\r\n if (r.token) {\r\n return r.token;\r\n } else {\r\n throw r;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates a new instance of commerce store for WebChat\r\n * @param props IPvaChatConnectorViewProps\r\n * @param provider TContextProvider\r\n * @param setNewMessage React.Dispatch>\r\n */\r\n constructor(\r\n props: IPvaChatConnectorViewProps,\r\n provider: TContextProvider | undefined,\r\n setNewMessage: React.Dispatch>\r\n ) {\r\n this.props = props;\r\n this.provider = provider;\r\n this.setNewMessageAction = setNewMessage;\r\n }\r\n\r\n /**\r\n * Handles custom chat actions\r\n * @param param0 {\r\n * dispatch: IDispatch;\r\n * next: INext;\r\n * action: IAction;\r\n * }\r\n */\r\n public async actionHandler({ dispatch, next, action }: { dispatch: IDispatch; next: INext; action: IAction }): Promise {\r\n const atype = action.type;\r\n\r\n switch (atype) {\r\n case 'DIRECT_LINE/CONNECT_FULFILLED': {\r\n // sets language\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_EVENT',\r\n payload: {\r\n name: 'webchat/join',\r\n value: { language: window.navigator.language }\r\n }\r\n });\r\n break;\r\n }\r\n case 'DIRECT_LINE/INCOMING_ACTIVITY': {\r\n const activity = action.payload.activity;\r\n if (activity?.from?.role === 'bot') {\r\n // Sets flag for new message (will be use to indicate new messages from bot when chat is minimized)\r\n this.setNewMessageAction(true);\r\n }\r\n break;\r\n }\r\n case 'DIRECT_LINE/POST_ACTIVITY_FULFILLED': {\r\n switch (action.payload.activity.name) {\r\n case 'webchat/join':\r\n {\r\n if (this.provider !== undefined) {\r\n // Sets Chat Context\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_EVENT',\r\n payload: {\r\n name: 'pvaSetContext',\r\n value: this.provider()\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n case 'pvaSetContext':\r\n {\r\n if (this.props.config.triggerQuery) {\r\n // Initialize chat after Chat Context is set\r\n dispatch({\r\n type: 'WEB_CHAT/SEND_MESSAGE_BACK',\r\n payload: {\r\n text: this.props.config.triggerQuery\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n default: {\r\n // default nothing\r\n }\r\n }\r\n break;\r\n }\r\n default: {\r\n // default nothing\r\n }\r\n }\r\n\r\n return next(action);\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React, { FunctionComponent, useMemo, useState } from 'react';\r\nimport { getChatStyleOptions } from '../helpers/StyleComposers';\r\nimport { IChatCoreProps, IAction, IDispatch } from '../interfaces';\r\nimport { CommerceChatStore } from '../helpers/CommerceChatStore';\r\nimport { IPvaChatConnectorConfig } from '../pva-chat-connector.props.autogenerated';\r\n\r\n/**\r\n * Just a core Chat component\r\n * @param props\r\n */\r\n\r\nconst TermsAndConditionsLink = ({ href }: { href?: string }) => {\r\n return (\r\n

\r\n By using this bot, you agree to these \r\n \r\n terms and conditions\r\n \r\n

\r\n );\r\n};\r\n\r\nconst CustomWebChat = ({ config }: { config: IPvaChatConnectorConfig }) => {\r\n const { Components } = window.WebChat;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ChatCore: FunctionComponent = (props: IChatCoreProps) => {\r\n const { Components } = window.WebChat;\r\n\r\n const [userId, setUserId] = useState('');\r\n useMemo(() => {\r\n if (props.provider) {\r\n const ctx = props.provider();\r\n if (ctx.UserId) {\r\n setUserId(typeof ctx.UserId === 'string' ? ctx.UserId : ctx.UserId.value.toString());\r\n }\r\n }\r\n }, [props.provider]);\r\n\r\n const directLine = useMemo(() => {\r\n return window.WebChat.createDirectLine({ token: props.directLineToken });\r\n }, [props.directLineToken]);\r\n\r\n const commerceChatStore = useMemo(() => {\r\n if (directLine && props.provider) {\r\n return new CommerceChatStore(props.config, props.provider, props.setNewMessage);\r\n }\r\n return undefined;\r\n }, [props.provider, directLine]);\r\n\r\n const store = useMemo(() => {\r\n return window.WebChat.createStore(\r\n {},\r\n ({ dispatch }: { dispatch: IDispatch }) => (next: (action: IAction) => IDispatch) => (action: IAction) => {\r\n commerceChatStore?.actionHandler({ dispatch, next, action });\r\n }\r\n );\r\n }, [commerceChatStore]);\r\n const styleOptions = getChatStyleOptions(props.config.config);\r\n\r\n return props.directLineToken !== '' ? (\r\n \r\n \r\n \r\n ) : (\r\n

Please wait while we are connecting.

\r\n );\r\n};\r\n\r\nexport default ChatCore;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport React, { FunctionComponent, useEffect, useState } from 'react';\r\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport ContextProvider from '../helpers/ContextProvider';\r\nimport { getChatStyling } from '../helpers/StyleComposers';\r\nimport { TContextProvider } from '@msdyn365-commerce-modules/chat';\r\nimport { IPvaChatConnectorViewProps } from '../pva-chat-connector';\r\nimport { CommerceChatStore } from '../helpers';\r\nimport ChatCore from './ChatCore';\r\n\r\nconst INVALID_TOKEN = 'INVALID_TOKEN';\r\nconst CLOSE_IMG_DATA =\r\n 'M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4 L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1 c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1 c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z';\r\n\r\n/**\r\n * Outer chat component, displays chat button, and proactive chat, and handles custom actions\r\n * @param props IPvaChatConnectorViewProps\r\n */\r\nconst Chat: FunctionComponent = (props: IPvaChatConnectorViewProps) => {\r\n const [loaded, setLoaded] = useState(false); // loaded & minimized are needed as ChatWidget should not be removed from DOM (it resets chat)\r\n const [minimized, setMinimized] = useState(true);\r\n const [newMessage, setNewMessage] = useState(false); // TODO: use this to indicate new message in minimized chat\r\n const [token, setToken] = useState(''); // holds conversation token for WebChat\r\n const [isProactive, setIsProactive] = useState(false); // if proactive chat is triggered\r\n const [proactiveMessage, setProactiveMessage] = useState(props.config.proactiveDefaultMessage);\r\n const [closed, setClosed] = useState(false);\r\n const [provider, setProvider] = useState();\r\n const isMobileDevice =\r\n isMobile({ variant: VariantType.Browser, context: props.context.request }) === 'xs' ||\r\n isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n const chatStyle = getChatStyling(props.config, minimized, isMobileDevice); // generates chat style objects based on configuration\r\n const handleMaximizeButtonClick = () => {\r\n setLoaded(true);\r\n setMinimized(false);\r\n setNewMessage(false);\r\n };\r\n const handleMinimizeButtonClick = () => {\r\n setMinimized(true);\r\n setNewMessage(false);\r\n };\r\n const handleCloseButtonClick = () => {\r\n setClosed(true);\r\n setLoaded(false);\r\n setMinimized(true);\r\n setNewMessage(false);\r\n setIsProactive(false);\r\n };\r\n useEffect(() => {\r\n if (loaded) {\r\n CommerceChatStore.getDirectLineToken(props)\r\n .then(directLineToken => {\r\n setToken(directLineToken);\r\n })\r\n .catch(e => {\r\n setToken(INVALID_TOKEN);\r\n props.telemetry.exception(e);\r\n });\r\n }\r\n }, [loaded]);\r\n useEffect(() => {\r\n (async () => {\r\n const contextProvider = new ContextProvider(props); // Generates context (provider) and checks for proactive chat triggers\r\n const prov = await contextProvider.init();\r\n if (contextProvider.data.enabled) {\r\n props.context.telemetry.debug(`[Chat] Proactive chat was enabled: '${contextProvider.data.enabled}'.`);\r\n // if proactive chat is triggered\r\n const timeout = contextProvider.data.timeout * 1000; // timeout is there only for WaitOnTime trigger\r\n setTimeout(() => {\r\n if (!loaded) {\r\n props.context.telemetry.debug(`[Chat] Proactive chat was loaded: ${loaded}.`);\r\n setProactiveMessage(contextProvider.data.message);\r\n setIsProactive(true);\r\n }\r\n }, timeout);\r\n }\r\n setProvider(() => prov);\r\n })().catch(e => props.telemetry.exception(e));\r\n }, []);\r\n useEffect(() => {\r\n if (closed) {\r\n setClosed(false);\r\n }\r\n }, [token, provider]);\r\n const isValidToken = (): boolean => {\r\n return `${token}` !== INVALID_TOKEN;\r\n };\r\n return (\r\n \r\n {minimized && (!isProactive || (isProactive && loaded)) && (\r\n \r\n )}\r\n {minimized && isProactive && !loaded && (\r\n
\r\n
\r\n {props.config.storeLogoURL && (\r\n logo\r\n )}\r\n
\r\n
\r\n
\r\n

{proactiveMessage}

\r\n \r\n
\r\n
\r\n )}\r\n {loaded && isValidToken() && (\r\n
\r\n
\r\n {props.config.storeLogoURL && (\r\n logo\r\n )}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n {!isValidToken() &&
{props.config.unableToLoadChatMessage}
}\r\n
\r\n );\r\n};\r\n\r\nexport default Chat;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport Chat from './components/Chat';\r\nimport { IPvaChatConnectorViewProps } from './pva-chat-connector';\r\n\r\nexport default (props: IPvaChatConnectorViewProps) => {\r\n // Only for CDN loading check, won't be needed with npm package of Botframework-WebChat\r\n const [loaded, setLoaded] = React.useState(false);\r\n\r\n // Just to verify that CDN Chat Widget js lib is loaded\r\n // Remove this block if moving to npm package of Botframework-WebChat\r\n const interval = setInterval(() => {\r\n const t = typeof window;\r\n if (t !== 'undefined' && window.WebChat) {\r\n setLoaded(true);\r\n clearInterval(interval);\r\n }\r\n }, 100);\r\n\r\n return
{loaded && }
;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address';\r\nimport { convert_a2_to_a3 } from '../utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const [hasAddressError, setHasAddressError] = React.useState(false);\r\n React.useEffect(() => {\r\n setHasAddressError(error.title ? true : false);\r\n }, [error.title]);\r\n // console.log(`${currency} ${localeString} ${locale}`);\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n // select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n },\r\n enSG: {\r\n autocomplete: ['sg'],\r\n select: ['SGP']\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_3', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_1', id: 'shipping_addressstate' },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'country', id: 'shipping_addressthreeletterisoregionname' },\r\n { googleComponent: 'administrative_area_level_2', id: 'shipping_addresscounty' }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: { country: countriesAvail[locale] && countriesAvail[locale].autocomplete }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n // console.log(place);\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n // console.log(formValue);\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n // console.log(selectedValue);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n // console.log(input.value);\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid =\r\n locale === 'it' && (county.value === '' || county.value.length > 2 || !/[^a-z]/i.test(county.value) === false)\r\n ? false\r\n : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n }, []);\r\n\r\n // Auto select of DEF value in state select on italian site\r\n React.useEffect(() => {\r\n const event = new Event('change', { bubbles: true });\r\n if (locale === 'it' && (document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement)) {\r\n const optionDEF = document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement;\r\n optionDEF.setAttribute('aria-selected', 'true');\r\n (optionDEF.parentNode as HTMLSelectElement).value = 'DEF';\r\n (optionDEF.parentNode as HTMLSelectElement).dispatchEvent(event);\r\n (optionDEF.parentNode as HTMLSelectElement).disabled = Boolean('true');\r\n }\r\n }, [document.querySelector('#shipping_addressstate option[value=DEF]')]);\r\n\r\n React.useEffect(() => {\r\n const phoneItem = items.find(i => i.key === 'Phone');\r\n\r\n //@ts-ignore\r\n if (phoneItem?.input?.props?.onChange) {\r\n //@ts-ignore\r\n const { onChange } = phoneItem.input.props;\r\n\r\n const handlePhoneChange = (event: React.ChangeEvent) => {\r\n onChange(event);\r\n checkPhone();\r\n };\r\n\r\n //@ts-ignore\r\n phoneItem.input.props.onChange = handlePhoneChange;\r\n }\r\n }, [items]);\r\n\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementsByClassName('msc-address-form')[0]]);\r\n\r\n // Refesh once saving processed\r\n let updatedCount = 0;\r\n React.useEffect(() => {\r\n ++updatedCount;\r\n if (updatedCount > 1) {\r\n location.reload();\r\n }\r\n }, [document.querySelector('.msc-address-form__button-updating')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasAddressError && (\r\n \r\n

{resources.addressErrorMessage}

\r\n
\r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management';\r\nimport { IAccountProfileProps } from '../definition-extensions/account-profile.ext.props.autogenerated';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC> = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n if (document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing')[1].innerHTML =\r\n // @ts-ignore\r\n props.config.textGenericMarketing;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-Profiling').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-Profiling')[1].innerHTML = props.config.textProfiling;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-ThirdParty').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-ThirdParty')[1].innerHTML = props.config.textThirdParty;\r\n }\r\n\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener('click', () => {\r\n const bd_input: HTMLInputElement = document.getElementsByClassName(\r\n 'ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input'\r\n )[0] as HTMLInputElement;\r\n // const prev_date = bd_input.value;\r\n if (props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n // The following is undefined due to the element not existing yet at runtime\r\n // const never_mind: HTMLButtonElement = document.getElementsByClassName('ms-account-profile__attributes-cancel-button msc-btn')[0] as HTMLButtonElement;\r\n\r\n // Protip: This resets the birthday value on click, so be mindful of that\r\n bd_input.setAttribute('type', 'date');\r\n\r\n // never_mind.addEventListener(\"click\", () => {\r\n // bd_input.setAttribute('type', 'text');\r\n // bd_input.value = prev_date;\r\n // });\r\n }\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n {customerAttributesWrapper && (\r\n {customerAttributesSection}\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILoyaltySignUpViewProps } from '@msdyn365-commerce-modules/account-management';\r\nimport { ILoyaltySignUpProps } from '../definition-extensions/loyalty-sign-up.ext.props.autogenerated';\r\n\r\nconst LoyaltySignUpView: React.FC> = props => {\r\n const {\r\n LoyaltySignUp,\r\n heading,\r\n memberHeading,\r\n signInLink,\r\n signUpText,\r\n signUpButton,\r\n detailsLink,\r\n // termsLink, Not needed\r\n loading,\r\n infoMessageBar\r\n } = props;\r\n\r\n if (loading) {\r\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n\r\n if (typeof window !== 'undefined') {\r\n const loyalty_join_toggle_btn = document.getElementsByClassName('ms-loyalty-terms__toggle')[0];\r\n loyalty_join_toggle_btn?.addEventListener('click', () => {\r\n const loyalty_join_btn = document.getElementsByClassName('ms-loyalty-terms__submit')[0];\r\n loyalty_join_btn.addEventListener('click', () => {\r\n loyalty_join_btn.innerHTML = \"
\";\r\n });\r\n });\r\n }\r\n\r\n /*\r\n [signInLink = true, loyalty_join_flag = false] guest (no loyalty join) -> standard sign in\r\n [signInLink = true, loyalty_join_flag = true] guest (loyalty join) -> \"thanks\" instead of sign in\r\n [signInLink = false] logged in -> hidden module content\r\n */\r\n const loyalty_join_flag = props.context.request.query?.hasJoined;\r\n // signInLink is null (thus false) when the user is logged in\r\n return (\r\n signInLink &&\r\n (loyalty_join_flag ? (\r\n
\r\n {props.resources.joinedLoyaltyThankYouHeader && (\r\n

{props.resources.joinedLoyaltyThankYouHeader}

\r\n )}\r\n {props.resources.joinedLoyaltyParagraphContent && (\r\n
\r\n

{props.resources.joinedLoyaltyParagraphContent}

\r\n
\r\n )}\r\n {/* {props.resources.loyaltyBalanceCheckURL && props.resources.joinedLoyaltyBalanceCheckLinkText && ({props.resources.joinedLoyaltyBalanceCheckLinkText})} */}\r\n
\r\n ) : (\r\n \r\n {infoMessageBar}\r\n {memberHeading}\r\n {heading}\r\n {detailsLink}\r\n {signUpText}\r\n {/* {termsLink} Not needed */}\r\n {signUpButton}\r\n {signInLink}\r\n \r\n ))\r\n );\r\n};\r\n\r\nexport default LoyaltySignUpView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\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","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n Module,\r\n Node,\r\n ITelemetryContent,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps } from '@msdyn365-commerce-modules/account-management';\r\n\r\nimport { ISignInProps } from '../definition-extensions/sign-in.ext.props.autogenerated';\r\n\r\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC> = props => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n const canonicalDomain = props.signIn.moduleProps.context.request.canonicalDomain;\r\n const sitePath =\r\n props.signIn.moduleProps.context.request.sitePath && props.signIn.moduleProps.context.request.sitePath !== null\r\n ? props.signIn.moduleProps.context.request.sitePath\r\n : '';\r\n const requestUrl: string = `https://${canonicalDomain}${sitePath}`;\r\n\r\n const telemetryContent: ITelemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\r\n );\r\n const payLoad = getPayloadObject('click', telemetryContent!, props.resources.signUpButtonText);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const showContinueAsGuest = props.config.showContinueAsGuestButton;\r\n const showVclubColumn = props.config.showVclubColumn;\r\n\r\n React.useEffect(() => {\r\n if (!viewState.isShowLoading) {\r\n const registerButtonLink = document.getElementById('createAccount');\r\n const vclubButtonLink = document.getElementById('vclub-signin');\r\n\r\n if (registerButtonLink && vclubButtonLink) {\r\n // @ts-ignore\r\n vclubButtonLink.href = registerButtonLink.href;\r\n }\r\n }\r\n }, [viewState.isShowLoading]);\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n {showVclubColumn && (\r\n \r\n

{props.resources.signinVclubTitle}

\r\n

{props.resources.signinVclubText}

\r\n
\r\n \r\n {props.resources.signUpButtonText}\r\n \r\n
\r\n\r\n {showContinueAsGuest && (\r\n \r\n )}\r\n
\r\n )}\r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n
{signUpLink}
\r\n\r\n {showContinueAsGuest && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block';\r\nimport { IWriteReviewViewProps, IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const { heading, /* signInMessage, */ signInButton, modalToggle, reviewModal, moduleProps } = props;\r\n const isAuthenticated = props.context.request.user.isAuthenticated;\r\n // @ts-ignore\r\n //const reviewButtonLabel = moduleProps?.moduleProps?.resources?.reviewButtonLabel ?? '';\r\n //const customSignInButton = signInButton;\r\n // @ts-ignore\r\n //customSignInButton.props.text = reviewButtonLabel;\r\n // const test = { ...moduleProps };\r\n // @ts-ignore\r\n moduleProps.moduleProps.resources.signInLabel = moduleProps.moduleProps.resources.reviewButtonLabel;\r\n React.useEffect(() => {\r\n const button = document.getElementsByClassName('ms-write-review__sign-in-btn')[0];\r\n if (button) {\r\n button.setAttribute('style', 'visibility: visible');\r\n }\r\n }, []);\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated\r\n ? React.createElement(React.Fragment, null, null, signInButton)\r\n : React.createElement(React.Fragment, null, modalToggle, createReviewModal(reviewModal, moduleProps))\r\n );\r\n /* return (React.createElement(Module, Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated ? React.createElement(React.Fragment, null,\r\n signInMessage,\r\n signInButton) : React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))); */\r\n};\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps) => {\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, props.modal, moduleProps),\r\n props.modalHeader,\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.modalBody),\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.form),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.rating, props.ratingLabel),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.titleLabel, props.titleInput),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.textLabel, props.textInput),\r\n props.privacyPolicyUrl,\r\n props.error\r\n )\r\n ),\r\n React.createElement(Node, Object.assign({}, props.modalFooter), props.submitButton, props.cancelButton)\r\n );\r\n};\r\nexport default ContentBlockView;\r\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 { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\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 { ICountryPickerViewProps } from './index';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\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 { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\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 { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
\n

{props.resources.headingForEmptyOrderTemplateList}

\n

{props.resources.textForEmptyOrderTemplateList}

\n {createOrderTemplateButton}\n
\n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
\n {status !== 'SUCCESS' && statusMessage}\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
\n );\n};\n\nexport default OrderTemplateListViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
\n
\n {qtyLabel}\n
\n
\n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n \n \n {errorDialogHeader}\n \n \n
\n
{errorDialogBodyErrorTitle}
\n
{errorDialogBodyErrorDescription}
\n
\n
\n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
\n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\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, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
\n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
\n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\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, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n
\n \n \n \n \n \n \n \n \n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject,\n setShowActions: React.Dispatch>\n) => () => {\n setShowActions(false);\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event | MouseEvent) => void) {\n function handleClickOutside(event: Event | MouseEvent) {\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node)) {\n toggle(event);\n }\n }\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\n}\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle(showActions && !isOnBehalfOfRequest, setShowActions));\n return (\n
\n \n {showActions && !isOnBehalfOfRequest && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n
\n \n \n \n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (window?.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n};\n\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n
\n \n {resources.invoiceNumberText}{resources.invoiceDateText}{resources.invoiceUsersText}{resources.invoiceAmountText}{resources.invoiceDueDateText}{resources.invoiceAmountDueText}{resources.invoiceStatusText}{resources.invoiceActionsText}\n \n {resources.invoicesText}{resources.invoiceDateMobileText}\n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n
\n \n \n \n {invoice.id}\n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n {formatDate(props.context, invoice.dueDate)}\n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n {getInvoiceStatusText(props.resources, invoice.status)}\n {extraActionsPopup(props)}\n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n
\n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n
{extraActionsPopup(props)}
\n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\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, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n // Added condition to enable MakePayment button only if can be paid invoice is selected\n const hasInvoices =\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid)) &&\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.isSelected));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\n \n );\n};\n"],"names":["AccountWelcomeTile","React","constructor","handleHeadingChange","event","this","props","config","heading","text","target","value","render","data","className","accountInfo","accountInformation","result","_objectSpread","FirstName","viewProps","moduleProps","classnames","Msdyn365","tag","editProps","onEdit","requestContext","context","request","renderView","_ref","description","_mapEditableLinks","linkdata","telemetryContent","length","editableLinks","payLoad","getPayloadObject","forEach","link","index","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","links","onTextChange","AccountWishlistTile","super","handleLinkTextChange","linkIndex","getTelemetryObject","telemetryPageName","friendlyName","telemetry","resources","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","format","LinksComponent","Object","assign","DescriptionComponent","RequestsTableColumnHeader","getUserName","StringExtensions","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","replace","formatDate","date","undefined","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","ArrayExtensions","hasElements","map","_request$TypeValue","_request$StatusValue","row","id","b2bRequestsTypeColumn","type","TableDataType","Text","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","filter","item","isMobile","mobileExcludedColumns","includes","name","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","isNaN","Number","parseInt","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","url","reqContext","MsDyn365","isBrowser","URL","window","location","href","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","Heading","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","actionContext","b2bRequestsStatus","table","__decorate","computed","defaultClassName","B2bRequestsTileLinks","B2bRequestsTile","b2bRequestsTile","Module","AadGeneric","moduleClassName","componentDidMount","$i2e","$element","insertServiceContent","getElementContent","initialize","shouldComponentUpdate","nextProps","aadGeneric","aadConainer","aadAPIConainer","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","invoice","_inputInvoice$current","current","checked","searchInputChangedHandler","setSearchInput","onCancelHandler","toggle","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","i","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","key","ref","onChange","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","invoices","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","setTimeout","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","indexOf","Modal","isOpen","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","ModalHeader","ModalBody","substring","placeholder","onClick","title","ModalFooter","InvoicesList","_className","buttonChildReference","buttonChildPayButtonReference","invoiceIds","_onDismiss","setState","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","bind","_onAddToCartFailed","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","_setPayInvoiceErrorModalClose","state","invoicesFilterState","InvoicesFilterState","ShowAll","isLoading","isPageLoaded","errorState","errorMessage","isInvoiceRequestModalOpen","payInvoiceErrorModalOpen","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","formatCurrency","currencyCode","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","toString","invoicesListTitleHeading","headerClassName","header","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","content","_renderListContainer","_renderEmptyInvoiceLinesPageContent","customer","invoicesData","_initializeWithInvoices","reaction","async","_this$props$data$b2bU","callerContext","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","Email","InvoiceModel","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","Button","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","getUrlSync","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","isOnBehalfOfRequest","isOboRequest","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoiceErrors","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","apiSettings","CustomerId","AccountNumber","InvoicePaidStatusValues","InvoicePaidStatus","None","Paid","PartiallyPaid","Unpaid","Error","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","InvoicesFilterComponent","typeName","currentState","onFilterStateChanged","disabled","tableClassName","InvoicesTableComponent","invoiceButtonReferences","payInvoiceButtonReferences","onError","onRequestInvoice","newErrorState","reference","_newErrorState$errorR","errorHost","errorReason","failureReason","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","errorCode","makePaymentResources","makePaymentButtonText","makePaymentButtonAriaLabel","_getSelectedInvoices","MakePaymentComponent","moduleId","moduleTypeName","navigationUrl","buttonReferences","_this$state$selectedB","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","errorClassName","InvoiceErrorComponent","messageHeader","invoiceErrorMessageHeader","otherError","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","_this$props$data$cart","cart","hasInvoiceLine","Alert","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","invoiceRequestButtonLabel","isNullOrWhitespace","RequestInvoiceButton","innerReference","requestInvoiceButtonLabel","onClicked","specificInvoice","requestInvoiceButtonReference","observer","InvoiceListView","BackTopFooter","backtoTopText","destination","BackToTop","error","Link","noclick","attribute","onTelemetryClick","itemProp","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","find","Language","toLowerCase","_getPDPLinks","categoryPaths","product","Name","hideProductName","_goBack","history","back","_getPDPBackButton","document","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","isCookieValueSet","get","_heading$tag","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","tabIndex","stayOnCurrentSiteButtonText","viewprops","modalContainer","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","closeButtonTabIndex","modalFooterContainer","modalBodyContainer","renderCountryList","stayOnCurrentSiteButton","_this$props$config$ac","_link$linkText","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","displayString","src","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","FooterCategory","slots","categories","FooterList","FooterListItem","ImageList","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","imageLink","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","linkAltText","linkAriaLabel","linkOpenInNewTab","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","InteractiveFeatureCollection","itemsCounter","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_this$props$config$li","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","imagePropertyName","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","invoiceDate","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","amountDue","PayInvoiceComponent","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","label","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","quantity","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","OmniChannelMedia","Image","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","products","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoiceDetails","_getProducts","ChannelId","invoiceDetailsModel","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","channelId","arguments","productInputs","ProductInput","getSimpleProductsAction","_this$state$errorStat","Map","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","mapLoadOptions","credentials","BingMapsApiKey","pushpinAccessible","Microsoft","Maps","Events","addHandler","_data$distributorSele2","_data$distributorSele3","_data$distributorSele4","_data$storeSelectorSt2","isDistributorSelectorDialogOpen","updateDistributorMapVisibility","setSelectedDistributorId","setSelectedStoreLocationId","_updateMapsForDistributor","_this$props$data$dist","pushpinOptions","distributorInfoList","distributorList","selectedDistributorId","mapLocation","entities","clear","pushpins","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","options","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","recordId","_this$props$data$dist2","showIndex","size","color","selectionColor","icon","_getSvgIcon","_this$props$context","_this$props$data$stor2","_this$props$data$dist3","BingMapsEnabled","loadMapAPIInput","lang","market","ChannelCountryRegionISOCode","_this$props$data$dist4","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$dist5","_this$props$data$dist6","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","ModuleProps","classname","show","Header","headerProps","MapProps","observable","Subscribe","_emailAddressInputRef","subscribeParagraph","subscribeHeading","handleText","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","autoComplete","emailInput","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","submitButton","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","CountrySelector","isCMS","_updateViewport","viewport","device","Type","menuItemList","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","_mapData","isEmptyOrNullObject","Navigation","countrySelectorAriaLabel","MenuList","ListItem","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","cmsNavItems","_constructMenuItemData","cmsItem","CMSItemIdInit","linkURL","imageDestinationURL","imageSource","subMenu","_getCMSNestedChildren","category","nestedChildren","subMenus","idx","_getViewport","innerWidth","PvaChatConnector","botFrameworkCDNURL","pvaChatConnectorBotFrameworkCDNURL","script","createElement","crossOrigin","body","appendChild","CountrySelectorView","currentLevel","escapeKey","resizeObserver","initializeResizeObserver","ResizeObserver","_","div","querySelector","scrollIntoView","behavior","block","handleDrawerToggle","e","mobileMenu","observe","_handleDropdownToggle","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","menuNode","_handleClickOutside","contains","_escFunction","keyCode","_closeSubmenu","categoryImageAltText","addEventListener","disconnect","_renderMobileMenu","_renderDesktopMenu","menuItem","_renderDrawerMenu","Node","_renderDisplay","_renderDrawer","_renderLinkMenuItem","toggleButtonText","toggleButtonImg","Drawer","onToggle","_renderLinkText","countrySelectorIntroText","menuSubItem","_renderDrawerLink","linkImg","alt","_renderSpanMenuItem","_getFromSubMenu","_createMenuItemList","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","levelClassName","menuOptions","option","hasOptions","haveSubmenu","_renderMenu","onFocus","imagesource","currentLang","origin","sitePath","level","currentItem","submenu","DivContainerClass","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","debug","_getCart","isEmpty","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","expdate","setTime","setConsentCookie","_updateVisitCounter","proactiveOnPageVisitNumber","domain","hostname","path","pathname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","waitTimeInMilliseconds","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","user","userId","uuidv4","_getContext","enabled","message","_proactiveCheck","exception","provider","_getProvider","eCommerceOperatingUnitNumber","oun","eCommerceBaseUrl","eCommerceDataAreaId","InventLocationDataAreaId","UserId","customerAccountNumber","emailAddress","firstName","anonymousUserName","LastName","lastName","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","validate","getChatWrapperStyle","position","top","right","bottom","left","zIndex","display","justifyContent","getMaximizedChatWrapperStyle","isMobileDevice","height","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","startChatButtonTextColor","borderColor","startChatButtonBorderColor","borderRadius","startChatButtonBorderRadius","borderStyle","startChatButtonBorderStyle","borderWidth","startChatButtonBorderWidth","storeLogoURL","cursor","outlineStyle","alignSelf","boxShadow","WebkitBoxShadow","MozBoxShadow","getButtonStoreLogoStyle","headerBackgroundColor","headerTextColor","marginRight","boxSizing","getChatStoreLogoStyle","margin","getChatMessagesStyle","minimized","getChatMessageHeader","chatHeaderHeight","backgroundImage","headerBackgroundImageURL","backgroundRepeat","flexDirection","chatBorderStyle","chatBorderWidth","getMinimizeButtonStyle","borderTop","borderLeft","borderRight","borderBottom","marginTop","getCloseButtonStyle","border","getChatMessageContent","chatBorderColor","getProactiveWrapperStyle","getProactiveMessageHeader","getProactiveMessageContent","getProactiveButtonStyle","outline","fontFormat","font","arr","join","CommerceChatStore","setNewMessage","setNewMessageAction","powervaDirectlineTokenURL","botID","tenantID","fetch","method","then","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","dispatch","next","action","payload","language","navigator","_activity$from","activity","from","triggerQuery","TermsAndConditionsLink","rel","CustomWebChat","_ref2","Components","WebChat","AccessKeySinkSurface","BasicToaster","BasicTranscript","termsAndConditionsLink","BasicSendBox","setUserId","useState","useMemo","ctx","directLine","createDirectLine","directLineToken","commerceChatStore","createStore","_ref3","actionHandler","styleOptions","bubbleStyling","bubbleBackground","bubbleTextColor","bubbleBorderColor","bubbleBorderRadius","bubbleBorderStyle","bubbleBorderWidth","bubbleFromUserBackground","bubbleFromUserTextColor","bubbleFromUserBorderColor","bubbleFromUserBorderRadius","bubbleFromUserBorderStyle","bubbleFromUserBorderWidth","getBubbleStyling","avatarStyling","avatarBorderRadius","avatarSize","botAvatarBackgroundColor","botAvatarImage","botAvatarInitials","userAvatarBackgroundColor","userAvatarImage","userAvatarInitials","showAvatarInGroup","getAvatarStyling","suggestedActionStyling","suggestedActionLayout","suggestedActionBackground","suggestedActionTextColor","suggestedActionBorderColor","suggestedActionBorderRadius","suggestedActionBorderStyle","suggestedActionBorderWidth","suggestedActionDisabledBorderStyle","suggestedActionDisabledBorderWidth","suggestedActionDisabledTextColor","suggestedActionHeight","suggestedActionImageHeight","suggestedActionsCarouselFlipperCursor","suggestedActionsCarouselFlipperBoxWidth","suggestedActionsCarouselFlipperSize","suggestedActionsFlowMaxHeight","suggestedActionsStackedHeight","suggestedActionsStackedOverflow","suggestedActionsStackedLayoutButtonMaxHeight","suggestedActionsStackedLayoutButtonTextWrap","getSuggestedActionStyling","otherStyling","groupTimestamp","sendTimeout","sendTimeoutForAttachments","timestampColor","timestampFormat","notificationDebounceTimeout","hideToaster","toasterHeight","toasterMaxHeight","toasterSingularMaxHeight","toastFontSize","toastIconWidth","toastSeparatorColor","toastTextPadding","toastErrorBackgroundColor","toastErrorColor","toastInfoBackgroundColor","toastInfoColor","toastSuccessBackgroundColor","toastSuccessColor","toastWarnBackgroundColor","toastWarnColor","typingAnimationBackgroundImage","typingAnimationDuration","typingAnimationHeight","typingAnimationWidth","videoHeight","markdownExternalLinkIconImage","markdownRespectCRLF","internalLiveRegionFadeAfter","accent","subtle","getOtherStyling","hideUploadButton","primaryFont","getChatStyleOptions","Composer","userID","INVALID_TOKEN","loaded","setLoaded","setMinimized","newMessage","setToken","isProactive","setIsProactive","proactiveMessage","setProactiveMessage","closed","setClosed","setProvider","Browser","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","useEffect","getDirectLineToken","catch","contextProvider","ContextProvider","prov","init","isValidToken","style","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","interval","setInterval","clearInterval","Chat","AddressShow","AddressDetail","items","AddressList","List","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","_ref4","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","other","_objectWithoutProperties","_excluded","localeString","currency","hasAddressError","setHasAddressError","countriesAvail","enGB","autocomplete","select","it","enUS","eu","enSG","nativeInputValueSetter","getOwnPropertyDescriptor","HTMLInputElement","prototype","populateFormElements","addressComponent","formMap","addressType","types","getElementById","googleComponent","input","selectedValue","elmnt","is_convert_a2_to_a3","eValue","convert_a2_to_a3","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","setAttribute","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","querySelectorAll","o","optionV","remove","countrySelect","optionDEF","parentNode","Boolean","_phoneItem$input","phoneItem","handlePhoneChange","checkPhone","saveAddressButton","phone","phoneCtn","closest","phoneAlert","getElementsByClassName","pattern","pattern2","onkeyup","match","classList","add","textContent","addressPhoneRequiredErrorMessage","removeAttribute","addressForm","county","countyCtn","countyAlert","onclick","test","elements","fieldInALL","element","stopPropagation","phoneValidation","updatedCount","reload","AddressItem","alert","maxLength","AddressError","addressErrorMessage","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","isShowAddresList","isShowAddOrUpdateAddress","AccountPreferencesSection","accountPreferences","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","accountPreference","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","AccountProfileItem","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","innerHTML","textGenericMarketing","textProfiling","textThirdParty","bd_input","canonicalDomain","_props$context$reques","LoyaltySignUp","memberHeading","signInLink","signUpText","signUpButton","detailsLink","loading","infoMessageBar","loyalty_join_toggle_btn","loyalty_join_btn","loyalty_join_flag","hasJoined","joinedLoyaltyThankYouHeader","joinedLoyaltyParagraphContent","OrderTemplateListView","OrderTemplateList","statusMessage","OrderTemplates","orderTemplates","OrderTemplate","createOrderTemplateButton","templateHeaderStatusMessage","orderTemplate","_renderOrderTemplate","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","SignInLoading","modal","modalBody","_props$resources$cont","_props$resources$cont2","signIn","defaultAADConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signUpSectionHeading","signUpDescription","signUpLink","signUpButtonText","showContinueAsGuest","showContinueAsGuestButton","showVclubColumn","isShowLoading","registerButtonLink","vclubButtonLink","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","signinVclubTitle","signinVclubText","continueAsGuest","createReviewModal","modalHeader","form","inputRow","rating","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","modalToggle","reviewModal","isAuthenticated","signInLabel","reviewButtonLabel","countryPickerView","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","_renderFindInStore","findInStore","storeSelector","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","applyDefaultOrderSettings","IncrementalQuantity","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","MediaGalleryContainerProps","ProductInfoContainerProps","price","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","FooterCategoryView","imageListView","indexKey","interactiveFeatureCollectionView","tileItem","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsView","MapHeader","onSubmit","preventDefault","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","OrderTemplateListViewComponent","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","renderOrderTemplate","orderTemplateNodeProps","orderTemplateImageElement","currentImageListLength","children","CartIcon","cartLabel","cartQtyLabel","cartItem","totalItemsInCart","qtyLabel","visibility","CartIconComponent","createComponentOverride","errorMessages","assertive","PayInvoiceComponentActions","_event","setDisabled","payInvoices","onClickHandler","innerRef","payInvoiceButtonAriaLabel","canBePaid","payInvoiceButtonText","invoicesToAdd","cartState","addInvoicesToCart","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","_window","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","getInvoicesFilterStateResources","filterState","invoicesFilterShowAll","invoiceStatusPaid","invoiceStatusPartiallyPaid","invoiceStatusUnpaid","onStateClick","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","onFilterStateClick","clickedState","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","setShowActions","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","wrapperRefiner","refinerRefernce","handleClickOutside","useOutsideClick","payInvoiceReferences","invoiceReferences","InvoicesTableRowComponent","onSelectLine","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","isCurrentUser","invoiceCurrentUser","invoiceStatus","invoiceStatusNone","getViewport","onSelectAllHandler","setIsMobile","updateViewport","all","isAdmin","IsB2bAdmin","MakePaymentComponentActions","hasInvoices","CustomerAccountNumber"],"sourceRoot":""}