{"version":3,"file":"static/js/396baf1082ae75c5b9cd.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-button.tsx?640f","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-error.tsx?eab2","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-input.tsx?0ff3","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-select.tsx?5fb1","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-checkbox.tsx?f21f","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-radio.tsx?bb2f","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-file-upload.tsx?bc2f","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-label.tsx?538f","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-searchbox.tsx?3deb","webpack://Msdyn365.Commerce.Online/./src/utilities/src/helpers/index.ts?6d5e","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/util/util.tsx?a54c","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/table-view/components/bremworth-invoice-lines-table-header-component.tsx?9f4a","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-invoice-line-table-radio.tsx?7f8c","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/table-view/components/bremworth-invoice-lines-table-row-component.tsx?617c","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/table-view/bremworth-invoice-lines-table.tsx?af43","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-modal.tsx?08af","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/bremworth-complaints-form.tsx?a4b0","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/theme/theme.tsx?4b69","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/bremworth-complaints-form.view.tsx?815d","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/components/form-date-picker.tsx?d596","webpack://Msdyn365.Commerce.Online/./src/modules/bremworth-complaints-form/model/model.tsx?bedc","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.array.flat.js?316c","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/flatten-into-array.js?a994","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/does-not-exceed-safe-integer.js?9e9d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.array.unscopables.flat.js?5ec5","webpack://Msdyn365.Commerce.Online/./src/actions/complaints-form-image-push.action.ts?820d","webpack://Msdyn365.Commerce.Online/./src/actions/complaints-form-image-delete.action.ts?ab70"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IFormButtonProps {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n link?: string;\r\n telemetryContent: ITelemetryContent;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nexport const FormButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, link, onClick }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent, text);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n
\r\n \r\n {text}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default FormButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IFormErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nexport const FormError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormError;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputID, InputType } from '../model/model';\r\nimport { invoiceLines } from './table-view';\r\n\r\nexport interface IFormInputProps {\r\n id?: string;\r\n type: InputType;\r\n placeHolder?: string;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n helpText?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n onBlur(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n isInvoiceLineReady?: boolean;\r\n selectedinvoiceLines?: invoiceLines;\r\n isInvoiceNoReady?: boolean;\r\n isInvoiceLinesSearchSuccess: boolean | undefined;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = Number.parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\nconst getselectedinvoiceLines = (\r\n id: string | undefined,\r\n isInvoiceLine: boolean | undefined,\r\n isInvoiceLinesSearchSuccess: boolean | undefined,\r\n selectedinvoiceLines: invoiceLines | undefined\r\n): boolean | undefined => {\r\n let isInvoiceLineReady = isInvoiceLine !== undefined ? isInvoiceLine : true;\r\n if (selectedinvoiceLines && selectedinvoiceLines.InvoiceId !== '' && isInvoiceLinesSearchSuccess !== undefined) {\r\n if (id === InputID.description) {\r\n isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n }\r\n if (id === InputID.productInvoiceNo) {\r\n isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n }\r\n if (id === InputID.productConsumerInvoiceValue) {\r\n if (selectedinvoiceLines?.Amount && selectedinvoiceLines?.Amount > 0) {\r\n isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n }\r\n }\r\n if (id === InputID.product) {\r\n isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n }\r\n if (id === InputID.colour) {\r\n isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n }\r\n // iHelp-512785\r\n // if (id === InputID.batchNumber) {\r\n // isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n // }\r\n // if (id === InputID.rollNumber) {\r\n // isInvoiceLineReady = isInvoiceLinesSearchSuccess;\r\n // }\r\n } else {\r\n if (id === InputID.productInvoiceNo && isInvoiceLinesSearchSuccess !== undefined) {\r\n isInvoiceLineReady = false;\r\n }\r\n }\r\n return isInvoiceLineReady;\r\n};\r\nexport const FormInput: React.FC = ({\r\n id,\r\n type,\r\n placeHolder,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n isRequired,\r\n onChange,\r\n onBlur,\r\n fieldReference,\r\n helpText,\r\n index,\r\n isInvoiceLineReady,\r\n selectedinvoiceLines,\r\n isInvoiceLinesSearchSuccess,\r\n isInvoiceNoReady\r\n}) => {\r\n const isInvoiceLineReadyState = getselectedinvoiceLines(id, isInvoiceLineReady, isInvoiceLinesSearchSuccess, selectedinvoiceLines);\r\n if (type === InputType.TextArea) {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n disabled={isInvoiceLineReadyState !== undefined ? isInvoiceLineReadyState : true}\r\n />\r\n {helpText && {helpText}}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n ref={fieldReference}\r\n disabled={isInvoiceLineReadyState !== undefined ? isInvoiceLineReadyState : true}\r\n />\r\n {helpText && {helpText}}\r\n
\r\n );\r\n};\r\n\r\nexport default FormInput;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport { OptionHTMLAttributes } from 'react';\r\nimport { RichText } from '@msdyn365-commerce/core';\r\n\r\nexport interface IFormSelectProps {\r\n id?: string;\r\n value?: string;\r\n optionList?: OptionHTMLAttributes[];\r\n className: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n helpText?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n isInvoiceLineReady?: boolean;\r\n}\r\n\r\nexport const FormSelect: React.FC = ({\r\n id,\r\n value,\r\n optionList,\r\n className,\r\n isRequired,\r\n onChange,\r\n fieldReference,\r\n helpText,\r\n index,\r\n isInvoiceLineReady\r\n}) => {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n disabled={isInvoiceLineReady !== undefined ? isInvoiceLineReady : true}\r\n >\r\n {optionList &&\r\n optionList.map((item, i) => (\r\n \r\n ))}\r\n \r\n {helpText && {helpText}}\r\n
\r\n );\r\n};\r\n\r\nexport default FormSelect;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputType } from '../model/model';\r\n\r\nexport interface IFormCheckboxProps {\r\n id?: string;\r\n type: InputType;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n description?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n onBlur(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n}\r\n\r\nexport const FormCheckbox: React.FC = ({\r\n id,\r\n type,\r\n value,\r\n className,\r\n onChange,\r\n onBlur,\r\n isRequired,\r\n fieldReference,\r\n description,\r\n index\r\n}) => {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n checked={value === '1'}\r\n ref={fieldReference}\r\n />\r\n {description && }\r\n
\r\n );\r\n};\r\n\r\nexport default FormCheckbox;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputType } from '../model/model';\r\n\r\nexport interface IFormRadioProps {\r\n id?: string;\r\n type: InputType;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n description?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n onBlur(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n isInvoiceLineReady?: boolean;\r\n}\r\n\r\nexport const FormRadio: React.FC = ({\r\n id,\r\n type,\r\n value,\r\n className,\r\n onChange,\r\n onBlur,\r\n isRequired,\r\n fieldReference,\r\n description,\r\n index,\r\n isInvoiceLineReady\r\n}) => {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n checked={value === '1'}\r\n ref={fieldReference}\r\n disabled={isInvoiceLineReady !== undefined ? isInvoiceLineReady : false}\r\n />\r\n Yes\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n checked={value === '0'}\r\n ref={fieldReference}\r\n disabled={isInvoiceLineReady !== undefined ? isInvoiceLineReady : false}\r\n />\r\n No\r\n {description && }\r\n
\r\n );\r\n};\r\n\r\nexport default FormRadio;\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 { RichText } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\n\r\nimport { InputType } from '../model/model';\r\n\r\nexport interface IFormFileUploadProps {\r\n id?: string;\r\n type: InputType;\r\n className: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n multiple: boolean;\r\n helpText?: string | RichText;\r\n disable: boolean;\r\n onChange?(event: React.ChangeEvent): void;\r\n onFileCancel?(event: React.MouseEvent): void;\r\n onBlur?(event: React.ChangeEvent): void;\r\n isInvoiceLineReady?: boolean;\r\n}\r\n\r\nexport const FormFileUpload: React.FC = ({\r\n id,\r\n type,\r\n className,\r\n isRequired,\r\n onChange,\r\n onFileCancel,\r\n onBlur,\r\n fieldReference,\r\n multiple,\r\n helpText,\r\n disable,\r\n isInvoiceLineReady\r\n}) => {\r\n return (\r\n
\r\n {\r\n // alert('sasas');\r\n }}\r\n // onBlur={onBlur}\r\n ref={fieldReference}\r\n multiple={multiple}\r\n disabled={isInvoiceLineReady !== undefined && isInvoiceLineReady ? isInvoiceLineReady : disable}\r\n />\r\n \r\n
{helpText}
\r\n
\r\n );\r\n};\r\n\r\nexport default FormFileUpload;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface IFormLabelProps {\r\n id: string;\r\n forId: string;\r\n className: string;\r\n text: string;\r\n additionallabel: string | undefined;\r\n}\r\n\r\nexport const FormLabel: React.FC = ({ id, forId, className, text, additionallabel }) => (\r\n <>\r\n \r\n
{additionallabel !== undefined && additionallabel}
\r\n \r\n);\r\n\r\nexport default FormLabel;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputType } from '../model/model';\r\n\r\nexport interface IFormSearchboxInputProps {\r\n id?: string;\r\n type: InputType;\r\n placeHolder?: string;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n helpText?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n onBlur(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n additionallabel?: string;\r\n onInvoiceNumberSearch: () => void;\r\n invoiceLinesTable?: React.ReactNode;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = Number.parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const FormSearchBoxInput: React.FC = ({\r\n id,\r\n type,\r\n placeHolder,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n isRequired,\r\n onChange,\r\n onBlur,\r\n fieldReference,\r\n helpText,\r\n index,\r\n additionallabel,\r\n invoiceLinesTable,\r\n onInvoiceNumberSearch\r\n}) => {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n ref={fieldReference}\r\n />\r\n
\r\n {helpText && {helpText}}\r\n {invoiceLinesTable}\r\n
\r\n );\r\n};\r\n\r\nexport default FormSearchBoxInput;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nconst getImageNumByID = (imageId: string) => {\r\n return imageId.replace('photo-upload', '');\r\n};\r\n\r\nexport { getImageNumByID };\r\n","import { IOption } from '../model/model';\r\n\r\nexport const _varNoneOptions: IOption = {\r\n label: 'Choose the issue',\r\n value: 'Select type'\r\n};\r\n\r\nexport const _varIssueTypeOptions: IOption[] = [_varNoneOptions];\r\nexport const _varStateOptions: IOption[] = [\r\n _varNoneOptions,\r\n {\r\n label: 'ACT',\r\n value: 'ACT'\r\n },\r\n {\r\n label: 'NSW',\r\n value: 'NSW'\r\n },\r\n {\r\n label: 'NT',\r\n value: 'NT'\r\n },\r\n {\r\n label: 'QLD',\r\n value: 'QLD'\r\n },\r\n {\r\n label: 'SA',\r\n value: 'SA'\r\n },\r\n {\r\n label: 'TAS',\r\n value: 'TAS'\r\n },\r\n {\r\n label: 'VIC',\r\n value: 'VIC'\r\n },\r\n {\r\n label: 'WA',\r\n value: 'WA'\r\n }\r\n];\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\n// import { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\n/**\r\n * Resources which are used in order history header.\r\n */\r\nexport interface IInvoiceLinesTableHeaderResources {\r\n invoiceLinesSalesOrderText: string;\r\n invoiceLinesItemText: string;\r\n invoiceLinesColourText: string;\r\n invoiceLinesBatchNumberText: string;\r\n invoiceLinesSerialNumberText: string;\r\n invoiceLinesDescriptiontext: string;\r\n invoiceLinesSalesCategoryText: string;\r\n invoiceLinesQuantityText?: string;\r\n invoiceLinesUnitPriceText?: string;\r\n invoiceLinesAmountText?: string;\r\n}\r\n\r\n/**\r\n * Configuration of the component.\r\n */\r\nexport interface IInvoiceLinesTableHeaderProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n\r\n resources: IInvoiceLinesTableHeaderResources;\r\n}\r\n\r\n/**\r\n * Renders desktop view cells.\r\n * @param props - Configuration of the module.\r\n * @returns List of cells for the header.\r\n */\r\nconst getDesktopHeaderCells = (props: IInvoiceLinesTableHeaderProps) => {\r\n const { resources } = props;\r\n return (\r\n <>\r\n {''}\r\n {resources.invoiceLinesSalesOrderText}\r\n {resources.invoiceLinesItemText}\r\n {resources.invoiceLinesColourText}\r\n {resources.invoiceLinesBatchNumberText}\r\n {resources.invoiceLinesSerialNumberText}\r\n {resources.invoiceLinesDescriptiontext}\r\n {resources.invoiceLinesSalesCategoryText}\r\n {resources.invoiceLinesQuantityText}\r\n {resources.invoiceLinesUnitPriceText}\r\n {resources.invoiceLinesAmountText}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders mobile view cells.\r\n * @param props - Configuration of the module.\r\n * @returns List of cells for the header.\r\n */\r\n// const getMobileHeaderCells = (props: IInvoiceLinesTableHeaderProps) => {\r\n// const { resources } = props;\r\n// return (\r\n// <>\r\n// {resources.invoiceLinesSalesOrderText}\r\n// \r\n// \r\n// );\r\n// };\r\n\r\n/**\r\n * Order history table header component.\r\n * @param props - Configuration of the component.\r\n * @returns React node with the header.\r\n */\r\nexport const InvoiceLinesTableHeaderComponent: React.FC = (props: IInvoiceLinesTableHeaderProps) => {\r\n const rowClassName = `${props.className}__row`;\r\n\r\n let headerCells: JSX.Element;\r\n // eslint-disable-next-line prefer-const\r\n headerCells = getDesktopHeaderCells(props);\r\n\r\n return (\r\n \r\n {headerCells}\r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputType } from '../model/model';\r\n\r\nexport interface IFormInvoiceLinesTableRadioProps {\r\n id?: string;\r\n type: InputType;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n description?: string | RichText;\r\n onChange(event: React.ChangeEvent, index: number): void;\r\n onBlur(event: React.ChangeEvent, index: number): void;\r\n index?: number;\r\n name?: string;\r\n checkedValue?: string;\r\n}\r\n\r\nexport const InvoiceLinesTableRadio: React.FC = ({\r\n id,\r\n type,\r\n className,\r\n onChange,\r\n onBlur,\r\n fieldReference,\r\n index,\r\n name,\r\n value,\r\n checkedValue\r\n}) => {\r\n return (\r\n
\r\n onChange(event, index || index === 0 ? index : -1)}\r\n onBlur={event => onBlur(event, index || index === 0 ? index : -1)}\r\n ref={fieldReference}\r\n value={value}\r\n checked={value === checkedValue}\r\n />\r\n {/* Yes */}\r\n
\r\n );\r\n};\r\n\r\nexport default InvoiceLinesTableRadio;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\n// import { format } from '@msdyn365-commerce/retail-proxy';\r\n// import { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport React, { useState } from 'react';\r\nimport { invoiceLines } from '../bremworth-invoice-lines-table';\r\n\r\n/**\r\n * Data required to render each order history row.\r\n */\r\nexport interface IInvoiceLinesTableRowData {\r\n invoiceLines: invoiceLines;\r\n key: number;\r\n}\r\nimport { InputType } from '../../../model/model';\r\nimport InvoiceLinesTableRadio from '../../form-invoice-line-table-radio';\r\n\r\n/**\r\n * Resources for order history table rows.\r\n */\r\nexport interface IInvoiceLinesTableRowResources {\r\n invoiceLinesSalesOrderText: string;\r\n}\r\n\r\n/**\r\n * Configuration for the order history rows.\r\n */\r\nexport interface IInvoiceLinesTableRowProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n\r\n resources: IInvoiceLinesTableRowResources;\r\n onInvoiceLinesTableInputChange: (event: React.ChangeEvent) => void;\r\n onInvoiceLinesTableInputBlur: (event: React.ChangeEvent) => void;\r\n selectedOption: string;\r\n}\r\n\r\n/**\r\n * Formats amount.\r\n * @param context - Core context.\r\n * @param amount - Amount to display.\r\n * @param currencyCode - Currency for the amount.\r\n * @returns String value.\r\n */\r\n// const formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\r\n// if (amount === undefined) {\r\n// return '';\r\n// }\r\n// return context.cultureFormatter.formatCurrency(amount, currencyCode);\r\n// };\r\n\r\n/**\r\n * Formats date.\r\n * @param context - Core context.\r\n * @param date - Date to display.\r\n * @returns String value.\r\n */\r\n// const formatDate = (context: ICoreContext, date: Date | undefined) => {\r\n// if (date === undefined) {\r\n// return '';\r\n// }\r\n\r\n// const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n// return context.cultureFormatter.formatDate(date, dateOptions);\r\n// };\r\n\r\n// const getShortEllipsisText = (originalText: string, maxTextLength: number) => {\r\n// const isRtl = document.body.parentElement?.getAttribute('dir') === 'rtl';\r\n// return originalText.length > maxTextLength\r\n// ? isRtl\r\n// ? `…${originalText.substring(0, maxTextLength - 1)}`\r\n// : `${originalText.substring(0, maxTextLength - 1)}…`\r\n// : originalText;\r\n// };\r\n\r\n/**\r\n * Renders rows for desktop view.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order history rows for desktop view.\r\n */\r\n\r\nexport const InvoiceLinesDesktopTableRowCellComponent: React.FC = (props: IInvoiceLinesTableRowProps) => {\r\n const {\r\n data: { invoiceLines, key },\r\n resources: { invoiceLinesSalesOrderText }\r\n } = props;\r\n\r\n const salesId = invoiceLines.OrigSalesId;\r\n const [selectedOption, setSelectedOption] = useState('');\r\n\r\n const _onInvoiceLinesTableInputChange = (event: React.ChangeEvent): void => {\r\n setSelectedOption(event.target.value);\r\n props.onInvoiceLinesTableInputChange(event);\r\n };\r\n const _onInvoiceLinesTableInputBlur = (event: React.ChangeEvent): void => {\r\n setSelectedOption(event.target.value);\r\n props.onInvoiceLinesTableInputBlur(event);\r\n };\r\n const addRadioButton = (salesId: string): JSX.Element => {\r\n return (\r\n _onInvoiceLinesTableInputChange(event),\r\n onChange: event => _onInvoiceLinesTableInputBlur(event),\r\n index: key\r\n }}\r\n />\r\n );\r\n };\r\n const selectedRow = selectedOption !== '' && selectedOption === `${salesId}-${key}` ? 'selected' : 'unselected';\r\n return (\r\n <>\r\n {salesId && addRadioButton(salesId && salesId)}\r\n {invoiceLines.OrigSalesId}\r\n {invoiceLines.ItemId}\r\n {invoiceLines.InventColorId}\r\n {invoiceLines.InventBatchId}\r\n {invoiceLines.InventSerialId}\r\n {invoiceLines.Name}\r\n {invoiceLines.EcoResCategoryName}\r\n {invoiceLines.Qty}\r\n {invoiceLines.SalesPrice}\r\n {invoiceLines.Amount}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders rows for mobile view.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order history rows for mobile view.\r\n */\r\nexport const InvoiceLinesMobileTableRowCellComponent: React.FC = (props: IInvoiceLinesTableRowProps) => {\r\n const {\r\n data: { invoiceLines }\r\n } = props;\r\n\r\n const cellClassName = `${props.className}__mobile-cell`;\r\n\r\n return (\r\n <>\r\n \r\n <>\r\n {invoiceLines.OrigSalesId}\r\n {invoiceLines.Amount}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders order history rows.\r\n * @param props - Configuration for the rows.\r\n * @returns A react node with a list of order history rows.\r\n */\r\nexport const InvoiceLinesTableRowComponent: React.FC = (props: IInvoiceLinesTableRowProps) => {\r\n // const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\r\n // if(props.selectedOption===props.data.invoiceLines.){\r\n\r\n // }\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\nimport React from 'react';\r\nimport {\r\n IInvoiceLinesTableHeaderResources,\r\n InvoiceLinesTableHeaderComponent\r\n} from './components/bremworth-invoice-lines-table-header-component';\r\nimport { IInvoiceLinesTableRowResources, InvoiceLinesTableRowComponent } from './components/bremworth-invoice-lines-table-row-component';\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Interface with the data required for order history.\r\n */\r\nexport interface invoiceLines {\r\n CustomerAccount?: string;\r\n InvoiceId?: string;\r\n OrigSalesId?: string;\r\n ItemId?: string;\r\n InventColorId?: string;\r\n InventBatchId?: string;\r\n InventSerialId?: string;\r\n Name?: string;\r\n EcoResCategoryName?: string;\r\n Qty: number;\r\n SalesPrice: number;\r\n Amount: number;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\nexport interface IInvoiceLinesTableData {\r\n invoiceLines: invoiceLines[];\r\n}\r\n\r\n/**\r\n * Resources needed to render order history table.\r\n */\r\nexport interface IInvoiceLinesTableResources extends IInvoiceLinesTableHeaderResources, IInvoiceLinesTableRowResources {}\r\n\r\n/**\r\n * Configuration of order history table.\r\n */\r\nexport interface IInvoiceLinesTableProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n\r\n resources: IInvoiceLinesTableResources;\r\n onInvoiceLinesTableInputChange: (event: React.ChangeEvent) => void;\r\n onInvoiceLinesTableInputBlur: (event: React.ChangeEvent) => void;\r\n selectedOption: string;\r\n}\r\n\r\n/**\r\n * Renders order history table.\r\n * @param props - Configuration for order history table.\r\n * @returns React node with the table.\r\n */\r\nexport const InvoiceLinesTableComponent: React.FC = (props: IInvoiceLinesTableProps) => {\r\n const rowClassName = `${props.className}__row`;\r\n const headerClassName = `${props.className}__header`;\r\n return (\r\n \r\n \r\n {props.data.invoiceLines.map((salesOrderInvoiceLines, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n header: string;\r\n message: string;\r\n}\r\n\r\nconst Modal: React.FC = ({ isOpen, onClose, header, message }) => {\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{header}

