{"version":3,"file":"static/js/17.724cea84ee1dc8433b89.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/add-user-by-loyalty-card-form/add-user-by-loyalty-card-form.tsx?117e","webpack://nile.commerce.online/./src/modules/add-user-by-loyalty-card-form/add-user-by-loyalty-card-form.view.tsx?f055","webpack://nile.commerce.online/./src/modules/contact-form/contact-form.tsx?3b93","webpack://nile.commerce.online/./src/modules/contact-form/contact-form.view.tsx?7ee1","webpack://nile.commerce.online/./src/modules/country-picker-all/country-picker-all.tsx?a055","webpack://nile.commerce.online/./src/modules/country-picker-all/country-picker-all.view.tsx?c5cc","webpack://nile.commerce.online/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://nile.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://nile.commerce.online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://nile.commerce.online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://nile.commerce.online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://nile.commerce.online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://nile.commerce.online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://nile.commerce.online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://nile.commerce.online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://nile.commerce.online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://nile.commerce.online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://nile.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://nile.commerce.online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://nile.commerce.online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://nile.commerce.online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://nile.commerce.online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://nile.commerce.online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://nile.commerce.online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://nile.commerce.online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://nile.commerce.online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://nile.commerce.online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://nile.commerce.online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://nile.commerce.online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://nile.commerce.online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://nile.commerce.online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://nile.commerce.online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://nile.commerce.online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://nile.commerce.online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://nile.commerce.online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://nile.commerce.online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://nile.commerce.online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://nile.commerce.online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://nile.commerce.online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://nile.commerce.online/./src/modules/map/map.tsx?6111","webpack://nile.commerce.online/./src/modules/map/map.view.tsx?5db9","webpack://nile.commerce.online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6"],"sourcesContent":["import * as React from 'react';\r\nimport { IAddUserByLoyaltyCardFormProps } from './add-user-by-loyalty-card-form.props.autogenerated';\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/* tslint:disable: no-duplicate-imports */\r\n\r\n// tslint:disable-next-line: no-any\r\nexport interface ILoyaltyUserFormExtendedProps extends IAddUserByLoyaltyCardFormProps {\r\n className?: string;\r\n captchaKey?: string;\r\n textBox: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Form component\r\n */\r\nclass LoyaltyCardForm extends React.Component {\r\n constructor(props: ILoyaltyUserFormExtendedProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const script = document.createElement('script');\r\n script.src = 'https://www.google.com/recaptcha/api.js';\r\n script.async = true;\r\n script.defer = true;\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const LoyaltyCardViewProps = {\r\n ...this.props\r\n };\r\n return this.props.renderView(LoyaltyCardViewProps);\r\n }\r\n}\r\n\r\nexport default LoyaltyCardForm;\r\n","import { Field, Form, FormikErrors, FormikProps, withFormik } from 'formik';\r\nimport * as React from 'react';\r\nimport Recaptcha from 'react-recaptcha';\r\nimport { ILoyaltyUserFormExtendedProps } from './add-user-by-loyalty-card-form';\r\nimport { addUserByLoyaltyCardAsync } from '../../actions/DataActionExtension.g';\r\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IAddUserByLoyaltyCardFormConfig, IAddUserByLoyaltyCardFormResources } from './add-user-by-loyalty-card-form.props.autogenerated';\r\ninterface IFormValues {\r\n loyaltyCardId: string;\r\n zipCode: string;\r\n email: string;\r\n reCaptcha: string;\r\n reCaptchaKey: string;\r\n resources: IAddUserByLoyaltyCardFormResources;\r\n}\r\n\r\ninterface ILoyaltyCardFormProps {\r\n actionContext: IActionContext;\r\n recaptchaKey: string | undefined;\r\n resources: IAddUserByLoyaltyCardFormResources;\r\n config: IAddUserByLoyaltyCardFormConfig;\r\n handleSubmitStatusMessage(isSuccess: boolean): void;\r\n handleResetStatusMessage(): void;\r\n}\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst InnerForm = (props: FormikProps & ILoyaltyCardFormProps) => {\r\n const {\r\n touched,\r\n errors,\r\n isSubmitting,\r\n resources: { loyaltyCardIdLabel, zipCodeLabel, emailLabel, submitLabel },\r\n config: {}\r\n } = props;\r\n const verifyCallback = (response: string) => {\r\n props.values.reCaptcha = response;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n\r\n {touched.loyaltyCardId && errors.loyaltyCardId &&
{errors.loyaltyCardId}
}\r\n
\r\n\r\n
\r\n \r\n \r\n {touched.email && errors.email &&
{errors.email}
}\r\n
\r\n\r\n
\r\n \r\n \r\n {touched.zipCode && errors.zipCode &&
{errors.zipCode}
}\r\n
\r\n\r\n {props.values.reCaptchaKey !== '' && (\r\n
\r\n
\r\n\r\n \r\n {touched.reCaptcha && errors.reCaptcha &&
{errors.reCaptcha}
}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n// let successMsg = '';\r\nconst LoyaltyCardForm = withFormik({\r\n mapPropsToValues: props => {\r\n return {\r\n loyaltyCardId: '',\r\n email: '',\r\n zipCode: '',\r\n reCaptcha: '',\r\n reCaptchaKey: '',\r\n resources: props.resources\r\n };\r\n },\r\n validate: (values: IFormValues, props: ILoyaltyCardFormProps) => {\r\n const emailtest = /\\S+@\\S+\\.\\S+/;\r\n const {\r\n config: { useRecaptcha }\r\n } = props;\r\n const errors: FormikErrors = {};\r\n\r\n if (useRecaptcha && values.reCaptchaKey !== '' && !values.reCaptcha) {\r\n errors.reCaptcha = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.loyaltyCardId) {\r\n errors.loyaltyCardId = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.zipCode) {\r\n errors.zipCode = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = props.resources.requiredMessage;\r\n } else if (!emailtest.test(values.email)) {\r\n errors.email = 'Invalid email address';\r\n }\r\n return errors;\r\n },\r\n\r\n handleSubmit: async (values, formikbag) => {\r\n try {\r\n const res = await addUserByLoyaltyCardAsync(\r\n { callerContext: formikbag.props.actionContext },\r\n values.loyaltyCardId,\r\n values.zipCode,\r\n values.email\r\n );\r\n if (res.Success) {\r\n // successMsg = res.Message ?? '';\r\n formikbag.resetForm();\r\n }\r\n formikbag.props.handleSubmitStatusMessage(res.Success);\r\n formikbag.setSubmitting(false);\r\n } catch (e) {\r\n formikbag.props.handleSubmitStatusMessage(false);\r\n formikbag.setSubmitting(false);\r\n }\r\n }\r\n})(InnerForm);\r\n\r\nconst LoyaltyCardFormView: React.FC = props => {\r\n const [isSuccess, setIsSuccess] = React.useState(false);\r\n const [isFailure, setIsFailure] = React.useState(false);\r\n const handleSubmitStatusMessage = (isSuccess: boolean) => {\r\n if (isSuccess) {\r\n setIsSuccess(true);\r\n setIsFailure(false);\r\n } else {\r\n setIsFailure(true);\r\n setIsSuccess(false);\r\n }\r\n };\r\n const handleResetStatusMessage = () => {\r\n setIsSuccess(false);\r\n setIsFailure(false);\r\n };\r\n const { textBox } = props;\r\n\r\n return (\r\n <>\r\n
\r\n

{props.config.title}

\r\n
\r\n {textBox}\r\n {isSuccess ?
{props.resources.loyaltyRegistrationSuccess}
: null}\r\n {isFailure ?
{props.resources.errorMessage}
: null}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default LoyaltyCardFormView;\r\n","import * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IContactFormProps } from './contact-form.props.autogenerated';\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/* tslint:disable: no-duplicate-imports */\r\n\r\n// tslint:disable-next-line: no-any\r\nexport interface IContactFormExtendedProps extends IContactFormProps {\r\n className?: string;\r\n captchaKey?: string;\r\n textBox: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Form component\r\n */\r\nclass ContactForm extends React.Component {\r\n constructor(props: IContactFormExtendedProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const script = document.createElement('script');\r\n script.src = 'https://www.google.com/recaptcha/api.js';\r\n script.async = true;\r\n script.defer = true;\r\n document.body.appendChild(script);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { textBox } = this.props.config;\r\n const textBoxField = textBox && ;\r\n const ContactViewProps = {\r\n ...this.props,\r\n textBox: textBoxField\r\n };\r\n return this.props.renderView(ContactViewProps);\r\n }\r\n}\r\n\r\nexport default ContactForm;\r\n","import { Field, Form, FormikErrors, FormikProps, withFormik } from 'formik';\r\nimport * as React from 'react';\r\nimport Recaptcha from 'react-recaptcha';\r\nimport { IContactFormExtendedProps } from './contact-form';\r\nimport { createHelpDeskFormEntityAsync } from '../../actions/DataActionExtension.g';\r\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IContactFormConfig, IContactFormResources } from './contact-form.props.autogenerated';\r\ninterface IFormValues {\r\n firstname: string;\r\n email: string;\r\n lastname: string;\r\n phone: string;\r\n message: string;\r\n reCaptcha: string;\r\n reCaptchaKey: string;\r\n inquiryType: string;\r\n resources: IContactFormResources;\r\n}\r\n\r\ninterface IContactFormProps {\r\n actionContext: IActionContext;\r\n recaptchaKey: string | undefined;\r\n resources: IContactFormResources;\r\n config: IContactFormConfig;\r\n handleSubmitStatusMessage(isSuccess: boolean): void;\r\n handleResetStatusMessage(): void;\r\n}\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst InnerForm = (props: FormikProps & IContactFormProps) => {\r\n const {\r\n touched,\r\n errors,\r\n isSubmitting,\r\n resources: { firstnameLabel, lastnameLabel, inquiryTypeLabel, messageLabel, phoneLabel, submitLabel, emailLabel },\r\n config: { inquiryTypeOptions }\r\n } = props;\r\n const verifyCallback = (response: string) => {\r\n props.values.reCaptcha = response;\r\n };\r\n let options: string[] = [];\r\n if (inquiryTypeOptions) {\r\n // @ts-ignore -- This is a mobx array\r\n options = [...inquiryTypeOptions];\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {options.map(opt => (\r\n \r\n ))}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n {touched.firstname && errors.firstname &&
{errors.firstname}
}\r\n
\r\n\r\n
\r\n \r\n \r\n {touched.lastname && errors.lastname &&
{errors.lastname}
}\r\n
\r\n
\r\n \r\n \r\n {touched.email && errors.email &&
{errors.email}
}\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n {props.values.reCaptchaKey !== '' && (\r\n
\r\n
\r\n\r\n \r\n {touched.reCaptcha && errors.reCaptcha &&
{errors.reCaptcha}
}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ContactForm = withFormik({\r\n mapPropsToValues: props => {\r\n return {\r\n firstname: '',\r\n email: '',\r\n lastname: '',\r\n phone: '',\r\n message: '',\r\n reCaptcha: '',\r\n reCaptchaKey: '',\r\n inquiryType: '',\r\n resources: props.resources\r\n };\r\n },\r\n validate: (values: IFormValues, props: IContactFormProps) => {\r\n const emailtest = /\\S+@\\S+\\.\\S+/;\r\n const {\r\n config: { useRecaptcha }\r\n } = props;\r\n const errors: FormikErrors = {};\r\n\r\n if (useRecaptcha && values.reCaptchaKey !== '' && !values.reCaptcha) {\r\n errors.reCaptcha = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = props.resources.requiredMessage;\r\n } else if (!emailtest.test(values.email)) {\r\n errors.email = 'Invalid email address';\r\n }\r\n\r\n if (!values.firstname) {\r\n errors.firstname = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.lastname) {\r\n errors.lastname = props.resources.requiredMessage;\r\n }\r\n\r\n if (!values.message) {\r\n errors.message = props.resources.requiredMessage;\r\n }\r\n\r\n return errors;\r\n },\r\n\r\n handleSubmit: async (values, formikbag) => {\r\n await createHelpDeskFormEntityAsync(\r\n { callerContext: formikbag.props.actionContext },\r\n values.firstname,\r\n values.lastname,\r\n values.email,\r\n values.phone,\r\n values.inquiryType,\r\n values.message\r\n );\r\n formikbag.resetForm();\r\n formikbag.props.handleSubmitStatusMessage(true);\r\n formikbag.setSubmitting(false);\r\n setTimeout(() => {\r\n formikbag.props.handleResetStatusMessage();\r\n }, 1000 * 15);\r\n }\r\n})(InnerForm);\r\n\r\nconst ContactFormView: React.FC = props => {\r\n const [isSuccess, setIsSuccess] = React.useState(false);\r\n const [isFailure, setIsFailure] = React.useState(false);\r\n const handleSubmitStatusMessage = (isSuccess: boolean) => {\r\n if (isSuccess) {\r\n setIsSuccess(true);\r\n setIsFailure(false);\r\n } else {\r\n setIsFailure(true);\r\n setIsSuccess(false);\r\n }\r\n };\r\n const handleResetStatusMessage = () => {\r\n setIsSuccess(false);\r\n setIsFailure(false);\r\n };\r\n const { textBox } = props;\r\n return (\r\n <>\r\n
\r\n

{props.resources.contactTitle}

\r\n
\r\n {textBox}\r\n {isSuccess ?
{props.config.successMessage}
: null}\r\n {isFailure ?
There was an error. Please try again.
: null}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ContactFormView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365Lib from '@msdyn365-commerce/core';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ICookieSetOptions, IImageDimension } from '@msdyn365-commerce/core-internal';\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICountryPickerAllData } from './country-picker-all.data';\r\nimport { IActionLinkData, ICountryListData, ICountryPickerAllProps } from './country-picker-all.props.autogenerated';\r\n\r\n/**\r\n * CountryPicker view props interface.\r\n */\r\nexport interface ICountryPickerViewProps extends ICountryPickerAllProps {\r\n modalContainer: IModuleProps;\r\n modalHeaderContainer: INodeProps;\r\n modalFooterContainer: INodeProps;\r\n modalBodyContainer: INodeProps;\r\n heading?: React.ReactNode;\r\n subheading?: React.ReactNode;\r\n link?: React.ReactNode;\r\n countryList?: ICountryStructure[];\r\n isModalOpen?: boolean;\r\n state?: ICountryPickerState;\r\n stayOnCurrentSiteButton?: React.ReactNode;\r\n}\r\n\r\nexport interface ICountryStructure {\r\n name?: string;\r\n elements?: React.ReactNode[];\r\n}\r\n\r\n/**\r\n * ICountryPickerState: Interface for Country picker State.\r\n */\r\nexport interface ICountryPickerState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CountryPicker component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\r\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\r\n private readonly _preferredSiteNameStorageKey: string = '_msdyn365___sitename_';\r\n\r\n //private readonly _cookieExpirationTime = 5_184_000;\r\n\r\n private readonly _makeBaseUrl = function(origin: string, path: string) {\r\n let ext = '';\r\n const base = origin.charAt(origin.length - 1) === '/' ? origin.slice(0, origin.length - 1) : origin;\r\n if (path.indexOf('/eu-en') === 0) {\r\n ext = 'eu-en';\r\n } else if (path.indexOf('/en') === 0) {\r\n ext = 'en';\r\n } else if (path.indexOf('/fr-ch') === 0) {\r\n ext = 'fr-ch';\r\n } else if (path.indexOf('/fr') === 0) {\r\n ext = 'fr';\r\n } else if (path.indexOf('/eu') === 0) {\r\n ext = 'eu';\r\n } else {\r\n return base;\r\n }\r\n return `${base}/${ext}`;\r\n };\r\n\r\n private validateCookieValue(cookie: string): boolean {\r\n if (\r\n cookie === `${this.props.context.request.url.requestUrl.origin}` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/en` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/fr-ch` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/fr` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/eu` ||\r\n cookie === `${this.props.context.request.url.requestUrl.origin}/eu-en`\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public constructor(props: ICountryPickerAllProps) {\r\n super(props);\r\n let isCookieValueSet: boolean = false;\r\n const baseUrl = this._makeBaseUrl(props.context.request.url.requestUrl.origin, props.context.request.url.requestUrl.pathname);\r\n let cookieValue: string | undefined;\r\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\r\n isCookieValueSet = true;\r\n cookieValue = this._stripTrailingSlashes(props.context.request.cookies.get(this._preferredSiteStorageKey).value as string);\r\n if (MsDyn365.isBrowser) {\r\n if (\r\n this.validateCookieValue(this._appendProtocolToUrl(cookieValue)) &&\r\n this._appendProtocolToUrl(cookieValue) !== baseUrl &&\r\n props.config.autoRedirect &&\r\n window.location.href.search('localhost:4000') !== 8 //This will always be 8 if you are on localhost. please do not redirect\r\n ) {\r\n window.location.replace(\r\n this._appendProtocolToUrl(cookieValue) +\r\n this.stripLocale(this.props.context.request.url.requestUrl.pathname.toString()) +\r\n this.props.context.request.url.requestUrl.search ?? ''\r\n );\r\n }\r\n }\r\n }\r\n if (this.props.config.autoRedirect) {\r\n this.state = {\r\n isModalOpen: !isCookieValueSet // || (cookieValue !== undefined && this._appendProtocolToUrl(cookieValue) !== baseUrl)\r\n };\r\n } else {\r\n this.state = {\r\n isModalOpen: !isCookieValueSet || (cookieValue !== undefined && this._appendProtocolToUrl(cookieValue) !== baseUrl)\r\n };\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, subheading, countryList, actionLink } = this.props.config;\r\n\r\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\r\n\r\n if (!isConsentGiven) {\r\n return null;\r\n }\r\n\r\n const countryPickerHeading = heading && (\r\n \r\n );\r\n\r\n const countryPickerSubHeading = subheading && (\r\n \r\n );\r\n\r\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\r\n const currentSiteButton = (\r\n \r\n );\r\n\r\n const viewprops: ICountryPickerViewProps = {\r\n ...this.props,\r\n state: this.state,\r\n isModalOpen: this.state.isModalOpen,\r\n modalContainer: {\r\n moduleProps: this.props,\r\n tag: Modal,\r\n className: 'ms-country-picker__dialog',\r\n isOpen: true,\r\n 'aria-label': 'country-picker',\r\n toggle: this.closeModal,\r\n modalTransition: { timeout: 0 },\r\n shouldUpdateFocusToFirstElement: true\r\n },\r\n modalHeaderContainer: {\r\n tag: ModalHeader,\r\n className: 'ms-country-picker__modal-header',\r\n toggle: this.closeModal\r\n },\r\n modalFooterContainer: {\r\n tag: ModalFooter,\r\n className: 'ms-countryPicker__modal-footer'\r\n },\r\n modalBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-counrtyPicker__modal-body'\r\n },\r\n heading: countryPickerHeading,\r\n subheading: countryPickerSubHeading,\r\n link: countryPickerActionLink,\r\n countryList: countryList && this.renderCountryList(),\r\n stayOnCurrentSiteButton: currentSiteButton\r\n };\r\n\r\n return this.props.renderView(viewprops);\r\n }\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n public readonly closeModal = (): void => {\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n public handleParagraphChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n this.props.config.subheading = event.target.value;\r\n }\r\n\r\n public handleTextChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n this.props.config.heading!.text = event.target.value;\r\n }\r\n\r\n public handleLinkTextChange(event: MsDyn365Lib.ContentEditableEvent): void {\r\n if (this.props.config.actionLink?.linkText) {\r\n this.props.config.actionLink.linkText = event.target.value;\r\n }\r\n }\r\n\r\n public createLink(link?: IActionLinkData): React.ReactNode | null {\r\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\r\n const linkText = link?.linkText ?? '';\r\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\r\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\r\n const editableLink: MsDyn365Lib.ILinksData = {\r\n ariaLabel: link?.ariaLabel,\r\n className: 'ms-countryPicker__link',\r\n linkText,\r\n linkUrl: link?.linkUrl.destinationUrl,\r\n openInNewTab: link?.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes!,\r\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\r\n };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n public renderCountryList(): ICountryStructure[] {\r\n const countryList = this.props.config.countryList;\r\n\r\n const countryGroups = countryList && groupBy(countryList, x => x.displayGroup);\r\n\r\n const countryLinks: ICountryStructure[] = [];\r\n\r\n countryGroups?.forEach(countrydata => {\r\n const clinks = countrydata.map((item: ICountryListData) => {\r\n return this.renderCountry(item);\r\n });\r\n\r\n countryLinks.push({ name: countrydata[0].displayGroup, elements: clinks });\r\n });\r\n return countryLinks;\r\n }\r\n\r\n public renderCountry(item: ICountryListData): React.ReactNode {\r\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\r\n const defaultImageSettings: MsDyn365Lib.IImageSettings = {\r\n viewports: {\r\n xs: imageSize,\r\n lg: imageSize,\r\n xl: imageSize\r\n },\r\n lazyload: true\r\n };\r\n const image = item.image;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings!,\r\n imageSettings: image?.imageSettings ?? defaultImageSettings\r\n };\r\n\r\n return (\r\n \r\n {image && (\r\n \r\n )}\r\n
\r\n {`${item.displayGroupLocalizedName ??\r\n item.displayGroup}(${item.displayString})`}\r\n
\r\n \r\n );\r\n }\r\n\r\n private stripLocale(input: string): string {\r\n var result = input;\r\n if (input.includes('/eu-en') || input.includes('/fr-ch')) {\r\n result = input.slice(6);\r\n } else if (input.includes('/en') || input.includes('/eu') || input.includes('/fr')) {\r\n result = input.slice(3);\r\n } else if (input.length > 0) {\r\n result = input;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Writes the current site base url to cookie and closes the country picker modal dialog.\r\n */\r\n private readonly _handleStayOnSiteButtonClick = (): void => {\r\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\r\n if (currentBaseUrl) {\r\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\r\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\r\n }\r\n this.closeModal();\r\n };\r\n\r\n /**\r\n * Handles click event of country selection.\r\n * @param storageKey - Cookie storage key.\r\n * @param storageValue - Preffered site url.\r\n * @returns - This method just writes the cookie to the browser.\r\n */\r\n private readonly _handleClick = (storageKey?: string, storageValue?: string, storageKey2?: string, storageValue2?: string) => () => {\r\n this._writeToCookie(storageKey, storageValue);\r\n this._writeToCookie(storageKey2, storageValue2);\r\n };\r\n\r\n /**\r\n * Handles click event of country selection.\r\n * @param storageKey - Cookie storage key.\r\n * @param storageValue - Preffered site url.\r\n */\r\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\r\n if (!storageKey || !storageValue) {\r\n return;\r\n }\r\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\r\n cookieOptions.maxAge = this.props.config.cookieLifetime;\r\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\r\n };\r\n\r\n /**\r\n * Appends protocol to an url.\r\n * @param baseUrl - Url to be formatted.\r\n * @returns - URL after appending protocol.\r\n */\r\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\r\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\r\n };\r\n\r\n private readonly _stripTrailingSlashes = (path: string): string => {\r\n return path.replace(/\\/+$/, '');\r\n };\r\n}\r\n\r\nfunction groupBy(array: V[], grouper: (item: V) => K) {\r\n return array.reduce((store, item) => {\r\n var key = grouper(item);\r\n if (!store.has(key)) {\r\n store.set(key, [item]);\r\n } else {\r\n store?.get(key)?.push(item);\r\n }\r\n return store;\r\n }, new Map());\r\n}\r\n\r\nexport default CountryPicker;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICountryPickerViewProps } from './country-picker-all';\r\n\r\n/**\r\n * Functional component which renders country picker module.\r\n * @param props - Configuration for the country picker component.\r\n * @returns React.FC - Functional component of the country picker module.\r\n */\r\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\r\n const {\r\n isModalOpen,\r\n modalContainer,\r\n modalHeaderContainer,\r\n modalBodyContainer,\r\n heading,\r\n modalFooterContainer,\r\n subheading,\r\n link,\r\n countryList,\r\n resources\r\n } = props;\r\n const preferredSite = props.context.request.cookies.get('_msdyn365___site_').value as string;\r\n\r\n function stripLocale(urlExt: string): string {\r\n const stripRegex = /^\\/(eu-en|en|fr-ch|fr|eu)\\/?/gi;\r\n const newUrlExt = urlExt.replace(stripRegex, '');\r\n return newUrlExt;\r\n }\r\n\r\n function prefhref(preferredSite: string, urlExt: string): string {\r\n return preferredSite.charAt(preferredSite.length - 1) === '/' || urlExt.charAt(0) === '/'\r\n ? `${preferredSite}${urlExt}`\r\n : `${preferredSite}/${urlExt}`;\r\n }\r\n const urlExt = stripLocale(props.context.request.url.requestUrl.pathname);\r\n\r\n if (preferredSite && countryList && isModalOpen) {\r\n const preferredSiteName = props.context.request.cookies.get('_msdyn365___sitename_').value as string;\r\n const currentLocaleName = function() {\r\n const currentLocale = props.context.request.url.requestUrl.pathname;\r\n\r\n if (currentLocale.indexOf('/eu-en') === 0) {\r\n return 'European Union (English)';\r\n } else if (currentLocale.indexOf('/en') === 0) {\r\n return 'Switzerland (English)';\r\n } else if (currentLocale.indexOf('/fr-ch') === 0) {\r\n return 'Suisse (Français)';\r\n } else if (currentLocale.indexOf('/fr') === 0) {\r\n return 'Union Européenne (Français)';\r\n } else if (currentLocale.indexOf('/eu') === 0) {\r\n return 'Europäische Union (Deutsch)';\r\n } else {\r\n return 'Schweiz (Deutsch)';\r\n }\r\n };\r\n return (\r\n \r\n \r\n
\r\n

Welcome Back!

\r\n
\r\n

\r\n {resources.geolocationOopsText}\r\n {` ${currentLocaleName()}`}.\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n

\r\n {resources.geolocationReturnText}\r\n {preferredSiteName}?\r\n

\r\n
\r\n
\r\n —{resources.geolocationOrText}—\r\n \r\n

{resources.geolocationPickNewText}

\r\n
\r\n \r\n {countryList.map(country => (\r\n
\r\n {country?.elements}\r\n
\r\n ))}\r\n
\r\n\r\n {link}\r\n
\r\n );\r\n }\r\n\r\n return isModalOpen && countryList ? (\r\n \r\n \r\n {heading}\r\n
{resources.geolocationSubText}
\r\n {subheading}\r\n
\r\n \r\n {countryList.map(country => (\r\n
\r\n {country?.elements}\r\n
\r\n ))}\r\n
\r\n\r\n {link}\r\n
\r\n ) : null;\r\n};\r\n\r\nexport default countryPickerView;\r\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 { 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 { 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 { 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 {\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 { 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 { 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 { 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 { 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 { 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\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 { 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 { 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 { 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 { 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 { 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","/*!\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 { 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 { 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","/*!\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\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 { 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 { 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"],"names":["LoyaltyCardForm","React","constructor","props","super","componentDidMount","script","document","createElement","src","async","defer","body","appendChild","render","LoyaltyCardViewProps","_objectSpread","this","renderView","withFormik","mapPropsToValues","loyaltyCardId","email","zipCode","reCaptcha","reCaptchaKey","resources","validate","values","config","useRecaptcha","errors","requiredMessage","test","handleSubmit","formikbag","res","addUserByLoyaltyCardAsync","callerContext","actionContext","Success","resetForm","handleSubmitStatusMessage","setSubmitting","e","touched","isSubmitting","loyaltyCardIdLabel","zipCodeLabel","emailLabel","submitLabel","Form","translate","className","htmlFor","Field","id","name","type","Recaptcha","sitekey","theme","verifyCallback","response","disabled","isSuccess","setIsSuccess","isFailure","setIsFailure","textBox","title","Node","loyaltyRegistrationSuccess","errorMessage","context","recaptchaKey","captchaKey","handleResetStatusMessage","ContactForm","textBoxField","Msdyn365","text","ContactViewProps","firstname","lastname","phone","message","inquiryType","createHelpDeskFormEntityAsync","setTimeout","firstnameLabel","lastnameLabel","inquiryTypeLabel","messageLabel","phoneLabel","inquiryTypeOptions","options","component","multiple","map","opt","value","replace","key","contactTitle","successMessage","CountryPicker","_telemetryContent","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","_preferredSiteStorageKey","_preferredSiteNameStorageKey","_makeBaseUrl","origin","path","ext","base","charAt","length","slice","indexOf","closeModal","setState","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","storageKey2","storageValue2","cookieOptions","secure","sameSite","maxAge","cookieLifetime","cookies","set","baseUrl","includes","_stripTrailingSlashes","isCookieValueSet","url","requestUrl","pathname","cookieValue","_ref","get","MsDyn365","isBrowser","validateCookieValue","autoRedirect","window","location","href","search","stripLocale","toString","state","undefined","cookie","_heading$tag","heading","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","MsDyn365Lib","tag","editProps","onEdit","handleTextChange","requestContext","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","Button","onClick","stayOnCurrentSiteButtonText","viewprops","modalContainer","moduleProps","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","link","renderCountryList","stayOnCurrentSiteButton","event","target","handleLinkTextChange","_this$props$config$ac","linkText","StringExtensions","isNullOrEmpty","linkUrl","destinationUrl","_link$linkText","payLoad","getPayloadObject","attributes","getTelemetryAttributes","editableLink","ariaLabel","openInNewTab","role","additionalProperties","onTelemetryClick","onTextChange","countryGroups","grouper","x","displayGroup","reduce","store","item","_store$get","has","push","Map","countryLinks","forEach","countrydata","clinks","renderCountry","elements","_image$imageSettings","_ref2","_ref3","_image$src","_item$displayGroupLoc","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","displayString","tabIndex","altText","loadFailureBehavior","shouldSkipToMainImage","displayGroupLocalizedName","input","result","countryPickerView","preferredSite","urlExt","preferredSiteName","currentLocaleName","currentLocale","Module","Object","assign","geolocationOopsText","prefhref","geolocationReturnText","geolocationOrText","geolocationPickNewText","country","geolocationSubText","RequestsTableColumnHeader","getUserName","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","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","data","tableData","operationRequests","ArrayExtensions","hasElements","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","Text","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","filter","isMobile","mobileExcludedColumns","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","reqContext","URL","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","format","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","viewProps","b2bRequestsStatus","table","__decorate","computed","Link","index","noclick","telemetryContent","contentAction","etext","attribute","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","error","_getCustomBreadcrumbLinks","itemPosition","links","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","find","Language","toLowerCase","_getPDPLinks","categoryPaths","product","Name","hideProductName","_goBack","history","back","_getPDPBackButton","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","classnames","BreadcrumbList","BreadcrumbListItem","backButton","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","min","max","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","FooterCategory","categories","FooterList","FooterListItem","FooterCategoryView","category","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","InteractiveFeatureItem","handleHeadingChange","paragraph","linkIndex","_this$props$config$li","indexItem","itemCounter","isMosaic","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","invoiceDate","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","label","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","apiSettings","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","InvoicePaidStatus","Paid","InvoiceDetails","errorState","otherError","_onAddToCartFailed","bind","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","ProductInput","getSimpleProductsAction","newErrorState","errorHost","errorCode","_this$state$errorStat","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","errorMessages","Alert","color","assertive","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","setShowActions","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","useState","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","wrapperRefiner","refinerRefernce","handleClickOutside","current","contains","addEventListener","removeEventListener","useOutsideClick","ref","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","AccountNumber","customerAccountNumber","invoiceCurrentUser","isMobileView","viewport","_window","device","Type","innerWidth","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","_event","setDisabled","payInvoices","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","i","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","RequestInvoiceModal","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onDismiss","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","shouldComponentUpdate","nextProps","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","reaction","_this$props$data$b2bU","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","Email","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","tableClassName","_newErrorState$errorR","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_this$props$data$cart","cart","hasInvoiceLine","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","specificInvoice","observer","InvoiceListView","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","_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","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","recordId","_this$props$data$dist2","showIndex","size","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","classname","show","Header","headerProps","MapProps","observable","MapHeader","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","removeButton","orderTemplateName","orderTemplateImageElement","currentImageListLength","children"],"sourceRoot":""}