{"version":3,"file":"UdpTransactionSidesheet.mjs","names":["React","useState","useMemo","useRef","useCallback","useEffect","ViewTransaction","AttachmentTransaction","SideSheet","WorkflowActions","EditTransaction","useTransactionEngine","TransactionUiActionTypeEnums","UdpTransactionCustomPage","apiMutate","useAxiosMutate","ConfigService","useHandleAxiosSnackbar","useTranslation","FluentDialog","PageContainer","UdpTransactionAttachmentUploader","uploadTransactionAttachments","UdpFlexbox","UdpSpinner","UdpText","allowedExtensions","MAX_FILE_SIZE_MB","useSnackbar","Badge","DynamicTransactionDomainForm","BUSY_DELAY_MS","BUSY_MIN_MS","UdpTransactionSidesheet","props","openStates","handleSidesheet","handleAttachmentTransaction","transaction","transactionTypeId","domainName","refreshGridData","label","sidesheetLabel","hideSaveChanges","catalogObject","onTransactionStatusChange","attachmentTypeDefaults","sidesheetLoading","setSidesheetLoading","closingTransactionLoading","setClosingTransactionLoading","editTransactionopenInnerSidesheetState","setEditTransactionOpenInnerSidesheetState","attachments","workflowActions","notes","dialogOpen","setDialogOpen","unsavedChangesDialogOpen","setUnsavedChangesDialogOpen","hasUnsavedChanges","setHasUnsavedChanges","missingTypeDialogOpen","setMissingTypeDialogOpen","creationStage","setCreationStage","busyVisible","setBusyVisible","createTransactionOpenInnerSidesheetState","setCreateTransactionOpenInnerSidesheetState","currentAttachments","setCurrentAttachments","attachmentProgress","setAttachmentProgress","transactionAttachments","setTransactionAttachments","filePreview","setFilePreview","sidesheetPrimaryButtonDisabled","setSidesheetPrimaryButtonDisabled","sidesheetSecondaryButtonDisabled","setSidesheetSecondaryButtonDisabled","handleSuccessSnackbar","handleErrorSnackbar","hasClosedStatus","checkIfTransactionIsClosed","getTransactionTypeLabel","getUiActionRenderParameters","transactionTypePageConfiguration","closedStatuses","transactionTypeStatuses","attachmentTypeCodeForStatus","status","code","undefined","createDefaultAttachmentTypeCode","find","isDefault","editDefaultAttachmentTypeCode","transactionTypeStatusId","currentStatusId","t","formRef","createdTransactionRef","createdRevisionRef","busyTimerRef","busyShownAtRef","attachmentRef","sidesheetWidth","width","transactionTypeEntry","entityBusinessObject","enqueueSnackbar","data","transactionAttachmentTypes","fetchTransactionAttachmentType","productV1ApiUrl","method","pageSize","filterElements","searchField","searchValue","searchOperator","handleDialogClose","handleUnsavedChangesDialogClose","handleResetAttachmentState","resetSavedAttachmentsState","executeCloseTransaction","response","transactionId","defaultValue","Error","handleConfirmCloseTransactionDialog","error","formattedBusinesskey","businessObjectKey","split","pop","beginBusy","stage","current","setTimeout","Date","now","cancelBusy","clearTimeout","endBusy","remaining","Promise","resolve","handleTransactionCreationSuccess","handleTransactionRevisionCreationSuccess","handleUploadFilesForCreateTransaction","length","uploaded","failed","uploadedFiles","Set","prev","filter","entry","has","file","variant","anchorOrigin","vertical","horizontal","console","handleTransactionCreation","form","submit","createdTransaction","autoLaunchNextStepsOnCreateTransaction","handleCreateRevision","revision","autoLaunchNextStepsOnCreateRevision","handleNextStepsAction","workflowAction","handleConfirmUnsavedChangesDialog","pdfViewPageId","Render_View_Pdf_Page","pageId","viewTransactionPage","transactionIsClosed","transactionLabel","sheetLabel","transactionCreatePageId","Render_Create_Transaction_Page","untypedAttachmentCount","attachment","attachmentType","closeCreateAttachmentSheet","handleCloseCreateAttachmentSheet","handleRemoveUntypedAttachments","creationStageLabel","creating","creatingRevision","uploading","busyOverlay","sidesheetList","list","open","addTransaction","closeSheet","title","trim","onSubmit","buttonOneDisabled","some","children","sidesheetParams","buttonLabel","buttonTwoLabel","buttonTwoAction","viewTransaction","attachmentTransaction","downloadSelectedFile","editTransaction","buttonTwoDisabled","createRevision","Render_Create_Revision_Page","then","map","item","entityBusinessKey","count"],"sources":["../../../../src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.jsx"],"sourcesContent":["import React, {\n  useState,\n  useMemo,\n  useRef,\n  useCallback,\n  useEffect\n} from 'react';\nimport ViewTransaction from './sidesheets/ViewTransaction';\nimport AttachmentTransaction from './sidesheets/AttachmentTransaction';\nimport { SideSheet } from '../../../UI';\nimport WorkflowActions from './sidesheets/WorkflowActions';\nimport EditTransaction from './sidesheets/EditTransaction';\nimport { useTransactionEngine } from '../../../utilities/transactions/useTransactionEngine';\nimport { TransactionUiActionTypeEnums } from '../../../enums';\nimport UdpTransactionCustomPage from './components/UdpTransactionCustomPage';\nimport { apiMutate, useAxiosMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { useHandleAxiosSnackbar } from '../../../utilities';\nimport { useTranslation } from 'react-i18next';\nimport { FluentDialog } from '../../../UI';\nimport { PageContainer } from '../../../page/PageContainer';\nimport { UdpTransactionAttachmentUploader } from './components/transactionAttachment/UdpTransactionAttachmentUploader';\nimport { uploadTransactionAttachments } from './components/transactionAttachment/uploadTransactionAttachments';\nimport {\n  UdpFlexbox,\n  UdpSpinner,\n  UdpText\n} from '../../../UI/fluent-web-components';\nimport {\n  allowedExtensions,\n  MAX_FILE_SIZE_MB\n} from '../../../uploader/utils/allowedFileProperties';\nimport { useSnackbar } from 'notistack';\nimport { Badge } from '@material-ui/core';\nimport DynamicTransactionDomainForm from './components/DynamicTransactionDomainForm';\nimport './UdpTransactionSidesheet.css';\n\n// The overlay waits this long before appearing, then stays at least this long.\nconst BUSY_DELAY_MS = 300;\nconst BUSY_MIN_MS = 400;\n\nconst UdpTransactionSidesheet = (props) => {\n  const {\n    openStates,\n    handleSidesheet,\n    handleAttachmentTransaction,\n    transaction,\n    transactionTypeId,\n    domainName,\n    refreshGridData,\n    label: sidesheetLabel,\n    hideSaveChanges,\n    catalogObject,\n    onTransactionStatusChange,\n    attachmentTypeDefaults\n  } = props;\n\n  const [sidesheetLoading, setSidesheetLoading] = useState(false);\n  const [closingTransactionLoading, setClosingTransactionLoading] =\n    useState(false);\n  const [\n    editTransactionopenInnerSidesheetState,\n    setEditTransactionOpenInnerSidesheetState\n  ] = useState({\n    attachments: false,\n    workflowActions: false,\n    notes: false\n  });\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [unsavedChangesDialogOpen, setUnsavedChangesDialogOpen] =\n    useState(false);\n  const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n  const [missingTypeDialogOpen, setMissingTypeDialogOpen] = useState(false);\n  // 'creating' | 'creatingRevision' | 'uploading' while Add or Create Revision\n  // runs, else null\n  const [creationStage, setCreationStage] = useState(null);\n  const [busyVisible, setBusyVisible] = useState(false);\n  const [\n    createTransactionOpenInnerSidesheetState,\n    setCreateTransactionOpenInnerSidesheetState\n  ] = useState({\n    attachments: false\n  });\n  const [currentAttachments, setCurrentAttachments] = useState([]);\n  const [attachmentProgress, setAttachmentProgress] = useState(false);\n  const [transactionAttachments, setTransactionAttachments] = useState([]);\n  const [filePreview, setFilePreview] = useState(false);\n  const [sidesheetPrimaryButtonDisabled, setSidesheetPrimaryButtonDisabled] =\n    useState(false);\n  const [\n    sidesheetSecondaryButtonDisabled,\n    setSidesheetSecondaryButtonDisabled\n  ] = useState(false);\n\n  const { handleSuccessSnackbar, handleErrorSnackbar } =\n    useHandleAxiosSnackbar();\n\n  const {\n    hasClosedStatus,\n    checkIfTransactionIsClosed,\n    getTransactionTypeLabel,\n    getUiActionRenderParameters,\n    transactionTypePageConfiguration,\n    closedStatuses,\n    transactionTypeStatuses\n  } = useTransactionEngine(transactionTypeId);\n\n  // Attachment type code new files default to, per the status the files will\n  // belong to: the type's default status when creating, the transaction's\n  // current status when editing. See attachmentTypeDefaults on the page.\n  const attachmentTypeCodeForStatus = (status) =>\n    status?.code ? attachmentTypeDefaults?.[status.code] : undefined;\n  const createDefaultAttachmentTypeCode = attachmentTypeCodeForStatus(\n    transactionTypeStatuses?.find((status) => status.isDefault)\n  );\n\n  const editDefaultAttachmentTypeCode = attachmentTypeCodeForStatus(\n    transactionTypeStatuses?.find(\n      (status) =>\n        status.transactionTypeStatusId === transaction?.currentStatusId\n    )\n  );\n\n  const { t } = useTranslation();\n  const formRef = useRef(null);\n  const createdTransactionRef = useRef(null);\n  const createdRevisionRef = useRef(null);\n  const busyTimerRef = useRef(null);\n  const busyShownAtRef = useRef(0);\n  const attachmentRef = useRef();\n  const sidesheetWidth = openStates?.width ?? 800;\n  const transactionTypeEntry = transaction?.entityBusinessObject;\n  const { enqueueSnackbar } = useSnackbar();\n\n  const [{ data: transactionAttachmentTypes }, fetchTransactionAttachmentType] =\n    useAxiosMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionAttachmentType/search`,\n      {\n        method: 'post',\n        data: {\n          pageSize: 50,\n          filterElements: [\n            {\n              searchField: 'TransactionTypeId',\n              searchValue: transactionTypeId,\n              searchOperator: '='\n            }\n          ]\n        }\n      }\n    );\n\n  const handleDialogClose = () => {\n    setDialogOpen(false);\n  };\n\n  const handleUnsavedChangesDialogClose = () => {\n    setUnsavedChangesDialogOpen(false);\n  };\n  const handleResetAttachmentState = useCallback(\n    (resetSavedAttachmentsState) => {\n      if (resetSavedAttachmentsState) {\n        setCurrentAttachments([]);\n      }\n      setAttachmentProgress(false);\n      setTransactionAttachments([]);\n      setFilePreview(false);\n    },\n    []\n  );\n\n  const executeCloseTransaction = useCallback(async () => {\n    // setSidesheetLoading(true);\n    const response = await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `udpTransaction/${transaction?.transactionId}/closeTransaction`,\n      {\n        method: 'post'\n      }\n    );\n    // setSidesheetLoading(false);\n    if (response?.status === 200) {\n      handleSidesheet('edit', false);\n      refreshGridData();\n      onTransactionStatusChange?.(response?.data?.currentStatusId, transaction);\n      handleSuccessSnackbar(\n        t('transactions.sidesheet.closeSuccess', {\n          defaultValue: 'Transaction has been closed successfully'\n        })\n      );\n    } else {\n      handleErrorSnackbar(\n        new Error(\n          t('transactions.sidesheet.closeError', {\n            defaultValue: 'Error closing Transaction. Please try again later.'\n          })\n        )\n      );\n    }\n  }, [\n    transaction,\n    refreshGridData,\n    handleSidesheet,\n    handleSuccessSnackbar,\n    handleErrorSnackbar,\n    onTransactionStatusChange,\n    t\n  ]);\n\n  const handleConfirmCloseTransactionDialog = useCallback(async () => {\n    try {\n      setClosingTransactionLoading(true);\n      await executeCloseTransaction();\n    } catch (error) {\n      handleErrorSnackbar(error);\n    } finally {\n      setClosingTransactionLoading(false);\n      handleDialogClose();\n    }\n  }, [executeCloseTransaction, handleErrorSnackbar]);\n\n  const formattedBusinesskey = transactionTypeEntry?.businessObjectKey\n    ?.split('|')\n    ?.pop();\n\n  // Only records the result. handleTransactionCreation keeps the Create sheet\n  // open, with its progress bar, until attachments have uploaded, then closes\n  // it and auto-launches workflow actions.\n  // The overlay appears only once the work has run past BUSY_DELAY_MS, so a\n  // fast create shows nothing at all rather than a flash, and it then tracks\n  // the real duration of the request. BUSY_MIN_MS keeps it readable when the\n  // work finishes just the other side of that threshold.\n  const beginBusy = useCallback((stage) => {\n    setCreationStage(stage);\n    busyShownAtRef.current = 0;\n    busyTimerRef.current = setTimeout(() => {\n      busyShownAtRef.current = Date.now();\n      setBusyVisible(true);\n    }, BUSY_DELAY_MS);\n  }, []);\n\n  const cancelBusy = useCallback(() => {\n    clearTimeout(busyTimerRef.current);\n    busyTimerRef.current = null;\n    busyShownAtRef.current = 0;\n    setBusyVisible(false);\n    setCreationStage(null);\n  }, []);\n\n  // Awaited before the sheet closes, so any remaining minimum is served while\n  // the overlay is still on screen.\n  const endBusy = useCallback(async () => {\n    clearTimeout(busyTimerRef.current);\n    busyTimerRef.current = null;\n    if (busyShownAtRef.current) {\n      const remaining = BUSY_MIN_MS - (Date.now() - busyShownAtRef.current);\n      if (remaining > 0) {\n        await new Promise((resolve) => setTimeout(resolve, remaining));\n      }\n    }\n    busyShownAtRef.current = 0;\n    setBusyVisible(false);\n    setCreationStage(null);\n  }, []);\n\n  useEffect(() => () => clearTimeout(busyTimerRef.current), []);\n\n  const handleTransactionCreationSuccess = useCallback((response) => {\n    createdTransactionRef.current = response?.data ?? {};\n  }, []);\n\n  const handleTransactionRevisionCreationSuccess = useCallback((response) => {\n    createdRevisionRef.current = response?.data ?? {};\n  }, []);\n\n  const handleUploadFilesForCreateTransaction = useCallback(\n    async (transactionId) => {\n      if (!currentAttachments.length) return;\n      try {\n        setAttachmentProgress(true);\n        const { uploaded, failed, error } = await uploadTransactionAttachments(\n          transactionId,\n          currentAttachments\n        );\n\n        // Only what landed leaves the staged list, so nothing is uploaded twice.\n        const uploadedFiles = new Set(uploaded);\n        setCurrentAttachments((prev) =>\n          prev.filter((entry) => !uploadedFiles.has(entry.file))\n        );\n        setCreateTransactionOpenInnerSidesheetState({ attachments: false });\n\n        if (uploaded.length) {\n          enqueueSnackbar(\n            t('transactions.sidesheet.filesUploadSuccess', {\n              defaultValue: 'Files uploaded successfully'\n            }),\n            {\n              variant: 'success',\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              }\n            }\n          );\n        }\n\n        if (failed.length) {\n          console.error(error);\n          enqueueSnackbar(\n            t('transactions.sidesheet.fileUploadError', {\n              defaultValue:\n                'File upload failed: We encountered a system error. Please try again or contact support if the issue persists.'\n            }),\n            {\n              variant: 'error',\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              }\n            }\n          );\n        }\n      } finally {\n        setAttachmentProgress(false);\n      }\n    },\n    [\n      currentAttachments,\n      enqueueSnackbar,\n      setCurrentAttachments,\n      setAttachmentProgress,\n      t\n    ]\n  );\n\n  const handleTransactionCreation = useCallback(async () => {\n    setSidesheetLoading(true);\n    beginBusy('creating');\n    createdTransactionRef.current = null;\n    try {\n      await formRef.current?.form?.submit();\n      // Set only when the form reported success, so a failed submit or a\n      // validation error leaves the sheet open with its errors.\n      const createdTransaction = createdTransactionRef.current;\n      if (!createdTransaction) return;\n\n      if (createdTransaction.transactionId && currentAttachments.length > 0) {\n        setCreationStage('uploading');\n        try {\n          await handleUploadFilesForCreateTransaction(\n            createdTransaction.transactionId\n          );\n        } catch (error) {\n          // The upload handler has already shown the error toast; the\n          // transaction exists, so the flow continues without the files.\n          console.error(error);\n        }\n      }\n      await endBusy();\n      refreshGridData();\n      handleSidesheet('add', false);\n      handleResetAttachmentState(true);\n\n      if (\n        transactionTypePageConfiguration?.autoLaunchNextStepsOnCreateTransaction &&\n        createdTransaction.transactionId\n      ) {\n        handleSidesheet('action', true, createdTransaction);\n      }\n    } finally {\n      cancelBusy();\n      setSidesheetLoading(false);\n    }\n  }, [\n    formRef,\n    currentAttachments.length,\n    handleUploadFilesForCreateTransaction,\n    refreshGridData,\n    handleSidesheet,\n    handleResetAttachmentState,\n    transactionTypePageConfiguration,\n    beginBusy,\n    endBusy,\n    cancelBusy\n  ]);\n\n  const handleCreateRevision = useCallback(async () => {\n    setSidesheetLoading(true);\n    beginBusy('creatingRevision');\n    createdRevisionRef.current = null;\n    try {\n      await formRef.current?.form?.submit();\n      // Set only when the form reported success, so a failed submit or a\n      // validation error leaves the sheet open with its errors. The payload\n      // may carry no transactionId, which is why the launch below falls back\n      // to the transaction being revised.\n      const revision = createdRevisionRef.current;\n      if (!revision) return;\n\n      await endBusy();\n      refreshGridData();\n      handleSidesheet('createRevision', false);\n\n      if (\n        transactionTypePageConfiguration?.autoLaunchNextStepsOnCreateRevision\n      ) {\n        handleSidesheet(\n          'action',\n          true,\n          revision.transactionId ? revision : transaction\n        );\n      }\n    } finally {\n      cancelBusy();\n      setSidesheetLoading(false);\n    }\n  }, [\n    formRef,\n    refreshGridData,\n    handleSidesheet,\n    transactionTypePageConfiguration,\n    transaction,\n    beginBusy,\n    endBusy,\n    cancelBusy\n  ]);\n\n  const handleNextStepsAction = useCallback(() => {\n    if (!hasUnsavedChanges) {\n      setEditTransactionOpenInnerSidesheetState({ workflowAction: true });\n    } else {\n      setUnsavedChangesDialogOpen(true);\n    }\n  }, [hasUnsavedChanges]);\n\n  const handleConfirmUnsavedChangesDialog = useCallback(() => {\n    setUnsavedChangesDialogOpen(false);\n    setEditTransactionOpenInnerSidesheetState({ workflowAction: true });\n  }, []);\n\n  const pdfViewPageId = useMemo(() => {\n    return getUiActionRenderParameters(\n      TransactionUiActionTypeEnums.Render_View_Pdf_Page\n    )?.pageId;\n  }, [getUiActionRenderParameters]);\n\n  const viewTransactionPage = useMemo(() => {\n    if (pdfViewPageId) {\n      return (\n        <PageContainer pageId={pdfViewPageId} widgetParams={{ transaction }} />\n      );\n    } else {\n      return <ViewTransaction transaction={transaction} />;\n    }\n  }, [transaction, pdfViewPageId]);\n\n  const transactionIsClosed = useMemo(() => {\n    return checkIfTransactionIsClosed(transaction);\n  }, [checkIfTransactionIsClosed, transaction]);\n\n  const transactionLabel = useMemo(() => {\n    return ` ${\n      getTransactionTypeLabel(transaction) ??\n      `${domainName} ${formattedBusinesskey ?? ''}`\n    }`;\n  }, [getTransactionTypeLabel, transaction, formattedBusinesskey, domainName]);\n\n  const sheetLabel = useMemo(() => {\n    if (sidesheetLabel) {\n      return sidesheetLabel;\n    }\n    return transactionLabel;\n  }, [sidesheetLabel, transactionLabel]);\n\n  const transactionCreatePageId = useMemo(() => {\n    return getUiActionRenderParameters(\n      TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n    )?.pageId;\n  }, [getUiActionRenderParameters]);\n\n  const untypedAttachmentCount = currentAttachments.filter(\n    (attachment) => !attachment.attachmentType\n  ).length;\n\n  const closeCreateAttachmentSheet = useCallback(\n    () => setCreateTransactionOpenInnerSidesheetState({ attachments: false }),\n    []\n  );\n\n  // Staged files without a type can never upload and keep Add disabled, so\n  // closing the sheet with any of them prompts before letting them linger.\n  const handleCloseCreateAttachmentSheet = useCallback(() => {\n    if (untypedAttachmentCount > 0) {\n      setMissingTypeDialogOpen(true);\n      return;\n    }\n    closeCreateAttachmentSheet();\n  }, [untypedAttachmentCount, closeCreateAttachmentSheet]);\n\n  const handleRemoveUntypedAttachments = useCallback(() => {\n    setCurrentAttachments((prev) =>\n      prev.filter((attachment) => attachment.attachmentType)\n    );\n    setMissingTypeDialogOpen(false);\n    closeCreateAttachmentSheet();\n  }, [closeCreateAttachmentSheet]);\n\n  const creationStageLabel = {\n    creating: t('transactions.sidesheet.creatingTransaction', {\n      defaultValue: 'Creating transaction…'\n    }),\n    creatingRevision: t('transactions.sidesheet.creatingRevision', {\n      defaultValue: 'Creating revision…'\n    }),\n    uploading: t('transactions.sidesheet.uploadingAttachments', {\n      defaultValue: 'Uploading attachments…'\n    })\n  }[creationStage];\n\n  const busyOverlay = busyVisible && creationStageLabel ? (\n    <div className='udp-transaction-create-overlay' role='status'>\n      <UdpFlexbox direction='column' align='center' gap='md'>\n        <UdpSpinner size='large' />\n        <UdpText variant='body1Strong' as='p'>\n          {creationStageLabel}\n        </UdpText>\n      </UdpFlexbox>\n    </div>\n  ) : null;\n\n  const sidesheetList = useMemo(() => {\n    const list = [\n      {\n        open: openStates.addTransaction,\n        closeSheet: () => {\n          handleSidesheet('add', false);\n          handleResetAttachmentState(true);\n        },\n        title: sheetLabel?.trim() || domainName,\n        width: sidesheetWidth,\n        onSubmit: handleTransactionCreation,\n        buttonOneDisabled: currentAttachments.some(\n          (attachment) => !attachment.attachmentType\n        ),\n        children: (\n          <div className='udp-transaction-create-body'>\n            {busyOverlay}\n            {transactionCreatePageId ? (\n              <UdpTransactionCustomPage\n                transactionTypeId={transactionTypeId}\n                transactionUiActionType={\n                  TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n                }\n                formRef={formRef}\n                onSubmitSuccess={handleTransactionCreationSuccess}\n                refreshGridData={refreshGridData}\n                additionalPageParms={{\n                  sidesheetParams: {\n                    setSidesheetPrimaryButtonDisabled,\n                    setSidesheetSecondaryButtonDisabled\n                  }\n                }}\n              />\n            ) : (\n              <DynamicTransactionDomainForm\n                transaction={transaction}\n                formRef={formRef}\n                domainName={domainName}\n                transactionTypeId={transactionTypeId}\n                transactionUiActionType={\n                  TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n                }\n                onSubmitSuccess={handleTransactionCreationSuccess}\n                catalogObject={catalogObject}\n              />\n            )}\n            <SideSheet\n              key={'Create Transaction: Add Attachment'}\n              open={createTransactionOpenInnerSidesheetState?.attachments}\n              width={600}\n              title={t('transactions.sidesheet.addAttachment', {\n                defaultValue: 'Add Attachment'\n              })}\n              onClose={handleCloseCreateAttachmentSheet}\n              color='primary'\n            >\n              <UdpTransactionAttachmentUploader\n                attachmentTypes={transactionAttachmentTypes}\n                defaultAttachmentTypeCode={createDefaultAttachmentTypeCode}\n                attachmentProgress={attachmentProgress}\n                currentAttachments={currentAttachments}\n                setCurrentAttachments={setCurrentAttachments}\n                transaction={transaction}\n                previousAttachments={transactionAttachments}\n                setPreviousAttachments={setTransactionAttachments}\n                MAX_FILE_SIZE_MB={MAX_FILE_SIZE_MB}\n                allowedExtensions={allowedExtensions}\n                filePreview={filePreview}\n                setFilePreview={setFilePreview}\n              />\n            </SideSheet>\n          </div>\n        ),\n        buttonLabel: t('common.add', { defaultValue: 'Add' }),\n        buttonTwoLabel: (\n          <Badge badgeContent={currentAttachments?.length} color='primary'>\n            {t('transactions.sidesheet.addAttachment', {\n              defaultValue: 'Add Attachment'\n            })}\n          </Badge>\n        ),\n        buttonTwoAction: () =>\n          setCreateTransactionOpenInnerSidesheetState({ attachments: true })\n      },\n      {\n        open: openStates.viewTransaction,\n        closeSheet: () => handleSidesheet('view', false),\n        title: t('transactions.sidesheet.previewTitle', {\n          defaultValue: '{{label}} - Preview',\n          label: sheetLabel\n        }),\n        width: sidesheetWidth,\n        children: viewTransactionPage,\n        buttonLabel: !pdfViewPageId\n          ? t('common.download', { defaultValue: 'Download' })\n          : null\n      },\n      {\n        open: openStates.attachmentTransaction,\n        closeSheet: () => handleSidesheet('attachment', false),\n        title: t('transactions.sidesheet.attachmentForTitle', {\n          defaultValue: 'Attachment for {{label}}',\n          label: sheetLabel\n        }),\n        width: sidesheetWidth,\n        buttonLabel: t('common.download', { defaultValue: 'Download' }),\n        onSubmit: () => {\n          if (attachmentRef.current) {\n            attachmentRef.current.downloadSelectedFile();\n          }\n        },\n        children: (\n          <AttachmentTransaction\n            handleAttachmentTransaction={handleAttachmentTransaction}\n            attachmentRef={attachmentRef}\n            transaction={transaction}\n            domainName={domainName}\n            setSidesheetLoading={setSidesheetLoading}\n          />\n        )\n      },\n      {\n        open: openStates.workflowAction,\n        closeSheet: () => handleSidesheet('action', false),\n        title: t('transactions.sidesheet.workflowActionsTitle', {\n          defaultValue: 'Workflow Actions - {{label}}',\n          label: sheetLabel\n        }),\n        width: sidesheetWidth,\n        children: (\n          <WorkflowActions\n            transaction={transaction}\n            closeSideSheet={() => {\n              handleSidesheet('action', false);\n            }}\n            refreshGridData={refreshGridData}\n            handleSidesheet={handleSidesheet}\n            onTransactionStatusChange={onTransactionStatusChange}\n          />\n        )\n      },\n      {\n        open: openStates.editTransaction,\n        closeSheet: () => {\n          handleSidesheet('edit', false);\n          handleResetAttachmentState(true);\n        },\n        title: t('transactions.sidesheet.editTitle', {\n          defaultValue: 'Edit {{label}}',\n          label: sheetLabel\n        }),\n        width: sidesheetWidth,\n        buttonLabel: t('transactions.sidesheet.nextSteps', {\n          defaultValue: 'Next Steps'\n        }),\n        buttonOneDisabled: transactionIsClosed,\n        onSubmit: handleNextStepsAction,\n        buttonTwoLabel:\n          closedStatuses?.length === 1\n            ? t('transactions.sidesheet.closeDomain', {\n                defaultValue: 'Close {{domainName}}',\n                domainName\n              })\n            : null,\n        buttonTwoDisabled: transactionIsClosed || !hasClosedStatus,\n        buttonTwoAction: () => setDialogOpen(true),\n        children: (\n          <EditTransaction\n            transaction={transaction}\n            transactionTypeId={transactionTypeId}\n            transactionIsClosed={transactionIsClosed}\n            openInnerSidesheetState={editTransactionopenInnerSidesheetState}\n            setOpenInnerSidesheetState={\n              setEditTransactionOpenInnerSidesheetState\n            }\n            refreshGridData={refreshGridData}\n            closeSideSheet={() => {\n              handleSidesheet('edit', false);\n              handleResetAttachmentState(true);\n            }}\n            setSidesheetLoading={setSidesheetLoading}\n            setHasUnsavedChanges={setHasUnsavedChanges}\n            currentAttachments={currentAttachments}\n            setCurrentAttachments={setCurrentAttachments}\n            attachmentProgress={attachmentProgress}\n            transactionAttachmentTypes={transactionAttachmentTypes}\n            defaultAttachmentTypeCode={editDefaultAttachmentTypeCode}\n            transactionAttachments={transactionAttachments}\n            setTransactionAttachments={setTransactionAttachments}\n            filePreview={filePreview}\n            setFilePreview={setFilePreview}\n            domainName={domainName}\n            additionalPageParms={{\n              sidesheetParams: {\n                setSidesheetPrimaryButtonDisabled,\n                setSidesheetSecondaryButtonDisabled\n              }\n            }}\n            hideSaveChanges={\n              hideSaveChanges ||\n              transactionTypePageConfiguration?.hideSaveChanges\n            }\n            catalogObject={catalogObject}\n          />\n        )\n      },\n      {\n        open: openStates.createRevision,\n        closeSheet: () => handleSidesheet('createRevision', false),\n        title: t('transactions.sidesheet.createRevisionForTitle', {\n          defaultValue: 'Create Revision for {{domainName}}',\n          domainName\n        }),\n        width: sidesheetWidth,\n        onSubmit: handleCreateRevision,\n        children: (\n          <div className='udp-transaction-create-body'>\n            {busyOverlay}\n            <UdpTransactionCustomPage\n              transactionTypeId={transactionTypeId}\n              transactionUiActionType={\n                TransactionUiActionTypeEnums.Render_Create_Revision_Page\n              }\n              formRef={formRef}\n              transaction={transaction}\n              onSubmitSuccess={handleTransactionRevisionCreationSuccess}\n              refreshGridData={refreshGridData}\n              additionalPageParms={{\n                sidesheetParams: {\n                  setSidesheetPrimaryButtonDisabled,\n                  setSidesheetSecondaryButtonDisabled\n                }\n              }}\n            />\n          </div>\n        ),\n        buttonLabel: t('transactions.sidesheet.createRevision', {\n          defaultValue: 'Create Revision'\n        })\n      }\n    ];\n    return list;\n  }, [\n    openStates,\n    handleSidesheet,\n    handleAttachmentTransaction,\n    transaction,\n    domainName,\n    editTransactionopenInnerSidesheetState,\n    setEditTransactionOpenInnerSidesheetState,\n    sheetLabel,\n    refreshGridData,\n    transactionTypeId,\n    handleTransactionCreation,\n    handleTransactionCreationSuccess,\n    hasClosedStatus,\n    handleCreateRevision,\n    transactionIsClosed,\n    viewTransactionPage,\n    pdfViewPageId,\n    sidesheetWidth,\n    handleNextStepsAction,\n    transactionCreatePageId,\n    createTransactionOpenInnerSidesheetState,\n    handleCloseCreateAttachmentSheet,\n    busyOverlay,\n    t,\n    currentAttachments,\n    setCurrentAttachments,\n    attachmentProgress,\n    setAttachmentProgress,\n    transactionAttachmentTypes,\n    createDefaultAttachmentTypeCode,\n    editDefaultAttachmentTypeCode,\n    transactionAttachments,\n    setTransactionAttachments,\n    filePreview,\n    setFilePreview,\n    handleResetAttachmentState,\n    handleTransactionRevisionCreationSuccess,\n    hideSaveChanges,\n    transactionTypePageConfiguration,\n    onTransactionStatusChange,\n    closedStatuses\n  ]);\n\n  useEffect(() => {\n    if (\n      (openStates?.addTransaction || openStates?.editTransaction) &&\n      !transactionAttachmentTypes\n    ) {\n      setAttachmentProgress(true);\n      fetchTransactionAttachmentType().then(() => {\n        setAttachmentProgress(false);\n      });\n    }\n  }, [\n    fetchTransactionAttachmentType,\n    transactionAttachmentTypes,\n    openStates.addTransaction,\n    openStates.editTransaction\n  ]);\n\n  return (\n    <>\n      {openStates &&\n        sidesheetList.map((item) => {\n          return (\n            <SideSheet\n              key={item.title}\n              open={item.open}\n              width={sidesheetWidth}\n              title={item.title}\n              onClose={\n                creationStage\n                  ? undefined /* a create or revision is mid-flight */\n                  : item.closeSheet\n              }\n              noPadding={\n                openStates.attachmentTransaction || openStates.editTransaction\n              }\n              buttonLabel={item?.buttonLabel}\n              onSubmit={item?.onSubmit}\n              color='primary'\n              buttonTwoLabel={item?.buttonTwoLabel}\n              buttonTwoAction={item?.buttonTwoAction}\n              buttonOneDisabled={\n                item?.buttonOneDisabled ||\n                sidesheetPrimaryButtonDisabled ||\n                sidesheetLoading\n              }\n              buttonTwoDisabled={\n                item?.buttonTwoDisabled || sidesheetSecondaryButtonDisabled\n              }\n              progress={sidesheetLoading && !creationStageLabel}\n              variant='indeterminate'\n            >\n              <div>{item.children}</div>\n            </SideSheet>\n          );\n        })}\n      <FluentDialog\n        title={t('transactions.sidesheet.closeTransactionTitle', {\n          defaultValue: 'Close Transaction'\n        })}\n        message={t('transactions.sidesheet.closeTransactionMessage', {\n          defaultValue:\n            'Are you sure you want to close transaction for {{label}}?',\n          label: transaction?.entityBusinessKey || ''\n        })}\n        labelOne={t('common.confirm', { defaultValue: 'Confirm' })}\n        actionOne={handleConfirmCloseTransactionDialog}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleDialogClose}\n        open={dialogOpen}\n        handleClose={handleDialogClose}\n        loading={closingTransactionLoading}\n      />\n      <FluentDialog\n        title={t('transactions.sidesheet.unsavedChangesTitle', {\n          defaultValue: 'Unsaved Changes'\n        })}\n        message={t('transactions.sidesheet.unsavedChangesMessage', {\n          defaultValue:\n            'You have unsaved changes. Are you sure you want to go to next steps?'\n        })}\n        labelOne={t('common.confirm', { defaultValue: 'Confirm' })}\n        actionOne={handleConfirmUnsavedChangesDialog}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleUnsavedChangesDialogClose}\n        open={unsavedChangesDialogOpen}\n        handleClose={handleUnsavedChangesDialogClose}\n        loading={closingTransactionLoading}\n      />\n      <FluentDialog\n        title={t('transactions.sidesheet.missingAttachmentTypeTitle', {\n          defaultValue: 'Missing attachment type'\n        })}\n        message={\n          untypedAttachmentCount === 1\n            ? t('transactions.sidesheet.missingAttachmentTypeMessageOne', {\n                defaultValue:\n                  '{{count}} file has no attachment type and will not be uploaded. Remove it, or go back and choose a type.',\n                count: untypedAttachmentCount\n              })\n            : t('transactions.sidesheet.missingAttachmentTypeMessageOther', {\n                defaultValue:\n                  '{{count}} files have no attachment type and will not be uploaded. Remove them, or go back and choose a type.',\n                count: untypedAttachmentCount\n              })\n        }\n        labelOne={t('common.remove', { defaultValue: 'Remove' })}\n        actionOne={handleRemoveUntypedAttachments}\n        labelTwo={t('common.back', { defaultValue: 'Back' })}\n        actionTwo={() => setMissingTypeDialogOpen(false)}\n        open={missingTypeDialogOpen}\n        handleClose={() => setMissingTypeDialogOpen(false)}\n      />\n    </>\n  );\n};\n\nexport default UdpTransactionSidesheet;\n"],"mappings":"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"}