\r\n {/* */}\r\n
\r\n
\r\n

{message}

\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Modal;\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 { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\r\nimport { format, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { FormButton, FormError } from './components';\r\nimport {\r\n IComplaintsFormState,\r\n IFormItem,\r\n InputID,\r\n InputType,\r\n IOption,\r\n IBremworthComplaintsFormExtendedProps,\r\n IBremworthComplaintsFormLocalContact\r\n} from './model/model';\r\nimport { renderInputSection } from './theme/theme';\r\nimport { _varIssueTypeOptions, _varNoneOptions } from './util/util';\r\nimport * as DataActionExtension from '../../actions/DataActionExtension.g';\r\nimport { onFormatDate } from './components';\r\nimport { ComplaintsFormImagePushInput, imagePushActionDataAction } from '../../actions/complaints-form-image-push.action';\r\nimport { getImageNumByID } from '../../utilities/src/helpers';\r\nimport { ComplaintsFormImageDeleteInput, imageDeleteActionDataAction } from '../../actions/complaints-form-image-delete.action';\r\nimport { InvoiceLinesTableComponent, invoiceLines } from '../bremworth-complaints-form/components/table-view/bremworth-invoice-lines-table';\r\nimport { getComplaintInvoiceAsync } from '../../actions/DataActionExtension.g';\r\nimport React from 'react';\r\nimport html2canvas from 'html2canvas';\r\nimport Modal from './components/form-modal';\r\n/**\r\n *\r\n * Contact Form Modules\r\n * Form that a anonymous can use to submit a complaints request.\r\n * @extends {React.Component>}\r\n */\r\nclass BremworthComplaintsForm extends React.Component {\r\n private issueTypeOptions: IOption[] = _varIssueTypeOptions;\r\n // Used as default data\r\n public ComplaintsFormDefaultInputs: IFormItem[] = [\r\n {\r\n id: InputID.invoiceNumber,\r\n type: InputType.SearchBox,\r\n placeHolder: this.props.resources.formSearchBoxPlaceHolder,\r\n label: this.props.resources.formSearchBoxLabel,\r\n additionallabel:\r\n this.props.config.invoiceInstruction !== undefined\r\n ? this.props.config.invoiceInstruction\r\n : 'Enter your invoice number and click search to populate related invoice lines.',\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-25',\r\n helpText: this.props.resources.formSearchBoxHelperText,\r\n maxChars: '20'\r\n },\r\n {\r\n id: InputID.retailerStoreName,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerStoreNamePlaceHolder,\r\n label: this.props.resources.formRetailerStoreNameLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerStoreNameHelpText,\r\n heading: 'Retailer Details'\r\n },\r\n {\r\n id: InputID.retailerContactPerson,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerContactPersonPlaceHolder,\r\n label: this.props.resources.formRetailerContactPersonLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerContactPersonHelpText\r\n },\r\n {\r\n id: InputID.retailerPhone,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerPhonePlaceHolder,\r\n label: this.props.resources.formRetailerPhoneLabel,\r\n value: '',\r\n pattern: '^(?:\\\\s*\\\\d){7,13}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerPhoneHelpText\r\n },\r\n {\r\n id: InputID.retailerEmail1,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerEmail1PlaceHolder,\r\n label: this.props.resources.formRetailerEmail1Label,\r\n value: '',\r\n pattern: '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,17}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerEmail1HelpText\r\n },\r\n {\r\n id: InputID.retailerEmail2,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerEmail2PlaceHolder,\r\n label: this.props.resources.formRetailerEmail2Label,\r\n value: '',\r\n pattern: '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,17}$',\r\n isRequired: false,\r\n customClass: 'width-50 max-width-50',\r\n helpText: this.props.resources.formRetailerEmail2HelpText\r\n },\r\n {\r\n id: InputID.productInvoiceNo,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formProductInvoiceNoPlaceHolder,\r\n label: this.props.resources.formProductInvoiceNoLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-25',\r\n helpText: this.props.resources.formProductInvoiceNoHelpText,\r\n heading: 'Product Details'\r\n },\r\n {\r\n id: InputID.productApproxSODate,\r\n type: InputType.DatePicker,\r\n placeHolder: this.props.resources.formProductInvoiceLinesSODatePlaceHolder,\r\n label: this.props.resources.formProductInvoiceLinesSODate,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-25',\r\n helpText: this.props.resources.formProductInvoiceLinesSODateHelpText,\r\n maxDate: new Date()\r\n },\r\n {\r\n id: InputID.product,\r\n type: InputType.Numeric,\r\n placeHolder: this.props.resources.formProductLabelPlaceHolder,\r\n label: this.props.resources.formProductLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-15',\r\n helpText: this.props.resources.formProductInvoiceNoHelpText,\r\n maxChars: '10'\r\n },\r\n {\r\n id: InputID.colour,\r\n type: InputType.Numeric,\r\n placeHolder: this.props.resources.formColourLabelPlaceHolder,\r\n label: this.props.resources.formColourLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-15',\r\n helpText: this.props.resources.formColourHelpText,\r\n maxChars: '10'\r\n },\r\n {\r\n id: InputID.description,\r\n type: InputType.TextArea,\r\n placeHolder: this.props.resources.formDescriptionPlaceHolder,\r\n label: this.props.resources.formDescriptionLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-15',\r\n helpText: this.props.resources.formDescriptionHelpText,\r\n maxChars: '1000'\r\n },\r\n {\r\n id: InputID.batchNumber,\r\n type: InputType.Numeric,\r\n placeHolder: this.props.resources.formBatchNumberPlaceHolder,\r\n label: this.props.resources.formBatchNumberLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-15',\r\n helpText: this.props.resources.formBatchNumberHelpText,\r\n maxChars: '20'\r\n },\r\n {\r\n id: InputID.rollNumber,\r\n type: InputType.Numeric,\r\n placeHolder: this.props.resources.formRollNumberPlaceHolder,\r\n label: this.props.resources.formRollNumberLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-15',\r\n helpText: this.props.resources.formRollNumberHelpText,\r\n maxChars: '20'\r\n },\r\n {\r\n id: InputID.productConsumerInvoiceValue,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formProductConsumerInvoiceValuePlaceHolder,\r\n label: this.props.resources.formProductConsumerInvoiceValueLabel,\r\n value: '',\r\n pattern: '^[+-]?\\\\d+(\\\\.\\\\d+)?$',\r\n isRequired: false,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductConsumerInvoiceValueHelpText\r\n },\r\n {\r\n id: InputID.productConsumerBalanceOutstanding,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formProductConsumerBalanceOutstandingPlaceHolder,\r\n label: this.props.resources.formProductConsumerBalanceOutstandingLabel,\r\n value: '',\r\n pattern: '^[+-]?\\\\d+(\\\\.\\\\d+)?$',\r\n isRequired: false,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductConsumerBalanceOutstandingHelpText\r\n },\r\n {\r\n id: InputID.productMetresInvolvedToRectify,\r\n type: InputType.Numeric,\r\n placeHolder: this.props.resources.formProductMetresInvolvedToRectifyPlaceHolder,\r\n label: this.props.resources.formProductMetresInvolvedToRectifyLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductMetresInvolvedToRectifyHelpText\r\n },\r\n {\r\n id: InputID.productTotalMetresInstalled,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formProductTotalMetresInstalledPlaceHolder,\r\n label: this.props.resources.formProductTotalMetresInstalledLabel,\r\n value: '',\r\n pattern: '^[+-]?\\\\d+(\\\\.\\\\d+)?$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductTotalMetresInstalledHelpText\r\n },\r\n {\r\n id: InputID.productDateInstallCompleted,\r\n type: InputType.DatePicker,\r\n placeHolder: this.props.resources.formProductDateInstallCompletedPlaceHolder,\r\n label: this.props.resources.formProductDateInstallCompletedLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductDateInstallCompletedHelpText\r\n },\r\n {\r\n id: InputID.productDateIssueReportedToRetailer,\r\n type: InputType.DatePicker,\r\n placeHolder: this.props.resources.formProductDateIssueReportedToRetailerPlaceHolder,\r\n label: this.props.resources.formProductDateIssueReportedToRetailerLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formProductDateIssueReportedToRetailerHelpText\r\n },\r\n {\r\n id: InputID.productReceiveGuide,\r\n type: InputType.Radio,\r\n placeHolder: this.props.resources.formProductReceiveGuidePlaceHolder,\r\n label: this.props.resources.formProductReceiveGuideLabel,\r\n value: '0',\r\n isRequired: true,\r\n customClass: 'width-100 radio-element',\r\n helpText: this.props.resources.formProductReceiveGuideHelpText\r\n },\r\n {\r\n id: InputID.productNewUnderlay,\r\n type: InputType.Radio,\r\n placeHolder: this.props.resources.formProductNewUnderlayPlaceHolder,\r\n label: this.props.resources.formProductNewUnderlayLabel,\r\n value: '0',\r\n isRequired: true,\r\n customClass: 'width-100 radio-element',\r\n helpText: this.props.resources.formProductNewUnderlayHelpText\r\n },\r\n {\r\n id: InputID.productOwnerOccupied,\r\n type: InputType.Radio,\r\n placeHolder: this.props.resources.formProductOwnerOccupiedPlaceHolder,\r\n label: this.props.resources.formProductOwnerOccupiedLabel,\r\n value: '0',\r\n isRequired: true,\r\n customClass: 'width-100 radio-element',\r\n helpText: this.props.resources.formProductOwnerOccupiedHelpText\r\n },\r\n {\r\n id: InputID.productPresent,\r\n type: InputType.Radio,\r\n placeHolder: this.props.resources.formProductPresentPlaceHolder,\r\n label: this.props.resources.formProductPresentLabel,\r\n value: '0',\r\n isRequired: true,\r\n customClass: 'width-100 radio-element',\r\n helpText: this.props.resources.formProductPresentHelpText\r\n },\r\n {\r\n id: InputID.consumerName,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerNamePlaceHolder,\r\n label: this.props.resources.formConsumerNameLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerNameHelpText,\r\n heading: 'Consumer (End User) Details'\r\n },\r\n {\r\n id: InputID.consumerPhone,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerPhonePlaceHolder,\r\n label: this.props.resources.formConsumerPhoneLabel,\r\n value: '',\r\n pattern: '^(?:\\\\s*\\\\d){7,13}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerPhoneHelpText\r\n },\r\n {\r\n id: InputID.consumerStreetAddress1,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerStreetAddress1PlaceHolder,\r\n label: this.props.resources.formConsumerStreetAddress1Label,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerStreetAddress1HelpText\r\n },\r\n {\r\n id: InputID.consumerStreetAddress2,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerStreetAddress2PlaceHolder,\r\n label: this.props.resources.formConsumerStreetAddress2Label,\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerStreetAddress2HelpText\r\n },\r\n {\r\n id: InputID.consumerSuburbTown,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerSuburbTownPlaceHolder,\r\n label: this.props.resources.formConsumerSuburbTownLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerSuburbTownHelpText\r\n },\r\n {\r\n id: InputID.consumerPostcode,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerPostcodePlaceHolder,\r\n label: this.props.resources.formConsumerPostcodeLabel,\r\n value: '',\r\n isRequired: false,\r\n pattern: '^[-,+]{0,1}\\\\d*\\\\.{0,1}\\\\d+$',\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formConsumerPostcodeHelpText\r\n },\r\n {\r\n id: InputID.consumerEmail,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formConsumerEmailPlaceHolder,\r\n label: this.props.resources.formConsumerEmailLabel,\r\n value: '',\r\n pattern: '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,17}$',\r\n isRequired: true,\r\n customClass: 'width-100',\r\n helpText: this.props.resources.formConsumerEmailHelpText\r\n },\r\n {\r\n id: InputID.consumerConcern,\r\n type: InputType.TextArea,\r\n placeHolder: this.props.resources.formConsumerConcernPlaceHolder,\r\n label: this.props.resources.formConsumerConcernLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100',\r\n helpText: this.props.resources.formConsumerConcernHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionBy,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerInspectionByPlaceHolder,\r\n label: this.props.resources.formRetailerInspectionByLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionByHelpText,\r\n heading: 'Retailer Inspection'\r\n },\r\n {\r\n id: InputID.retailerInspectionDate,\r\n type: InputType.DatePicker,\r\n placeHolder: this.props.resources.formRetailerInspectionDatePlaceHolder,\r\n label: this.props.resources.formRetailerInspectionDateLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionDateHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionPhone,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerInspectionPhonePlaceHolder,\r\n label: this.props.resources.formRetailerInspectionPhoneLabel,\r\n value: '',\r\n pattern: '^(?:\\\\s*\\\\d){7,13}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionPhoneHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionEmail,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerInspectionEmailPlaceHolder,\r\n label: this.props.resources.formRetailerInspectionEmailLabel,\r\n value: '',\r\n pattern: '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,17}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionEmailHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionPersonPresent,\r\n type: InputType.TextArea,\r\n placeHolder: this.props.resources.formRetailerInspectionPersonPresentPlaceHolder,\r\n label: this.props.resources.formRetailerInspectionPersonPresentLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100',\r\n helpText: this.props.resources.formRetailerInspectionPersonPresentHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionCarpetLayerName,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerInspectionCarpetLayerNamePlaceHolder,\r\n label: this.props.resources.formRetailerInspectionCarpetLayerNameLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionCarpetLayerNameHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionCarpetLayerPhone,\r\n type: InputType.Text,\r\n placeHolder: this.props.resources.formRetailerInspectionCarpetLayerPhonePlaceHolder,\r\n label: this.props.resources.formRetailerInspectionCarpetLayerPhoneLabel,\r\n value: '',\r\n pattern: '^(?:\\\\s*\\\\d){7,13}$',\r\n isRequired: true,\r\n customClass: 'width-50',\r\n helpText: this.props.resources.formRetailerInspectionCarpetLayerPhoneHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionIssueType,\r\n type: InputType.Select,\r\n optionList: this.issueTypeOptions,\r\n placeHolder: '',\r\n label: this.props.resources.formRetailerInspectionIssueTypeLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100',\r\n helpText: this.props.resources.formRetailerInspectionIssueTypeHelpText\r\n },\r\n {\r\n id: InputID.retailerInspectionRetailerReport,\r\n type: InputType.TextArea,\r\n placeHolder: this.props.resources.formRetailerInspectionRetailerReportPlaceHolder,\r\n label: this.props.resources.formRetailerInspectionRetailerReportLabel,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100',\r\n helpText: this.props.resources.formRetailerInspectionRetailerReportHelpText\r\n },\r\n {\r\n id: InputID.photoUpload1,\r\n type: InputType.File,\r\n placeHolder: this.props.resources.formPhotoUpload1PlaceHolder,\r\n label: this.props.resources.formPhotoUpload1Label,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100 file-element',\r\n helpText: this.props.resources.formPhotoUpload1HelpText,\r\n heading: 'Photos'\r\n },\r\n {\r\n id: InputID.photoUpload2,\r\n type: InputType.File,\r\n placeHolder: this.props.resources.formPhotoUpload2PlaceHolder,\r\n label: this.props.resources.formPhotoUpload2Label,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100 file-element',\r\n helpText: this.props.resources.formPhotoUpload2HelpText,\r\n hideLabel: true\r\n },\r\n {\r\n id: InputID.photoUpload3,\r\n type: InputType.File,\r\n placeHolder: this.props.resources.formPhotoUpload3PlaceHolder,\r\n label: this.props.resources.formPhotoUpload3Label,\r\n value: '',\r\n isRequired: true,\r\n customClass: 'width-100 file-element',\r\n helpText: this.props.resources.formPhotoUpload3HelpText,\r\n hideLabel: true\r\n },\r\n {\r\n id: InputID.photoUpload4,\r\n type: InputType.File,\r\n placeHolder: this.props.resources.formPhotoUpload4PlaceHolder,\r\n label: this.props.resources.formPhotoUpload4Label,\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-100 file-element',\r\n helpText: this.props.resources.formPhotoUpload4HelpText,\r\n hideLabel: true\r\n },\r\n {\r\n id: InputID.photoUpload5,\r\n type: InputType.File,\r\n placeHolder: this.props.resources.formPhotoUpload5PlaceHolder,\r\n label: this.props.resources.formPhotoUpload5Label,\r\n value: '',\r\n isRequired: false,\r\n customClass: 'width-100 file-element',\r\n helpText: this.props.resources.formPhotoUpload5HelpText,\r\n hideLabel: true\r\n }\r\n ];\r\n\r\n private readonly formChildInputReference: React.RefObject = React.createRef();\r\n\r\n private readonly moduleClassName: string = 'ms-complaints-form';\r\n\r\n private needsToReset: boolean = false;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n constructor(props: IBremworthComplaintsFormExtendedProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isReady: false,\r\n formItems: this.props.formItems || this._addedReference(),\r\n hasSubmitErrors: false,\r\n imageID: undefined,\r\n isPushImageFail: false,\r\n isExceedFileSize: false,\r\n pushImageProcessing: false,\r\n checkedValue: '',\r\n isInvoiceLineReady: true,\r\n isInvoiceNoReady: false,\r\n isInvoiceLinesSearchSuccess: undefined,\r\n invoiceLines: [],\r\n noSearchResult: '',\r\n screenshotToImage: null,\r\n selectedinvoiceLines: {\r\n Qty: 0,\r\n SalesPrice: 0,\r\n Amount: 0\r\n },\r\n isModalOpen: false,\r\n modalMessage: ''\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n public openModal = (message: string) => {\r\n this.setState({ isModalOpen: true, modalMessage: message });\r\n };\r\n\r\n public closeModal = () => {\r\n this.setState({ isModalOpen: false });\r\n };\r\n public captureScreenshot = () => {\r\n const className = `.${this.moduleClassName}`;\r\n const targetElement = document.querySelector(className);\r\n if (targetElement instanceof HTMLElement) {\r\n html2canvas(targetElement, {\r\n scale: 2,\r\n scrollX: 0,\r\n scrollY: -window.scrollY\r\n })\r\n .then(canvas => {\r\n const url = canvas.toDataURL('image/jpeg', 1.0);\r\n this.setState({ screenshotToImage: url });\r\n })\r\n .catch(error => {});\r\n }\r\n };\r\n public componentDidMount(): void {\r\n this.formChildInputReference.current?.focus();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IBremworthComplaintsFormExtendedProps, nextState: IComplaintsFormState): boolean {\r\n return !(this.state === nextState && this.props.data === nextProps.data);\r\n }\r\n public invoiceLinesTable(): JSX.Element | string {\r\n const invoiceLines: invoiceLines[] = this.state.invoiceLines;\r\n if (invoiceLines.length === 0) {\r\n return
{this.state.noSearchResult}
;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n //@ts-ignore\r\n public renderModal(): JSX.Element | string {\r\n const { isModalOpen } = this.state;\r\n\r\n if (!isModalOpen) {\r\n return '';\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{'header'}

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

{'message'}

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n const { formItems, invoiceLines, isModalOpen } = this.state;\r\n const { className, heading } = config;\r\n const { formPostSubmitLoadingMessage } = this.props.resources;\r\n const invoiceLinesData: invoiceLines[] = invoiceLines.length > 0 ? invoiceLines : [];\r\n const viewProps = {\r\n ...this.props,\r\n complaintsFormProps: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, className),\r\n id: classnames(this.moduleClassName, className)\r\n },\r\n ContainerWrapper: {\r\n className: `${this.moduleClassName}__container`\r\n },\r\n heading: (\r\n \r\n ),\r\n complaintsForm: this._renderForm(),\r\n formItems,\r\n formModal: ,\r\n invoiceLinesTable: this.state.isInvoiceLinesSearchSuccess && (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle the heading change event.\r\n * @param event - Content Editable Event.\r\n */\r\n public handleHeadingChange = (event: ContentEditableEvent): void => {\r\n this.props.config.heading.text = event.target.value;\r\n };\r\n\r\n private _renderForm(): IBremworthComplaintsFormLocalContact {\r\n const { config, resources } = this.props;\r\n //@ts-ignore\r\n const { hasSubmitErrors, isReady, formItems } = this.state;\r\n // const { hasSubmitErrors, isReady, formItems, formFooterItems } = this.state;\r\n const { fromSubmitButtonLabel, errorMessage } = resources;\r\n //@ts-ignore\r\n const successPageURL =\r\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\r\n getUrlSync('home', this.props.context.actionContext);\r\n\r\n const form = {\r\n FormWrapper: {\r\n className: `${this.moduleClassName}__form `\r\n },\r\n items: renderInputSection(\r\n formItems,\r\n `${this.moduleClassName}__form-item`,\r\n this.needsToReset,\r\n this.state.pushImageProcessing,\r\n this.state.imageID,\r\n this.state.isPushImageFail,\r\n this.state.isExceedFileSize,\r\n this._onInputChange,\r\n this._onInputBlur,\r\n this._onSelectChange,\r\n this._onInvoiceNumberSearch,\r\n this._onFileChange,\r\n this._onFileCancel,\r\n this._onDatePickerChange,\r\n this.state.isInvoiceLineReady,\r\n this.invoiceLinesTable(),\r\n this.state.selectedinvoiceLines,\r\n this.props.resources.formProductInvoiceNoManualEnterLabel\r\n ? this.props.resources.formProductInvoiceNoManualEnterLabel\r\n : 'Bremworth invoice number -Or- Your purchase order ref(Type your invoice number manually)',\r\n this.state.isInvoiceNoReady,\r\n this.state.isInvoiceLinesSearchSuccess\r\n ),\r\n buttons: [\r\n \r\n ],\r\n errorMessage: [hasSubmitErrors && ],\r\n formDescription: config.formDescription && (\r\n \r\n ),\r\n disclaimer: config.disclaimer && (\r\n \r\n )\r\n };\r\n\r\n if (this.needsToReset) {\r\n this.needsToReset = false;\r\n }\r\n\r\n return form;\r\n }\r\n\r\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.id === event.target.name) {\r\n if (item.type === InputType.Text && item.id === InputID.productInvoiceNo) {\r\n this.setState({\r\n isInvoiceLineReady: false\r\n });\r\n }\r\n }\r\n if (item.id === event.target.name) {\r\n if (item.type === InputType.Checkbox) {\r\n // @ts-ignore\r\n const checked = event.target.checked;\r\n item.value = checked ? '1' : '';\r\n } else {\r\n item.value = event.target.value;\r\n }\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n private readonly _onInvoiceNumberSearch = (): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.type === InputType.SearchBox) {\r\n const invoiceNumber = item.value !== '' && item.value.length >= 1 ? item.value : '';\r\n if (invoiceNumber !== '') {\r\n void this.getComplaintInvoice(invoiceNumber);\r\n }\r\n }\r\n });\r\n };\r\n private readonly initinvoiceLines = () => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.id === InputID.description) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.productInvoiceNo) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.productConsumerInvoiceValue) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.product) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.colour) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.batchNumber) {\r\n item.value = '';\r\n }\r\n if (item.id === InputID.rollNumber) {\r\n item.value = '';\r\n }\r\n });\r\n this.setState({\r\n selectedinvoiceLines: {\r\n InvoiceId: '',\r\n OrigSalesId: '',\r\n ItemId: '',\r\n InventColorId: '',\r\n InventBatchId: '',\r\n InventSerialId: '',\r\n Name: '',\r\n EcoResCategoryName: '',\r\n Qty: 0,\r\n SalesPrice: 0,\r\n Amount: 0\r\n }\r\n });\r\n };\r\n private readonly getComplaintInvoice = async (invoiceNumber: string): Promise => {\r\n const {\r\n config,\r\n context: { actionContext }\r\n } = this.props;\r\n const customer = this.props.data.accountInformation && this.props.data.accountInformation.result?.AccountNumber;\r\n const newForm = this.state.formItems;\r\n try {\r\n if (customer) {\r\n const response = await getComplaintInvoiceAsync(\r\n { callerContext: actionContext },\r\n customer,\r\n invoiceNumber,\r\n config.invoiceSearchInstruction ? config.invoiceSearchInstruction : 400\r\n );\r\n if (response) {\r\n const invoiceLines = [...response];\r\n if (invoiceLines.length === 0) {\r\n this.initinvoiceLines();\r\n this.setState({\r\n noSearchResult: config.invoiceSearchNoResultFound ? config.invoiceSearchNoResultFound : 'no data',\r\n isInvoiceNoReady: false,\r\n isInvoiceLinesSearchSuccess: false,\r\n isInvoiceLineReady: true,\r\n invoiceLines: invoiceLines,\r\n formItems: newForm\r\n });\r\n } else {\r\n this.setState({ invoiceLines: invoiceLines, isInvoiceLineReady: true, isInvoiceLinesSearchSuccess: true });\r\n }\r\n }\r\n }\r\n await Promise.resolve();\r\n return;\r\n } catch (error) {\r\n if (error?.error?.name === 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed') {\r\n return Promise.reject();\r\n }\r\n\r\n return Promise.reject();\r\n }\r\n };\r\n private readonly _onFileChange = (event: React.ChangeEvent): void => {\r\n this.setState({ isPushImageFail: false, isExceedFileSize: false });\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.type === 'file' && item.id === event.target.id) {\r\n const fileJson = this._getBase64(event.target.files, item.id);\r\n item.value = fileJson;\r\n item.value === '' ? (item.hasError = true) : (item.hasError = false);\r\n } else if (item.id === event.target.id) {\r\n item.value = event.target.value;\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private _getBase64(files: FileList | null, itemId: string): any {\r\n if (files === null) {\r\n return null;\r\n }\r\n const allFiles: any[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n if (typeof reader.result !== 'string') {\r\n return;\r\n }\r\n const fileInfo = {\r\n name: file.name,\r\n base64: reader.result.split(',').pop()\r\n };\r\n allFiles.push(fileInfo);\r\n };\r\n reader.onloadend = () => {\r\n if (typeof reader.result !== 'string') {\r\n return;\r\n }\r\n if (file.size / 1024 / 1024 > 4) {\r\n this.setState({ isExceedFileSize: true });\r\n const currentImage = getImageNumByID(itemId);\r\n this._resetFileUpload(+currentImage);\r\n return;\r\n }\r\n this._handleImagePush(reader.result.split(',').pop(), itemId);\r\n };\r\n }\r\n return allFiles;\r\n }\r\n\r\n private readonly _handleImagePush = (imageBase64: string | undefined, itemId: string): void => {\r\n const currentImage = getImageNumByID(itemId);\r\n if (!this.state.imageID) {\r\n // call API firstly.\r\n this._pushImage(imageBase64, +currentImage, '', itemId);\r\n } else {\r\n // Call API from the second time.\r\n this._pushImage(imageBase64, +currentImage, this.state.imageID, itemId);\r\n }\r\n };\r\n\r\n private readonly _pushImage = async (\r\n imageBase64: string | undefined,\r\n imageNum: number,\r\n ImageId: string,\r\n itemId: string\r\n ): Promise => {\r\n if (imageBase64 === undefined) {\r\n return;\r\n }\r\n\r\n this.setState({ pushImageProcessing: true });\r\n // Call API.\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n const input = new ComplaintsFormImagePushInput(imageBase64, imageNum, ImageId);\r\n const data = await imagePushActionDataAction(input, actionContext).catch(error => {\r\n this.setState({ pushImageProcessing: false, isPushImageFail: true });\r\n this._resetFileUpload(imageNum);\r\n });\r\n if (data && data.id) {\r\n this.setState({ imageID: data.id });\r\n }\r\n\r\n // Pushed done.\r\n this.setState({ pushImageProcessing: false });\r\n this.captureScreenshot();\r\n };\r\n\r\n private readonly _onFileCancel = (event: React.MouseEvent): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.type === 'file' && item.id === event.currentTarget.id.replace('-cancel', '')) {\r\n item.value = '';\r\n (document.getElementById(event.currentTarget.id.replace('-cancel', '')) as HTMLInputElement).value = '';\r\n this._deleteImage(item.id);\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private readonly _deleteImage = async (itemId: string): Promise => {\r\n if (itemId === undefined || !this.state.imageID) {\r\n return;\r\n }\r\n\r\n const imageNum = getImageNumByID(itemId);\r\n this.setState({ pushImageProcessing: true });\r\n // Call API.\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n\r\n const input = new ComplaintsFormImageDeleteInput(+imageNum, this.state.imageID);\r\n await imageDeleteActionDataAction(input, actionContext);\r\n\r\n // Delete done.\r\n this.setState({ pushImageProcessing: false });\r\n };\r\n\r\n private readonly _onInputBlur = (event: React.ChangeEvent): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.id === event.target.name) {\r\n if (item.type === InputType.Text && item.id === InputID.productInvoiceNo) {\r\n this.setState({\r\n isInvoiceLineReady: false\r\n });\r\n }\r\n }\r\n if (item.id === event.target.id) {\r\n // Check required.\r\n if (item.isRequired && !event.target.value) {\r\n item.hasError = true;\r\n item.errorMessage = format(this.props.resources.requiredFieldMissingError, item.label);\r\n } else {\r\n if (event.target.value && item.pattern !== undefined && event.target.value.match(item.pattern) === null) {\r\n item.hasError = true;\r\n item.errorMessage = format(this.props.resources.invalidDataFieldError, item.label);\r\n } else {\r\n item.hasError = false;\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private readonly _onDatePickerChange = (id: string | undefined, date?: Date | undefined | null): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.id === id) {\r\n item.value = date ? onFormatDate(date) : '';\r\n // Check required and pattern.\r\n if (item.isRequired && !date) {\r\n item.hasError = true;\r\n item.errorMessage = format(this.props.resources.requiredFieldMissingError, item.label);\r\n } else {\r\n item.hasError = false;\r\n }\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private readonly _onSelectChange = (event: React.ChangeEvent): void => {\r\n const newForm = this.state.formItems;\r\n\r\n newForm.forEach(item => {\r\n if (item.id === event.target.id) {\r\n item.optionList &&\r\n item.optionList.forEach(sub_item => {\r\n sub_item.selected = sub_item.label === event.target.value;\r\n if (item.isRequired && event.target.value === 'Select type') {\r\n item.value = '';\r\n item.hasError = true;\r\n item.errorMessage = format(this.props.resources.requiredFieldMissingError, item.label);\r\n } else {\r\n item.hasError = false;\r\n item.value = event.target.value;\r\n }\r\n });\r\n }\r\n });\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private _addedReference(): IFormItem[] {\r\n const {\r\n data: { accountInformation }\r\n } = this.props;\r\n\r\n const newFormFields = this.ComplaintsFormDefaultInputs;\r\n // Init store name - START.\r\n // newFormFields[0].value = accountInformation.result?.Name as string;\r\n // Init store name - END.\r\n\r\n // Init phone - START.\r\n // newFormFields[2].value = accountInformation.result?.Phone as string;\r\n // Init phone - END.\r\n\r\n // Init email1 - START.\r\n newFormFields[4].value = accountInformation.result?.Email as string;\r\n // Init email1 - END.\r\n\r\n newFormFields[38].fieldInputReference = this.formChildInputReference;\r\n // Init option - START.\r\n const options: IOption[] = [];\r\n options.push(_varNoneOptions);\r\n\r\n this.props.data.issueTypeEntity.result?.map(type => {\r\n options.push({ value: `${type.RecordId}`, label: `${type.Description}` });\r\n });\r\n newFormFields[38].optionList = options;\r\n // Init option - END.\r\n return newFormFields;\r\n }\r\n\r\n private _resetFileUpload = (imageNum: number): void => {\r\n const newForm = this.state.formItems;\r\n newForm.forEach(item => {\r\n if (item.type === 'file' && item.id === `photo-upload${imageNum}`) {\r\n item.value = '';\r\n (document.getElementById(`photo-upload${imageNum}`) as HTMLInputElement).value = '';\r\n }\r\n });\r\n\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n };\r\n\r\n private readonly _isFormReady = (): boolean => {\r\n // const { formItems, formFooterItems } = this.state;\r\n const { formItems } = this.state;\r\n let isValid: boolean = true;\r\n\r\n for (const currentInput of formItems) {\r\n if (currentInput.isRequired) {\r\n if (currentInput.value === undefined || currentInput.value === '') {\r\n isValid = false;\r\n }\r\n }\r\n if (currentInput.pattern !== undefined && currentInput.value && currentInput.value.match(currentInput.pattern) === null) {\r\n isValid = false;\r\n }\r\n }\r\n\r\n return isValid;\r\n };\r\n private readonly _invoiceLinesTableInput = (items: invoiceLines[]) => {\r\n const newForm = this.state.formItems;\r\n items.map((salesOrderInvoiceLine, index) => {\r\n this.setState({\r\n selectedinvoiceLines: {\r\n InvoiceId: salesOrderInvoiceLine.InvoiceId,\r\n OrigSalesId: salesOrderInvoiceLine.OrigSalesId,\r\n ItemId: salesOrderInvoiceLine.ItemId,\r\n InventColorId: salesOrderInvoiceLine.InventColorId,\r\n InventBatchId: salesOrderInvoiceLine.InventBatchId,\r\n InventSerialId: salesOrderInvoiceLine.InventSerialId,\r\n Name: salesOrderInvoiceLine.Name,\r\n EcoResCategoryName: salesOrderInvoiceLine.EcoResCategoryName,\r\n Qty: salesOrderInvoiceLine.Qty,\r\n SalesPrice: salesOrderInvoiceLine.SalesPrice,\r\n Amount: salesOrderInvoiceLine.Amount\r\n }\r\n });\r\n newForm.forEach(item => {\r\n if (item.id === InputID.description) {\r\n item.value = salesOrderInvoiceLine.Name ? salesOrderInvoiceLine.Name : '';\r\n }\r\n if (item.id === InputID.productInvoiceNo) {\r\n item.value = salesOrderInvoiceLine?.InvoiceId ? salesOrderInvoiceLine?.InvoiceId : '';\r\n }\r\n if (item.id === InputID.productConsumerInvoiceValue) {\r\n if (salesOrderInvoiceLine?.Amount && salesOrderInvoiceLine?.Amount > 0) {\r\n item.value = salesOrderInvoiceLine?.Amount.toString();\r\n }\r\n }\r\n if (item.id === InputID.product) {\r\n item.value = salesOrderInvoiceLine?.ItemId ? salesOrderInvoiceLine?.ItemId : '';\r\n }\r\n if (item.id === InputID.colour) {\r\n item.value = salesOrderInvoiceLine?.InventColorId ? salesOrderInvoiceLine?.InventColorId : '';\r\n }\r\n if (item.id === InputID.batchNumber) {\r\n item.value = salesOrderInvoiceLine?.InventBatchId ? salesOrderInvoiceLine?.InventBatchId : '';\r\n }\r\n if (item.id === InputID.rollNumber) {\r\n item.value = salesOrderInvoiceLine.InventSerialId ? salesOrderInvoiceLine.InventSerialId : '';\r\n }\r\n });\r\n });\r\n };\r\n private readonly _onInvoiceLinesTableInputChange = (event: React.ChangeEvent) => {\r\n const eventValue = event.target.value;\r\n const invoiceSalesID = eventValue.split('-');\r\n const invoiceLines: invoiceLines[] = this.state.invoiceLines;\r\n const newForm = this.state.formItems;\r\n if (invoiceSalesID) {\r\n const items = invoiceLines.filter((item, index) => index === parseInt(invoiceSalesID[1], 10)).flat();\r\n if (items !== undefined && items) {\r\n this._invoiceLinesTableInput(items);\r\n }\r\n }\r\n this.setState({\r\n checkedValue: eventValue,\r\n isInvoiceLineReady: false,\r\n formItems: newForm\r\n });\r\n };\r\n\r\n private readonly _onInvoiceLinesTableInputBlur = (event: React.ChangeEvent) => {\r\n const eventValue = event.target.value;\r\n const invoiceSalesID = eventValue.split('-');\r\n const invoiceLines: invoiceLines[] = this.state.invoiceLines;\r\n const newForm = this.state.formItems;\r\n if (invoiceSalesID) {\r\n const items = invoiceLines.filter((item, index) => index === parseInt(invoiceSalesID[1], 10)).flat();\r\n if (items !== undefined && items) {\r\n this._invoiceLinesTableInput(items);\r\n }\r\n }\r\n this.setState({\r\n checkedValue: eventValue,\r\n isInvoiceLineReady: false,\r\n formItems: newForm\r\n });\r\n };\r\n private readonly _onSubmit = (_event: React.MouseEvent) => {\r\n const newForm = this.state.formItems;\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n const { screenshotToImage } = this.state;\r\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrors\r\n this.setState({\r\n isReady: this._isFormReady(),\r\n formItems: newForm,\r\n hasSubmitErrors: false\r\n });\r\n if (!this.state.imageID) {\r\n return;\r\n }\r\n //@ts-ignore\r\n const successPageURL =\r\n (this.props.config.confirmationLink &&\r\n this.props.config.confirmationLink.linkUrl &&\r\n this.props.config.confirmationLink.linkUrl.destinationUrl) ||\r\n getUrlSync('home', this.props.context.actionContext);\r\n this.setState({ isReady: false });\r\n this.openModal('Your operation was successful!');\r\n // Check for matching id and if not empty\r\n const rd_storeName = this._getItem(InputID.retailerStoreName);\r\n const rd_contactPerson = this._getItem(InputID.retailerContactPerson);\r\n const rd_phone = this._getItem(InputID.retailerPhone);\r\n const rd_emailAddress = this._getItem(InputID.retailerEmail1);\r\n const rd_emailAddress2 = this._getItem(InputID.retailerEmail2);\r\n const pd_invoice = this._getItem(InputID.productInvoiceNo);\r\n const pd_customerInvoiceValue = this._getItem(InputID.productConsumerInvoiceValue);\r\n const pd_product = this._getItem(InputID.product);\r\n const pd_color = this._getItem(InputID.colour);\r\n const pd_rollNumber = '';\r\n // const pd_invoiceDate = '';\r\n //iHelp: 498214\r\n const pd_invoiceDate = this._getItem(InputID.productApproxSODate);\r\n const pd_consumerBalance = this._getItem(InputID.productConsumerBalanceOutstanding);\r\n const pd_metersInvolvedToRectify = this._getItem(InputID.productMetresInvolvedToRectify);\r\n const pd_totalMetersInstalled = this._getItem(InputID.productTotalMetresInstalled);\r\n const pd_dateInstalled = this._getItem(InputID.productDateInstallCompleted);\r\n const pd_dateIssueReported = this._getItem(InputID.productDateIssueReportedToRetailer);\r\n const pd_consumersReceiveMaintenance = this._getItem(InputID.productReceiveGuide);\r\n const pd_isCarpetInstalled = this._getItem(InputID.productNewUnderlay);\r\n const pd_isPropertyOwner = this._getItem(InputID.productOwnerOccupied);\r\n const pd_wishOurInspection = this._getItem(InputID.productPresent);\r\n const cd_Name = this._getItem(InputID.consumerName);\r\n const cd_Phone = this._getItem(InputID.consumerPhone);\r\n const cd_streetAddressPrimary = this._getItem(InputID.consumerStreetAddress1);\r\n const cd_streetAddressSecondary = this._getItem(InputID.consumerStreetAddress2);\r\n const cd_suburb = this._getItem(InputID.consumerSuburbTown);\r\n const cd_postCode = this._getItem(InputID.consumerPostcode);\r\n const cd_emailAddress = this._getItem(InputID.consumerEmail);\r\n const cd_issueRaisedByConcern = this._getItem(InputID.consumerConcern);\r\n const rid_inspectedBy = this._getItem(InputID.retailerInspectionBy);\r\n const rid_inspectionDate = this._getItem(InputID.retailerInspectionDate);\r\n const rid_retailerInspectionPhone = this._getItem(InputID.retailerInspectionPhone);\r\n const rid_retailerInspectionEmail = this._getItem(InputID.retailerInspectionEmail);\r\n const rid_personRetailerInspection = this._getItem(InputID.retailerInspectionPersonPresent);\r\n const rid_carpetLayerName = this._getItem(InputID.retailerInspectionCarpetLayerName);\r\n const rid_carpetLayerPhone = this._getItem(InputID.retailerInspectionCarpetLayerPhone);\r\n const rid_issueType = this._getItem(InputID.retailerInspectionIssueType);\r\n const rid_retailerReport = this._getItem(InputID.retailerInspectionRetailerReport);\r\n const pd_serial = this._getItem(InputID.rollNumber);\r\n const pd_batch = this._getItem(InputID.batchNumber);\r\n const pd_invoiceName = this._getItem(InputID.description);\r\n const pdf = screenshotToImage;\r\n void DataActionExtension.contactUsAsync(\r\n {\r\n callerContext: actionContext\r\n },\r\n (rd_storeName && rd_storeName.value) || '',\r\n (rd_contactPerson && rd_contactPerson.value) || '',\r\n (rd_phone && rd_phone.value) || '',\r\n (rd_emailAddress && rd_emailAddress.value) || '',\r\n (rd_emailAddress2 && rd_emailAddress2.value) || '',\r\n (pd_invoice && pd_invoice.value) || '',\r\n pd_customerInvoiceValue ? +pd_customerInvoiceValue.value : 0,\r\n (pd_product && pd_product.value) || '',\r\n (pd_color && pd_color.value) || '',\r\n (pd_rollNumber && pd_rollNumber) || '',\r\n (pd_invoiceDate && pd_invoiceDate.value) || '',\r\n pd_consumerBalance ? +pd_consumerBalance.value : 0,\r\n pd_metersInvolvedToRectify ? +pd_metersInvolvedToRectify.value : 0,\r\n pd_totalMetersInstalled ? +pd_totalMetersInstalled.value : 0,\r\n (pd_dateInstalled && pd_dateInstalled.value) || '',\r\n (pd_dateIssueReported && pd_dateIssueReported.value) || '',\r\n pd_consumersReceiveMaintenance ? +pd_consumersReceiveMaintenance.value : 0,\r\n pd_isCarpetInstalled ? +pd_isCarpetInstalled.value : 0,\r\n pd_isPropertyOwner ? +pd_isPropertyOwner.value : 0,\r\n pd_wishOurInspection ? +pd_wishOurInspection.value : 0,\r\n (cd_Name && cd_Name.value) || '',\r\n (cd_Phone && cd_Phone.value) || '',\r\n (cd_streetAddressPrimary && cd_streetAddressPrimary.value) || '',\r\n (cd_streetAddressSecondary && cd_streetAddressSecondary.value) || '',\r\n (cd_suburb && cd_suburb.value) || '',\r\n (cd_postCode && cd_postCode.value) || '',\r\n (cd_emailAddress && cd_emailAddress.value) || '',\r\n (cd_issueRaisedByConcern && cd_issueRaisedByConcern.value) || '',\r\n (rid_inspectedBy && rid_inspectedBy.value) || '',\r\n (rid_inspectionDate && rid_inspectionDate.value) || '',\r\n (rid_retailerInspectionPhone && rid_retailerInspectionPhone.value) || '',\r\n (rid_retailerInspectionEmail && rid_retailerInspectionEmail.value) || '',\r\n (rid_personRetailerInspection && rid_personRetailerInspection.value) || '',\r\n (rid_carpetLayerName && rid_carpetLayerName.value) || '',\r\n (rid_carpetLayerPhone && rid_carpetLayerPhone.value) || '',\r\n rid_issueType ? +rid_issueType.value : 0,\r\n (rid_retailerReport && rid_retailerReport.value) || '',\r\n this.state.imageID,\r\n (pd_serial && pd_serial.value) || '',\r\n (pd_batch && pd_batch.value) || '',\r\n (pd_invoiceName && pd_invoiceName.value) || '',\r\n (pdf && pdf) || ''\r\n )\r\n .then(response => {\r\n if (response) {\r\n if (response.id !== '') {\r\n window.location.href = successPageURL ?? '';\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n // Handle errors here\r\n this.closeModal();\r\n this.setState({ isReady: true });\r\n console.error('Error:', error);\r\n })\r\n .finally(() => {\r\n this.closeModal();\r\n this.setState({ isReady: false });\r\n });\r\n };\r\n\r\n private readonly _getItem = (id: string) => {\r\n return this.state.formItems.find(item => {\r\n return item.id === id && item.value !== '';\r\n });\r\n };\r\n}\r\n\r\nexport default BremworthComplaintsForm;\r\n","import { IComplaintsFormItem, IFormItem, InputID } from '../model/model';\r\nimport React from 'react';\r\nimport classnames from 'classnames';\r\nimport {\r\n FormLabel,\r\n FormError,\r\n FormCheckbox,\r\n FormSelect,\r\n FormInput,\r\n FormRadio,\r\n FormFileUpload,\r\n FormDatePicker,\r\n FormSearchBoxInput\r\n} from '../components';\r\nimport { getImageNumByID } from '../../../utilities/src/helpers';\r\nimport { invoiceLines } from '../components/table-view';\r\n\r\nexport const renderInputSection = (\r\n inputs: IFormItem[],\r\n className: string,\r\n needToReset: boolean,\r\n pushImageProcessing: boolean,\r\n imageId: string | undefined,\r\n isPushImageFail: boolean,\r\n isExceedFileSize: boolean,\r\n onInputChange: (event: React.ChangeEvent) => void,\r\n onInputBlur: (event: React.ChangeEvent) => void,\r\n onSelectChange: (event: React.ChangeEvent) => void,\r\n onInvoiceNumberSearch: () => void,\r\n onFileChange?: (event: React.ChangeEvent) => void,\r\n onFileCancel?: (event: React.MouseEvent) => void,\r\n onDatePickerChange?: (id: string | undefined, date?: Date | undefined | null) => void,\r\n isInvoiceLineReady?: boolean,\r\n invoiceLinesTable?: React.ReactNode,\r\n selectedinvoiceLines?: invoiceLines,\r\n formProductInvoiceNoManualEnterLabel?: string,\r\n isInvoiceNoReady?: boolean,\r\n isInvoiceLinesSearchSuccess?: boolean | undefined\r\n): IComplaintsFormItem[] => {\r\n return inputs.map(element => {\r\n const {\r\n id,\r\n type,\r\n placeHolder,\r\n hasError,\r\n errorMessage,\r\n label,\r\n maxChars,\r\n isRequired,\r\n pattern,\r\n customClass,\r\n value,\r\n optionList,\r\n fieldInputReference,\r\n fieldSelectReference,\r\n fieldDatePickerReference,\r\n helpText,\r\n heading,\r\n multiple,\r\n hideLabel,\r\n additionallabel,\r\n //iHelp: 498214,\r\n maxDate\r\n } = element;\r\n const dateVal = new Date(value);\r\n\r\n let _uploadFail;\r\n let _exceedFileSize;\r\n let labelCustom: string;\r\n labelCustom = label;\r\n if (type === 'file') {\r\n if (isPushImageFail) {\r\n _uploadFail = {'Image upload fail'};\r\n }\r\n if (isExceedFileSize) {\r\n _exceedFileSize = {'File is too large. Please select file less than 4MB.'};\r\n }\r\n }\r\n if (\r\n id === InputID.productInvoiceNo &&\r\n isInvoiceLineReady !== undefined &&\r\n isInvoiceLineReady &&\r\n isInvoiceLinesSearchSuccess !== undefined\r\n ) {\r\n if (formProductInvoiceNoManualEnterLabel) {\r\n labelCustom = formProductInvoiceNoManualEnterLabel;\r\n }\r\n }\r\n const _label = (\r\n <>\r\n {_uploadFail}\r\n {_exceedFileSize}\r\n \r\n \r\n );\r\n const baseFooterItem: IComplaintsFormItem = {\r\n wrapper: {\r\n className: classnames(className, `${className}-${id}`, customClass, { required: hideLabel !== true && isRequired })\r\n },\r\n id,\r\n label: hideLabel !== true ? _label : '',\r\n heading: heading &&

{heading}

,\r\n errorMessage: hasError && \r\n };\r\n if (type === 'checkbox') {\r\n baseFooterItem.label = null;\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else if (type === 'radio') {\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else if (type === 'file') {\r\n const currentImage = getImageNumByID(id);\r\n let isDisabled = true;\r\n if (currentImage === '1' && !imageId) {\r\n isDisabled = false;\r\n }\r\n if (imageId) {\r\n isDisabled = false;\r\n }\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else if (type === 'select') {\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else if (type === 'date-picker') {\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else if (type === 'search') {\r\n baseFooterItem.input = (\r\n \r\n );\r\n } else {\r\n baseFooterItem.input = (\r\n \r\n );\r\n }\r\n\r\n return baseFooterItem;\r\n });\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IBusinessComplaintsFormViewProps, IComplaintsFormItem } from './model/model';\r\n\r\nconst FormItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {input}\r\n {errorMessage}\r\n \r\n );\r\n};\r\n\r\nconst BremworthComplaintsFormView: React.FC = props => {\r\n const { complaintsFormProps, ContainerWrapper, heading, complaintsForm, formModal } = props;\r\n\r\n // const { FormWrapper, buttons, items, footerItems, errorMessage, disclaimer, formDescription } = complaintsForm;\r\n const { FormWrapper, buttons, items, errorMessage, disclaimer, formDescription, canvas } = complaintsForm;\r\n // const _footerItems = footerItems as [];\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {formDescription}\r\n {canvas}\r\n {formModal}\r\n {items &&\r\n items.map((item: IComplaintsFormItem) => {\r\n return (\r\n <>\r\n {item.heading}\r\n \r\n \r\n );\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BremworthComplaintsFormView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { InputType } from '../model/model';\r\n\r\nimport { DatePicker, IDatePicker, mergeStyleSets, defaultDatePickerStrings } from '@fluentui/react';\r\n\r\nconst styles = mergeStyleSets({\r\n root: { selectors: { '> *': { marginBottom: 15 } } },\r\n control: { maxWidth: 300, marginBottom: 15 }\r\n});\r\n\r\nexport const onFormatDate = (date?: Date): string => {\r\n try {\r\n if (!date) {\r\n return '';\r\n }\r\n const day = `0${date.getDate()}`.slice(-2);\r\n const month = `0${date.getMonth() + 1}`.slice(-2);\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n } catch (error) {\r\n console.error('Error in onFormatDate:', error);\r\n return '';\r\n }\r\n};\r\nexport interface IFormDatePickerProps {\r\n id?: string;\r\n type: InputType;\r\n placeHolder?: string;\r\n value?: Date;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n isRequired: boolean;\r\n fieldReference?: React.RefObject;\r\n helpText?: string | RichText;\r\n onChange?(id: string | undefined, date?: Date | undefined | null): void;\r\n index?: number;\r\n isInvoiceLineReady?: boolean;\r\n maxDate?: Date;\r\n}\r\n\r\nexport const FormDatePicker: React.FC = ({\r\n id,\r\n type,\r\n placeHolder,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n isRequired,\r\n onChange,\r\n fieldReference,\r\n helpText,\r\n index,\r\n isInvoiceLineReady,\r\n maxDate\r\n}) => {\r\n const onChangeCallback = (id: string | undefined, date: Date | undefined | null): void => {\r\n if (onChange) {\r\n onChange(id, date);\r\n }\r\n };\r\n\r\n const onParseDateFromString = React.useCallback(\r\n (newValue: string): Date | null => {\r\n if (!newValue) {\r\n return null;\r\n }\r\n const previousValue = value || new Date();\r\n const newValueParts = (newValue || '').trim().split('/');\r\n const day = newValueParts.length > 0 ? Math.max(1, Math.min(31, parseInt(newValueParts[0], 10))) : previousValue.getDate();\r\n const month =\r\n newValueParts.length > 1 ? Math.max(1, Math.min(12, parseInt(newValueParts[1], 10))) - 1 : previousValue.getMonth();\r\n let year = newValueParts.length > 2 ? parseInt(newValueParts[2], 10) : previousValue.getFullYear();\r\n if (year < 100) {\r\n year += previousValue.getFullYear() - (previousValue.getFullYear() % 100);\r\n }\r\n return new Date(year, month, day);\r\n },\r\n [value]\r\n );\r\n\r\n return (\r\n
\r\n {\r\n onChangeCallback(id, date);\r\n }}\r\n formatDate={onFormatDate}\r\n parseDateFromString={onParseDateFromString}\r\n aria-required={isRequired}\r\n strings={defaultDatePickerStrings}\r\n disabled={isInvoiceLineReady !== undefined ? isInvoiceLineReady : false}\r\n maxDate={maxDate}\r\n />\r\n {helpText && {helpText}}\r\n
\r\n );\r\n};\r\n\r\nexport default FormDatePicker;\r\n","import { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { OptionHTMLAttributes } from 'react';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\nimport { RichText } from '@msdyn365-commerce/core';\r\nimport { IBremworthComplaintsFormProps } from '../bremworth-complaints-form.props.autogenerated';\r\nimport { IBremworthComplaintsFormData } from '../bremworth-complaints-form.data';\r\nimport { IDatePicker } from '@fluentui/react';\r\nimport { invoiceLines } from '../components/table-view';\r\n\r\nexport interface IBremworthComplaintsFormExtendedProps extends IBremworthComplaintsFormProps {\r\n formItems?: IFormItem[];\r\n}\r\n\r\nexport interface IComplaintsFormItem {\r\n wrapper: INodeProps;\r\n id: string;\r\n label: React.ReactNode;\r\n heading: React.ReactNode;\r\n errorMessage: React.ReactNode;\r\n input?: React.ReactNode;\r\n index?: number;\r\n}\r\n\r\nexport interface IOption {\r\n label: string;\r\n value: string;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface IComplaintsFormState {\r\n isReady: boolean;\r\n formItems: IFormItem[];\r\n hasSubmitErrors: boolean;\r\n imageID: string | undefined;\r\n isPushImageFail: boolean;\r\n isExceedFileSize: boolean;\r\n pushImageProcessing: boolean;\r\n checkedValue: string;\r\n isInvoiceLineReady: boolean;\r\n invoiceLines: invoiceLines[];\r\n noSearchResult: RichText;\r\n selectedinvoiceLines: invoiceLines;\r\n isInvoiceNoReady: boolean;\r\n isInvoiceLinesSearchSuccess: boolean | undefined;\r\n screenshotToImage: string | null;\r\n isModalOpen: boolean;\r\n modalMessage: string;\r\n}\r\n\r\nexport interface IBremworthComplaintsFormLocalContact {\r\n FormWrapper: INodeProps;\r\n items: IComplaintsFormItem[];\r\n buttons: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n formDescription: React.ReactNode;\r\n disclaimer: React.ReactNode;\r\n canvas?: React.ReactNode;\r\n}\r\n\r\nexport interface IBusinessComplaintsFormViewProps {\r\n className: string;\r\n complaintsFormProps: IModuleProps;\r\n ContainerWrapper: INodeProps;\r\n heading: React.ReactNode;\r\n complaintsForm: IBremworthComplaintsFormLocalContact;\r\n formItems: IFormItem[];\r\n invoiceLinesTable: React.ReactNode;\r\n formModal: React.ReactNode;\r\n}\r\n\r\nexport interface IFormItem {\r\n id: string;\r\n type: InputType;\r\n hasError?: boolean;\r\n errorMessage?: string;\r\n placeHolder?: string;\r\n multiple?: boolean;\r\n label: string;\r\n value: string;\r\n optionList?: OptionHTMLAttributes[];\r\n maxChars?: string;\r\n isRequired: boolean;\r\n pattern?: string;\r\n address?: Address;\r\n customClass?: string;\r\n helpText?: string | RichText;\r\n heading?: string;\r\n fieldInputReference?: React.RefObject;\r\n fieldSelectReference?: React.RefObject;\r\n fieldDatePickerReference?: React.RefObject;\r\n hideLabel?: boolean;\r\n additionallabel?: string;\r\n maxLength?: number;\r\n invoiceLinesTable?: React.ReactNode;\r\n //iHelp: 498214,\r\n maxDate?: Date;\r\n}\r\n\r\nexport enum InputType {\r\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\r\n Select = 'select',\r\n File = 'file',\r\n Text = 'text',\r\n TextArea = 'textarea',\r\n Checkbox = 'checkbox',\r\n Radio = 'radio',\r\n Heading = 'heading',\r\n DatePicker = 'date-picker',\r\n SearchBox = 'search',\r\n Numeric = 'number'\r\n}\r\n\r\nexport enum InputID {\r\n heading = 'heading',\r\n retailerStoreName = 'retialer-store-name',\r\n retailerContactPerson = 'retialer-contact-person',\r\n retailerPhone = 'retialer-phone',\r\n retailerEmail1 = 'retialer-email1',\r\n retailerEmail2 = 'retialer-email2',\r\n productInvoiceNo = 'product-invoice-no',\r\n productConsumerInvoiceValue = 'product-consumer-invoice-value',\r\n productConsumerBalanceOutstanding = 'product-consumer-balance-outstanding',\r\n productMetresInvolvedToRectify = 'product-metres-involved-to-rectify',\r\n productTotalMetresInstalled = 'product-total-metres-installed',\r\n productDateInstallCompleted = 'product-date-install-completed',\r\n productDateIssueReportedToRetailer = 'product-date-issue-reported-to-retailer',\r\n productReceiveGuide = 'product-receive-guide',\r\n productNewUnderlay = 'product-newunderlay',\r\n productOwnerOccupied = 'product-owner-occupied',\r\n productPresent = 'product-present',\r\n consumerName = 'consumer-name',\r\n consumerPhone = 'consumerPhone',\r\n consumerStreetAddress1 = 'consumer-street-address1',\r\n consumerStreetAddress2 = 'consumer-street-address2',\r\n consumerSuburbTown = 'consumer-suburb-town',\r\n consumerPostcode = 'consumer-postcode',\r\n consumerEmail = 'consumer-email',\r\n consumerConcern = 'consumer-concern',\r\n retailerInspectionBy = 'retailer-inspection-by',\r\n retailerInspectionDate = 'retailer-inspection-date',\r\n retailerInspectionPhone = 'retailer-inspection-phone',\r\n retailerInspectionEmail = 'retailer-inspection-email',\r\n retailerInspectionPersonPresent = 'retailer-inspection-personpresent',\r\n retailerInspectionCarpetLayerName = 'retailer-inspection-carpet-layer-name',\r\n retailerInspectionCarpetLayerPhone = 'retailer-inspection-carpet-layer-phone',\r\n retailerInspectionIssueType = 'retailer-inspection-issue-type',\r\n retailerInspectionRetailerReport = 'retailer-inspection-retailer-report',\r\n photoUpload1 = 'photo-upload1',\r\n photoUpload2 = 'photo-upload2',\r\n photoUpload3 = 'photo-upload3',\r\n photoUpload4 = 'photo-upload4',\r\n photoUpload5 = 'photo-upload5',\r\n invoiceNumber = 'invoice-number',\r\n product = 'product',\r\n colour = 'colour',\r\n description = 'description',\r\n batchNumber = 'batch-number',\r\n rollNumber = 'roll-number',\r\n //iHelp: 498214,\r\n productApproxSODate = 'product-approximate-SO-date'\r\n}\r\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { contactUsImagesAsync } from './DataActionExtension.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n/**\r\n * ComplaintsFormImagePush Input Action\r\n */\r\nexport class ComplaintsFormImagePushInput implements Msdyn365.IActionInput {\r\n public image: string;\r\n public imageNum: number;\r\n public id: string;\r\n // TODO: Construct the input needed to run the action\r\n constructor(image: string, imageNum: number, id: string) {\r\n this.image = image;\r\n this.imageNum = imageNum;\r\n this.id = id;\r\n }\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `complaints-form-image-push`;\r\n public getCacheObjectType = () => 'complaints-form-image-push';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IComplaintsFormImagePushData {\r\n value: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (image: string, imageNum: number, id: string, args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new ComplaintsFormImagePushInput(image, imageNum, id);\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function action(\r\n input: ComplaintsFormImagePushInput,\r\n ctx: Msdyn365.IActionContext\r\n): Promise {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest('/get/example/id/1', 'get');\r\n return contactUsImagesAsync({ callerContext: ctx }, input.image, input.imageNum, input.id);\r\n}\r\n\r\nexport const imagePushActionDataAction = Msdyn365.createObservableDataAction({\r\n action: >action,\r\n // TODO: Give your data action a unique id\r\n id: 'ComplaintsFormImagePush',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { contactUsImagesCancelAsync } from './DataActionExtension.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n/**\r\n * ComplaintsFormImageDelete Input Action\r\n */\r\nexport class ComplaintsFormImageDeleteInput implements Msdyn365.IActionInput {\r\n public imageNum: number;\r\n public id: string;\r\n // TODO: Construct the input needed to run the action\r\n constructor(imageNum: number, id: string) {\r\n this.imageNum = imageNum;\r\n this.id = id;\r\n }\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `complaints-form-image-delete`;\r\n public getCacheObjectType = () => 'complaints-form-image-delete';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IComplaintsFormImageDeleteData {\r\n value: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (imageNum: number, id: string, args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new ComplaintsFormImageDeleteInput(imageNum, id);\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function action(\r\n input: ComplaintsFormImageDeleteInput,\r\n ctx: Msdyn365.IActionContext\r\n): Promise {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest('/get/example/id/1', 'get');\r\n return contactUsImagesCancelAsync({ callerContext: ctx }, input.imageNum, input.id);\r\n}\r\n\r\nexport const imageDeleteActionDataAction = Msdyn365.createObservableDataAction({\r\n action: >action,\r\n // TODO: Give your data action a unique id\r\n id: 'ComplaintsFormImageDelete',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});\r\n"],"names":["FormButton","_ref","id","className","text","ariaLabel","telemetryContent","disabled","link","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Button","Object","assign","role","href","FormError","type","message","errorClassName","classnames","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","FormInput","placeHolder","value","pattern","isRequired","onChange","onBlur","fieldReference","helpText","index","isInvoiceLineReady","selectedinvoiceLines","isInvoiceLinesSearchSuccess","isInvoiceNoReady","isInvoiceLineReadyState","getselectedinvoiceLines","isInvoiceLine","undefined","InvoiceId","InputID","description","productInvoiceNo","productConsumerInvoiceValue","Amount","product","colour","InputType","TextArea","name","event","placeholder","required","ref","FormSelect","optionList","map","item","i","key","selected","label","FormCheckbox","checked","MsDyn365","FormRadio","FormFileUpload","onFileCancel","multiple","disable","accept","FormLabel","forId","additionallabel","htmlFor","FormSearchBoxInput","invoiceLinesTable","onInvoiceNumberSearch","getImageNumByID","imageId","replace","_varNoneOptions","_varIssueTypeOptions","InvoiceLinesTableHeaderComponent","props","rowClassName","headerCells","resources","invoiceLinesSalesOrderText","invoiceLinesItemText","invoiceLinesColourText","invoiceLinesBatchNumberText","invoiceLinesSerialNumberText","invoiceLinesDescriptiontext","invoiceLinesSalesCategoryText","invoiceLinesQuantityText","invoiceLinesUnitPriceText","invoiceLinesAmountText","getDesktopHeaderCells","checkedValue","InvoiceLinesDesktopTableRowCellComponent","data","invoiceLines","salesId","OrigSalesId","selectedOption","setSelectedOption","useState","selectedRow","InvoiceLinesTableRadio","Radio","target","onInvoiceLinesTableInputChange","_onInvoiceLinesTableInputChange","onInvoiceLinesTableInputBlur","_onInvoiceLinesTableInputBlur","addRadioButton","ItemId","InventColorId","InventBatchId","InventSerialId","Name","EcoResCategoryName","Qty","SalesPrice","InvoiceLinesTableRowComponent","InvoiceLinesTableComponent","headerClassName","context","typeName","salesOrderInvoiceLines","isOpen","onClose","header","BremworthComplaintsForm","constructor","super","issueTypeOptions","ComplaintsFormDefaultInputs","invoiceNumber","SearchBox","this","formSearchBoxPlaceHolder","formSearchBoxLabel","config","invoiceInstruction","customClass","formSearchBoxHelperText","maxChars","retailerStoreName","Text","formRetailerStoreNamePlaceHolder","formRetailerStoreNameLabel","formRetailerStoreNameHelpText","heading","retailerContactPerson","formRetailerContactPersonPlaceHolder","formRetailerContactPersonLabel","formRetailerContactPersonHelpText","retailerPhone","formRetailerPhonePlaceHolder","formRetailerPhoneLabel","formRetailerPhoneHelpText","retailerEmail1","formRetailerEmail1PlaceHolder","formRetailerEmail1Label","formRetailerEmail1HelpText","retailerEmail2","formRetailerEmail2PlaceHolder","formRetailerEmail2Label","formRetailerEmail2HelpText","formProductInvoiceNoPlaceHolder","formProductInvoiceNoLabel","formProductInvoiceNoHelpText","productApproxSODate","DatePicker","formProductInvoiceLinesSODatePlaceHolder","formProductInvoiceLinesSODate","formProductInvoiceLinesSODateHelpText","maxDate","Date","Numeric","formProductLabelPlaceHolder","formProductLabel","formColourLabelPlaceHolder","formColourLabel","formColourHelpText","formDescriptionPlaceHolder","formDescriptionLabel","formDescriptionHelpText","batchNumber","formBatchNumberPlaceHolder","formBatchNumberLabel","formBatchNumberHelpText","rollNumber","formRollNumberPlaceHolder","formRollNumberLabel","formRollNumberHelpText","formProductConsumerInvoiceValuePlaceHolder","formProductConsumerInvoiceValueLabel","formProductConsumerInvoiceValueHelpText","productConsumerBalanceOutstanding","formProductConsumerBalanceOutstandingPlaceHolder","formProductConsumerBalanceOutstandingLabel","formProductConsumerBalanceOutstandingHelpText","productMetresInvolvedToRectify","formProductMetresInvolvedToRectifyPlaceHolder","formProductMetresInvolvedToRectifyLabel","formProductMetresInvolvedToRectifyHelpText","productTotalMetresInstalled","formProductTotalMetresInstalledPlaceHolder","formProductTotalMetresInstalledLabel","formProductTotalMetresInstalledHelpText","productDateInstallCompleted","formProductDateInstallCompletedPlaceHolder","formProductDateInstallCompletedLabel","formProductDateInstallCompletedHelpText","productDateIssueReportedToRetailer","formProductDateIssueReportedToRetailerPlaceHolder","formProductDateIssueReportedToRetailerLabel","formProductDateIssueReportedToRetailerHelpText","productReceiveGuide","formProductReceiveGuidePlaceHolder","formProductReceiveGuideLabel","formProductReceiveGuideHelpText","productNewUnderlay","formProductNewUnderlayPlaceHolder","formProductNewUnderlayLabel","formProductNewUnderlayHelpText","productOwnerOccupied","formProductOwnerOccupiedPlaceHolder","formProductOwnerOccupiedLabel","formProductOwnerOccupiedHelpText","productPresent","formProductPresentPlaceHolder","formProductPresentLabel","formProductPresentHelpText","consumerName","formConsumerNamePlaceHolder","formConsumerNameLabel","formConsumerNameHelpText","consumerPhone","formConsumerPhonePlaceHolder","formConsumerPhoneLabel","formConsumerPhoneHelpText","consumerStreetAddress1","formConsumerStreetAddress1PlaceHolder","formConsumerStreetAddress1Label","formConsumerStreetAddress1HelpText","consumerStreetAddress2","formConsumerStreetAddress2PlaceHolder","formConsumerStreetAddress2Label","formConsumerStreetAddress2HelpText","consumerSuburbTown","formConsumerSuburbTownPlaceHolder","formConsumerSuburbTownLabel","formConsumerSuburbTownHelpText","consumerPostcode","formConsumerPostcodePlaceHolder","formConsumerPostcodeLabel","formConsumerPostcodeHelpText","consumerEmail","formConsumerEmailPlaceHolder","formConsumerEmailLabel","formConsumerEmailHelpText","consumerConcern","formConsumerConcernPlaceHolder","formConsumerConcernLabel","formConsumerConcernHelpText","retailerInspectionBy","formRetailerInspectionByPlaceHolder","formRetailerInspectionByLabel","formRetailerInspectionByHelpText","retailerInspectionDate","formRetailerInspectionDatePlaceHolder","formRetailerInspectionDateLabel","formRetailerInspectionDateHelpText","retailerInspectionPhone","formRetailerInspectionPhonePlaceHolder","formRetailerInspectionPhoneLabel","formRetailerInspectionPhoneHelpText","retailerInspectionEmail","formRetailerInspectionEmailPlaceHolder","formRetailerInspectionEmailLabel","formRetailerInspectionEmailHelpText","retailerInspectionPersonPresent","formRetailerInspectionPersonPresentPlaceHolder","formRetailerInspectionPersonPresentLabel","formRetailerInspectionPersonPresentHelpText","retailerInspectionCarpetLayerName","formRetailerInspectionCarpetLayerNamePlaceHolder","formRetailerInspectionCarpetLayerNameLabel","formRetailerInspectionCarpetLayerNameHelpText","retailerInspectionCarpetLayerPhone","formRetailerInspectionCarpetLayerPhonePlaceHolder","formRetailerInspectionCarpetLayerPhoneLabel","formRetailerInspectionCarpetLayerPhoneHelpText","retailerInspectionIssueType","Select","formRetailerInspectionIssueTypeLabel","formRetailerInspectionIssueTypeHelpText","retailerInspectionRetailerReport","formRetailerInspectionRetailerReportPlaceHolder","formRetailerInspectionRetailerReportLabel","formRetailerInspectionRetailerReportHelpText","photoUpload1","File","formPhotoUpload1PlaceHolder","formPhotoUpload1Label","formPhotoUpload1HelpText","photoUpload2","formPhotoUpload2PlaceHolder","formPhotoUpload2Label","formPhotoUpload2HelpText","hideLabel","photoUpload3","formPhotoUpload3PlaceHolder","formPhotoUpload3Label","formPhotoUpload3HelpText","photoUpload4","formPhotoUpload4PlaceHolder","formPhotoUpload4Label","formPhotoUpload4HelpText","photoUpload5","formPhotoUpload5PlaceHolder","formPhotoUpload5Label","formPhotoUpload5HelpText","formChildInputReference","moduleClassName","needsToReset","openModal","setState","isModalOpen","modalMessage","closeModal","captureScreenshot","targetElement","document","querySelector","HTMLElement","html2canvas","scale","scrollX","scrollY","window","then","canvas","url","toDataURL","screenshotToImage","catch","error","handleHeadingChange","_onInputChange","newForm","state","formItems","forEach","Checkbox","isReady","_isFormReady","hasSubmitErrors","_onInvoiceNumberSearch","length","getComplaintInvoice","initinvoiceLines","async","_this$props$data$acco","actionContext","customer","accountInformation","result","AccountNumber","response","getComplaintInvoiceAsync","callerContext","invoiceSearchInstruction","noSearchResult","invoiceSearchNoResultFound","Promise","resolve","_error$error","reject","_onFileChange","isPushImageFail","isExceedFileSize","fileJson","_getBase64","files","hasError","_handleImagePush","imageBase64","itemId","currentImage","imageID","_pushImage","imageNum","ImageId","pushImageProcessing","input","ComplaintsFormImagePushInput","imagePushActionDataAction","_resetFileUpload","_onFileCancel","currentTarget","getElementById","_deleteImage","ComplaintsFormImageDeleteInput","imageDeleteActionDataAction","_onInputBlur","errorMessage","format","requiredFieldMissingError","match","invalidDataFieldError","_onDatePickerChange","date","onFormatDate","_onSelectChange","sub_item","isValid","currentInput","_invoiceLinesTableInput","items","salesOrderInvoiceLine","toString","eventValue","invoiceSalesID","split","filter","flat","_onSubmit","_event","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","rd_storeName","_getItem","rd_contactPerson","rd_phone","rd_emailAddress","rd_emailAddress2","pd_invoice","pd_customerInvoiceValue","pd_product","pd_color","pd_invoiceDate","pd_consumerBalance","pd_metersInvolvedToRectify","pd_totalMetersInstalled","pd_dateInstalled","pd_dateIssueReported","pd_consumersReceiveMaintenance","pd_isCarpetInstalled","pd_isPropertyOwner","pd_wishOurInspection","cd_Name","cd_Phone","cd_streetAddressPrimary","cd_streetAddressSecondary","cd_suburb","cd_postCode","cd_emailAddress","cd_issueRaisedByConcern","rid_inspectedBy","rid_inspectionDate","rid_retailerInspectionPhone","rid_retailerInspectionEmail","rid_personRetailerInspection","rid_carpetLayerName","rid_carpetLayerPhone","rid_issueType","rid_retailerReport","pd_serial","pd_batch","pd_invoiceName","pdf","DataActionExtension","location","console","finally","find","_addedReference","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","componentDidMount","_this$formChildInputR","current","focus","shouldComponentUpdate","nextProps","nextState","renderModal","render","formPostSubmitLoadingMessage","invoiceLinesData","viewProps","_objectSpread","complaintsFormProps","moduleProps","ContainerWrapper","editProps","onEdit","requestContext","complaintsForm","_renderForm","formModal","Modal","renderView","fromSubmitButtonLabel","form","FormWrapper","inputs","onInputChange","onInputBlur","onSelectChange","onFileChange","onDatePickerChange","formProductInvoiceNoManualEnterLabel","element","fieldInputReference","fieldSelectReference","fieldDatePickerReference","dateVal","_uploadFail","_exceedFileSize","labelCustom","_label","baseFooterItem","wrapper","isDisabled","FormDatePicker","buttons","formDescription","RichTextComponent","disclaimer","renderInputSection","allFiles","file","reader","FileReader","readAsDataURL","onload","fileInfo","base64","pop","push","onloadend","size","_accountInformation$r","_this$props$data$issu","newFormFields","Email","options","issueTypeEntity","RecordId","Description","FormItem","Node","Module","button","styles","mergeStyleSets","root","selectors","marginBottom","control","maxWidth","day","getDate","slice","month","getMonth","getFullYear","onParseDateFromString","newValue","previousValue","newValueParts","trim","Math","max","min","year","componentRef","allowTextInput","onSelectDate","onChangeCallback","formatDate","parseDateFromString","strings","defaultDatePickerStrings","$","flattenIntoArray","toObject","lengthOfArrayLike","toIntegerOrInfinity","arraySpeciesCreate","proto","depthArg","arguments","O","sourceLen","A","isArray","doesNotExceedSafeInteger","bind","original","source","start","depth","mapper","thisArg","elementLen","targetIndex","sourceIndex","mapFn","module","exports","$TypeError","TypeError","it","addToUnscopables","image","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","ctx","contactUsImagesAsync","createInput","args","contactUsImagesCancelAsync"],"sourceRoot":""}