{"version":3,"file":"TransactionNoteForm.mjs","names":["React","forwardRef","useCallback","useState","LinearProgress","Form","Field","FluentTextField","FluentTextFieldAutoComplete","Typography","apiMutate","ConfigService","useAuthedUser","useHandleAxiosSnackbar","useTranslation","makeStyles","useStyles","theme","loading","marginBottom","spacing","TransactionNoteFormComponent","props","ref","$","_c","initialValues","viewOnly","businessObjectKey","closeSideSheet","noteTypes","fetchNoteTypesLoading","isLoading","setIsLoading","user","handleSuccessSnackbar","handleErrorSnackbar","t","classes","addTransactionNote","_temp","addNoteFiledFor","_temp2","t0","id","name","values","formattedValues","typeCode","noteType","code","subject","content","unityUserID","userDisplayName","data","then","res","console","log","entityBusinessKey","noteId","defaultValue","catch","res_0","handleSubmitForm","t1","t2","submitting","_temp3","_temp4","_temp5","TransactionNoteForm","productV1ApiUrl","method","data_0"],"sources":["../../../../../../src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNoteForm.jsx"],"sourcesContent":["import React, { forwardRef, useCallback, useState } from 'react';\nimport { LinearProgress } from '../../../../../UI';\nimport { Form, Field } from '../../../../../utilities/form';\nimport { FluentTextField } from '../../../../../UI/inputs/textField/FluentTextField';\nimport { FluentTextFieldAutoComplete } from '../../../../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { Typography } from '../../../../../UI/dataDisplay/typography';\nimport { apiMutate } from '../../../../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../../../../configService';\nimport { useAuthedUser } from '../../../../../utilities/auth';\nimport { useHandleAxiosSnackbar } from '../../../../../utilities';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n  loading: {\n    marginBottom: theme.spacing(1)\n  }\n}));\n\nconst TransactionNoteFormComponent = (props, ref) => {\n  const {\n    initialValues,\n    viewOnly,\n    businessObjectKey,\n    closeSideSheet,\n    noteTypes,\n    fetchNoteTypesLoading\n  } = props;\n  const [isLoading, setIsLoading] = useState(false);\n  const user = useAuthedUser();\n  const { handleSuccessSnackbar, handleErrorSnackbar } =\n    useHandleAxiosSnackbar();\n  const { t } = useTranslation();\n  const classes = useStyles();\n\n  // TODO: create a new api to include both\n  const addTransactionNote = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `UdpNote`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    []\n  );\n\n  const addNoteFiledFor = useCallback(\n    async (data) =>\n      apiMutate(\n        ConfigService.productV1ApiUrl,\n        `UdpNoteFiledFor`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    []\n  );\n\n  const handleSubmitForm = useCallback(\n    async (values) => {\n      setIsLoading(true);\n      const formattedValues = {\n        typeCode: values?.noteType?.code,\n        subject: values?.subject,\n        content: values?.content,\n        unityUserID: user?.id,\n        userDisplayName: user?.name ?? ''\n      };\n\n      await addTransactionNote({\n        data: formattedValues\n      })\n        .then(async (res) => {\n          console.log('Transaction Note response: ', { res });\n          if (res?.data?.id) {\n            await addNoteFiledFor({\n              data: {\n                entityBusinessKey: businessObjectKey,\n                noteId: res?.data?.id\n              }\n            }).then(() => {\n              handleSuccessSnackbar(\n                t('transactions.notes.addSuccess', {\n                  defaultValue: 'Transaction note has been added successfully.'\n                })\n              );\n              if (closeSideSheet) {\n                closeSideSheet();\n              }\n            });\n          }\n        })\n        .catch((res) => {\n          handleErrorSnackbar(\n            res,\n            t('transactions.notes.addError', {\n              defaultValue: 'Unable to add transaction note.'\n            })\n          );\n        });\n      setIsLoading(false);\n    },\n    [\n      addNoteFiledFor,\n      addTransactionNote,\n      businessObjectKey,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      t,\n      user,\n      closeSideSheet\n    ]\n  );\n\n  return (\n    <div>\n      {fetchNoteTypesLoading ? (\n        <div>\n          <LinearProgress />\n        </div>\n      ) : (\n        <div>\n          {isLoading && (\n            <div className={classes.loading}>\n              <LinearProgress />\n            </div>\n          )}\n          <Form\n            ref={ref}\n            onSubmit={handleSubmitForm}\n            initialValues={initialValues}\n            id={`transactionNoteForm-${businessObjectKey}`}\n            render={({ submitting }) => (\n              <>\n                <Field\n                  component={FluentTextFieldAutoComplete}\n                  id='noteType'\n                  name='noteType'\n                  optionKey='name'\n                  disableClearable\n                  label={t('transactions.notes.type', {\n                    defaultValue: 'Type'\n                  })}\n                  options={noteTypes ?? []}\n                  disabled={viewOnly || submitting}\n                  onChange={() => {}}\n                  required\n                />\n\n                <Field\n                  component={FluentTextField}\n                  id='subject'\n                  name='subject'\n                  label={t('transactions.notes.subject', {\n                    defaultValue: 'Subject'\n                  })}\n                  disabled={viewOnly || submitting}\n                  onChange={() => {}}\n                  required\n                />\n                <Field\n                  component={FluentTextField}\n                  id='content'\n                  name='content'\n                  label={t('transactions.notes.details', {\n                    defaultValue: 'Details'\n                  })}\n                  onChange={() => {}}\n                  multiline\n                  rows={5}\n                  maxRows={10}\n                  disabled={viewOnly || submitting}\n                  required\n                />\n                {viewOnly && (\n                  <Typography variant='caption'>\n                    {t('transactions.notes.viewOnlyHint', {\n                      defaultValue:\n                        'Viewing note details. Use the Add Note action to create a new entry.'\n                    })}\n                  </Typography>\n                )}\n              </>\n            )}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport const TransactionNoteForm = forwardRef(TransactionNoteFormComponent);\n"],"mappings":"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"}