{"version":3,"file":"WorkflowActions.mjs","names":["React","useState","useCallback","useMemo","useRef","useTranslation","DocumentIcon","FluentDialog","SideSheet","useAxiosMutate","ConfigService","UdpActionCard","getIconFromName","TransactionActionTypeEnums","TransactionRuleTypeEnums","useTransactionEngine","UdpTransactionCustomPage","useHandleAxiosSnackbar","TransactionActionButton","t0","$","_c","icon","primaryText","secondaryText","onClick","action","t1","actionCardIcon","t2","t3","t4","WorkflowActions","transaction","closeSideSheet","refreshGridData","handleSidesheet","dialogOpen","setDialogOpen","dialogUserStrings","setDialogUserStrings","selectedAction","setSelectedAction","sideSheetOpen","setSideSheetOpen","loading","setLoading","sidesheetPrimaryButtonDisabled","setSidesheetPrimaryButtonDisabled","formRef","getTransactionTypeTransactionActions","transactionTypeId","handleErrorSnackbar","handleSuccessSnackbar","handleOnCloseSideSheet","handleSubmitWorkflowAction","current","form","submit","handleSubmitSuccessfulWorkflowAction","response","transactionTypeTransactionActions","Sidesheet","data","transactionData","postTransactionData","productV1ApiUrl","method","i18n","t","handleDialogOpen","title","message","handleDialogClose","handleConfirmActionDialog","url","transactionTypeTransactionActionId","transactionId","status","apiResult","actionApiResult","isSuccessful","success","defaultValue","errorMessage","Error","event","handleOnActionClick","pageId","parameters","transactionActionId","Open_Edit_Transaction_Sidesheet","name","description","TransactionActionButtons","length","map","sidesheetParams"],"sources":["../../../../../src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.jsx"],"sourcesContent":["import React, { useState, useCallback, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { DocumentIcon } from '@fluentui/react-icons';\nimport { FluentDialog, SideSheet } from '../../../../UI';\nimport { useAxiosMutate } from '../../../../utilities';\nimport { ConfigService } from '../../../../configService';\nimport { UdpActionCard } from '../../../../UI/inputs/buttons/UdpActionCard/UdpActionCard';\nimport { getIconFromName } from '../../../../utilities/tree';\nimport './WorkflowActions.css';\nimport { TransactionActionTypeEnums, TransactionRuleTypeEnums } from '../../../../enums/unitySystemEnums';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport UdpTransactionCustomPage from '../components/UdpTransactionCustomPage';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\n\nconst TransactionActionButton = ({\n  icon,\n  primaryText,\n  secondaryText,\n  onClick,\n  action\n}) => {\n  const actionCardIcon = useMemo(() => getIconFromName(icon), [icon]);\n\n  return (\n    <UdpActionCard\n      icon={actionCardIcon ? actionCardIcon : DocumentIcon}\n      primaryText={primaryText}\n      secondaryText={secondaryText}\n      onClick={() => {\n        onClick(action);\n      }}\n    />\n  );\n};\n\nconst WorkflowActions = ({ transaction, closeSideSheet, refreshGridData, handleSidesheet }) => {\n  const [dialogOpen, setDialogOpen] = useState(true);\n  const [dialogUserStrings, setDialogUserStrings] = useState(null);\n  const [selectedAction, setSelectedAction] = useState(null);\n  const [sideSheetOpen, setSideSheetOpen] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [sidesheetPrimaryButtonDisabled, setSidesheetPrimaryButtonDisabled] =\n    useState(false);\n\n  const formRef = useRef(null);\n\n  const { getTransactionTypeTransactionActions } = useTransactionEngine(\n    transaction?.transactionTypeId\n  );\n\n  const { handleErrorSnackbar, handleSuccessSnackbar } =\n    useHandleAxiosSnackbar();\n\n  const handleOnCloseSideSheet = useCallback(() => {\n    setSideSheetOpen(false);\n  }, []);\n\n  const handleSubmitWorkflowAction = useCallback(async () => {\n    setLoading(true);\n    await formRef.current?.form?.submit();\n    setLoading(false);\n  }, [formRef]);\n\n  const handleSubmitSuccessfulWorkflowAction = useCallback(\n    (response) => {\n      handleOnCloseSideSheet();\n      closeSideSheet();\n      refreshGridData();\n    },\n    [handleOnCloseSideSheet, refreshGridData, closeSideSheet]\n  );\n\n  const transactionTypeTransactionActions = useMemo(() => {\n    return (\n      getTransactionTypeTransactionActions(\n        transaction,\n        TransactionRuleTypeEnums.Sidesheet\n      ) || []\n    );\n  }, [getTransactionTypeTransactionActions, transaction]);\n\n  // Base URL and url get overwritten in postTransactionData function call in handleConfirmActionDialog()\n  const [{ data: transactionData }, postTransactionData] = useAxiosMutate(\n    `${ConfigService.productV1ApiUrl}`,\n    'udptransactiontypeTransactionAction',\n    {\n      method: 'post'\n    },\n    {}\n  );\n\n  const i18n = useTranslation().t;\n\n  const handleDialogOpen = useCallback((title, message) => {\n    setDialogUserStrings({ title, message });\n    setDialogOpen(true);\n  }, []);\n\n  const handleDialogClose = useCallback(() => {\n    setDialogOpen(false);\n  }, []);\n\n  const handleConfirmActionDialog = useCallback(async () => {\n    setDialogOpen(true);\n    handleDialogClose();\n    setLoading(true);\n    try {\n      const response = await postTransactionData({\n        // Change URL to config\n        url:\n          `${ConfigService.productV1ApiUrl}` +\n          `/udptransactiontypeTransactionAction/${selectedAction.transactionTypeTransactionActionId}/transaction/${transaction.transactionId}/submit`,\n        data: {}\n      });\n      const { status, data } = response || {};\n      const apiResult = data?.actionApiResult;\n\n      if (status === 200) {\n        const isSuccessful = !apiResult || apiResult.success;\n\n        if (isSuccessful) {\n          handleSuccessSnackbar(\n            i18n('transactions.sidesheet.workflowSubmitSuccess', {\n              defaultValue: 'Successfully submitted!'\n            })\n          );\n          closeSideSheet();\n          refreshGridData();\n        } else if (apiResult?.errorMessage) {\n          handleErrorSnackbar(new Error(apiResult.errorMessage));\n        }\n      }\n    } catch (event) {\n      handleSuccessSnackbar(i18n(event.message));\n    }\n    setLoading(false);\n  }, [\n    postTransactionData,\n    handleDialogClose,\n    transaction,\n    selectedAction,\n    i18n,\n    closeSideSheet,\n    refreshGridData,\n    handleSuccessSnackbar,\n    handleErrorSnackbar\n  ]);\n  const handleOnActionClick = useCallback(\n    (action) => {\n      const pageId = action.parameters.pageId;\n      setSelectedAction(action);\n      if (pageId) {\n        setSideSheetOpen(true);\n      } else if (action.transactionActionId == TransactionActionTypeEnums.Open_Edit_Transaction_Sidesheet) {\n        handleSidesheet('edit', true, transaction);\n      } else {\n        handleDialogOpen(action.name, action.description);\n      }\n    },\n    [handleDialogOpen, transaction, handleSidesheet]\n  );\n\n  const TransactionActionButtons = useMemo(() => {\n    if (!transactionTypeTransactionActions.length) {\n      return null;\n    }\n    return transactionTypeTransactionActions?.map((action) => (\n      <TransactionActionButton\n        key={action.transactionTypeTransactionActionId}\n        primaryText={action.name}\n        secondaryText={action.description}\n        icon={action.icon}\n        onClick={handleOnActionClick}\n        action={action}\n      />\n    ));\n  }, [transactionTypeTransactionActions, handleOnActionClick]);\n\n  return (\n    <>\n      <div className='transaction-action-buttons-container'>\n        {TransactionActionButtons}\n      </div>\n\n      {dialogUserStrings && (\n        <FluentDialog\n          title={i18n('transactions.sidesheet.proceedConfirmTitle', {\n            defaultValue: 'Are you sure you want to proceed with \"{{title}}\"?',\n            title: dialogUserStrings.title\n          })}\n          message={dialogUserStrings.message}\n          labelOne={i18n('common.confirm', { defaultValue: 'Confirm' })}\n          actionOne={handleConfirmActionDialog}\n          labelTwo={i18n('common.cancel', { defaultValue: 'Cancel' })}\n          actionTwo={handleDialogClose}\n          open={dialogOpen}\n          handleClose={handleDialogClose}\n        />\n      )}\n\n      <SideSheet\n        open={sideSheetOpen}\n        title={selectedAction?.name} // To Change\n        onClose={handleOnCloseSideSheet}\n        width={600}\n        buttonLabel={i18n('common.submit', { defaultValue: 'Submit' })}\n        onSubmit={handleSubmitWorkflowAction}\n        progress={loading}\n        variant='indeterminate'\n        color='primary'\n        buttonOneDisabled={loading || sidesheetPrimaryButtonDisabled}\n      >\n        {selectedAction && selectedAction.parameters?.pageId && (\n          <UdpTransactionCustomPage\n            pageId={selectedAction.parameters.pageId}\n            transaction={transaction}\n            formRef={formRef}\n            transactionTypeTransactionActionId={\n              selectedAction.transactionTypeTransactionActionId\n            }\n            onSubmitSuccess={handleSubmitSuccessfulWorkflowAction}\n            refreshGridData={refreshGridData}\n            additionalPageParms={{\n              sidesheetParams: {\n                setSidesheetPrimaryButtonDisabled\n              }\n            }}\n          />\n        )}\n      </SideSheet>\n    </>\n  );\n};\n\nexport default WorkflowActions;\n"],"mappings":"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"}