udp-react-enterprise-component-library 25.18.1-beta.56 → 25.18.1-beta.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"UdpTransactionTypesPage-C-TdPgtF.js","names":["Form","handleSubmit","Field","UdpTransactionTypeForm","Form","handleSubmit","Field","UdpTransactionTypeStatusForm","transactionTypeStatus","UdpTransactionTypeStatusCreateAndEditSidesheet","useStyles","Field","Form","handleSubmit","UdpTransactionTypeTransactionActionFormFields","UdpTransactionTypeTransactionActionForm","transactionTypeTransactionAction","UdpTransactionTypeTransactionActionCreateAndEditSidesheet","Form","handleSubmit","Field","UdpTransactionUiActionForm","transactionUiAction","UdpTransactionUiActionCreateAndEditSidesheet","useStyles","Form","handleSubmit","Field","UdpTransactionTypeConfigurationForm","Form","handleSubmit","Field","UdpTransactionTypeConfigurationTransactionActionForm","transactionTypeConfigurationTransactionAction","UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet","transactionTypeConfiguration","UdpTransactionTypeConfigurationCreateAndEditSidesheet","UdpTransactionTypeConfigurationTransactionActionSidesheet","Form","handleSubmit","Field","UdpTransactionAttachmentTypeForm","transactionAttachmentType","UdpTransactionAttachmentTypeCreateAndEditSidesheet","LinearProgress","UdpTransactionTypeSidesheet","UdpTransactionTypeStatusSidesheet","UdpTransactionTypeTransactionActionSidesheet","UdpTransactionUiActionSidesheet","UdpTransactionTypeConfigurationSidesheet","UdpTransactionAttachmentTypeSidesheet"],"sources":["../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeSidesheet.jsx","../src/udp/utilities/transactionConstants.js","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeStatusForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeStatusCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeStatusSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeTransactionActionFormFields.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeTransactionActionForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeTransactionActionCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeTransactionActionSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionUiActionForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionUiActionCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionUiActionSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationTransactionActionForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationTransactionActionSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeConfigurationSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionAttachmentTypeForm.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeCreateAndEditSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionAttachmentTypeSidesheet.jsx","../src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.jsx","../src/udp/pages/UdpTransactionTypesPage/index.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormControlLabel, Switch } from '@material-ui/core';\nimport { Field, Form } from '../../../../utilities/form';\nimport {\n AmbientAutoComplete,\n FluentTextField\n} from '../../../../UI/inputs/textField';\nimport { LayoutUnit } from '../../../../layout';\n\nconst UdpTransactionTypeForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n domainNameOptions,\n onSelectDomainName,\n domainFieldOptions\n } = props;\n const handleSubmitRef = useRef();\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(\n (formData) => {\n onSubmit(formData, initialData);\n },\n [initialData, onSubmit]\n );\n\n return (\n <Form\n onSubmit={handleSubmit}\n render={({ handleSubmit, form }) => {\n handleSubmitRef.current = handleSubmit;\n const handleDomainNameChange = (value) => {\n const nextDomainName = value || '';\n const currentDomainName = form.getState().values?.domainName || '';\n if (currentDomainName !== nextDomainName) {\n onSelectDomainName?.(nextDomainName);\n form.change('domainFields', []);\n }\n };\n const handleDomainFieldTypeChange = (value) => {\n if (!value) {\n form.change('domainFieldValue', '');\n }\n };\n const hasRevision = !!form.getState().values?.hasRevision;\n const hasDomainFieldType = !!form.getState().values?.domainFieldType;\n const parseHasRevision = (value) => {\n const nextValue = value?.target ? !!value.target.checked : !!value;\n if (!nextValue) {\n form.change('revisionField', null);\n }\n return nextValue;\n };\n return (\n <>\n <Field\n component={FluentTextField}\n label={t('Name')}\n id='name'\n name='name'\n fullWidth\n variant='outlined'\n margin='normal'\n size='small'\n required\n initialValue={initialData?.name || ''}\n />\n <Field\n component={AmbientAutoComplete}\n label={t('Domain')}\n id='domainName'\n name='domainName'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n initialValue={initialData?.domainName}\n options={domainNameOptions || []}\n getOptionLabelFunction={(option) => option}\n additionalOnChangeAction={handleDomainNameChange}\n />\n <Field\n component={AmbientAutoComplete}\n label='Sub-Type'\n id='domainFieldType'\n name='domainFieldType'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n initialValue={initialData?.domainFieldType}\n options={domainFieldOptions || []}\n getOptionLabelFunction={(option) => option}\n additionalOnChangeAction={handleDomainFieldTypeChange}\n />\n {hasDomainFieldType && (\n <Field\n component={FluentTextField}\n label={t('Sub-Type Value')}\n id='domainFieldValue'\n name='domainFieldValue'\n fullWidth\n variant='outlined'\n margin='normal'\n size='small'\n initialValue={initialData?.domainFieldValue || ''}\n />\n )}\n <Field\n component={AmbientAutoComplete}\n label='Grid Columns'\n id='domainFields'\n name='domainFields'\n variant='outlined'\n isMultiple={true}\n disableCloseOnSelect={true}\n initialValue={initialData?.domainFields}\n options={domainFieldOptions || []}\n getOptionLabelFunction={(option) => option}\n helperText={t(\n 'Field properties to be displayed as columns in the transaction grid'\n )}\n />\n <Field\n component={AmbientAutoComplete}\n label={t('Field Label')}\n id='domainFieldLabel'\n name='domainFieldLabel'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n initialValue={initialData?.domainFieldLabel}\n options={domainFieldOptions || []}\n getOptionLabelFunction={(option) => option}\n helperText={t(\n 'Field property to be used in transaction page labels'\n )}\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={\n <Field\n component={Switch}\n id='enabled'\n name='enabled'\n type='checkbox'\n initialValue={!!initialData?.enabled}\n />\n }\n label={t('Enabled')}\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={\n <Field\n component={Switch}\n id='hasRevision'\n name='hasRevision'\n type='checkbox'\n initialValue={!!initialData?.hasRevision}\n parse={parseHasRevision}\n />\n }\n label={t('Allow Revisions')}\n />\n {hasRevision && (\n <Field\n component={AmbientAutoComplete}\n label='Revision Field'\n id='revisionField'\n name='revisionField'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n initialValue={initialData?.revisionField}\n options={domainFieldOptions || []}\n getOptionLabelFunction={(option) => option}\n />\n )}\n </>\n );\n }}\n />\n );\n};\n\nexport default forwardRef(UdpTransactionTypeForm);\n","import React, { useCallback, useMemo, useRef } from 'react';\nimport { SideSheet } from '../../../../UI/surfaces/SideSheet';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionTypeForm from '../forms/UdpTransactionTypeForm';\n\nconst UdpTransactionTypeSidesheet = (props) => {\n const {\n initialTransactionType,\n isSideSheetOpen,\n handleSideSheet,\n setSelectedDomainName,\n handleCreateTransactionType,\n handleUpdateTransactionType,\n catalogObjects,\n catalogObjectProperties\n } = props;\n\n const isEditing = !!initialTransactionType;\n const formRef = useRef();\n const { t } = useTranslation();\n\n // Get the list of catalogObjectNames\n const catalogObjectNames = useMemo(() => {\n const catalogObjectList = catalogObjects?.ctlg?.catalogObjectList;\n if (!catalogObjectList) return [];\n return catalogObjectList.map((obj) => obj.catalogObjectName);\n }, [catalogObjects]);\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionType(values, initialData);\n } else {\n await handleCreateTransactionType(values);\n }\n }, [handleCreateTransactionType, handleUpdateTransactionType]);\n\n const handleCloseSidesheet = useCallback((isOpen, domainName) => {\n handleSideSheet(isOpen);\n setSelectedDomainName(domainName);\n }, [handleSideSheet, setSelectedDomainName]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={500}\n title={isEditing ? t('Edit Transaction Type') : t('Create Transaction Type')}\n onClose={() => handleCloseSidesheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionTypeForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionType}\n domainNameOptions={catalogObjectNames}\n onSelectDomainName={setSelectedDomainName}\n domainFieldOptions={catalogObjectProperties}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionTypeSidesheet;\n","export const TRANSACTION_TYPE_STATUS_COLORS = [\n { name: 'Default', value: 'gray' },\n { name: 'Warning', value: 'warning' },\n { name: 'Info', value: 'info' },\n { name: 'Success', value: 'success' },\n { name: 'Error', value: 'error' },\n];\n\nexport const DOMAIN_VALUE_OPERATORS = [\n {\n value: '==',\n name: 'Equals',\n },\n {\n value: '!=',\n name: 'Does not Equal',\n },\n {\n value: '>',\n name: 'Greater Than',\n },\n {\n value: '<',\n name: 'Less Than',\n },\n {\n value: '>=',\n name: 'Greater Than or Equal To',\n },\n {\n value: '<=',\n name: 'Less Than or Equal To',\n },\n {\n value: 'or',\n name: 'Or',\n },\n {\n value: 'and',\n name: 'And',\n },\n {\n value: '!',\n name: 'Is Empty',\n },\n {\n value: '!!',\n name: 'Is Not Empty',\n },\n];\n","import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport { FormControlLabel, Switch } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { Field, Form } from '../../../../utilities/form';\nimport { AmbientAutoComplete, FluentTextField } from '../../../../UI/inputs/textField';\nimport { LayoutUnit } from '../../../../layout';\nimport { TRANSACTION_TYPE_STATUS_COLORS } from '../../../utilities/transactionConstants';\n\nconst UdpTransactionTypeStatusForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n } = props;\n const handleSubmitRef = useRef();\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(formData => {\n onSubmit(formData, initialData);\n }, [initialData, onSubmit]);\n\n return (\n <Form\n onSubmit={handleSubmit}\n render={({ handleSubmit }) => {\n handleSubmitRef.current = handleSubmit;\n return (\n <>\n <Field\n component={FluentTextField}\n label={t(\"Name\")}\n id=\"name\"\n name=\"name\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n initialValue={initialData?.name || ''}\n />\n <Field\n component={FluentTextField}\n label={t(\"Code\")}\n id=\"code\"\n name=\"code\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n initialValue={initialData?.code || ''}\n />\n <Field\n component={AmbientAutoComplete}\n label={t(\"Color\")}\n id=\"color\"\n name=\"color\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={TRANSACTION_TYPE_STATUS_COLORS || []}\n getOptionLabelFunction={option => option.name}\n initialValue={TRANSACTION_TYPE_STATUS_COLORS?.find(color => color?.value === initialData?.color) || null}\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={(\n <Field\n component={Switch}\n id=\"isDefault\"\n name=\"isDefault\"\n type=\"checkbox\"\n initialValue={!!initialData?.isDefault}\n />\n )}\n label={t(\"Default\")}\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={(\n <Field\n component={Switch}\n id=\"isClosedStatus\"\n name=\"isClosedStatus\"\n type=\"checkbox\"\n initialValue={!!initialData?.isClosedStatus}\n />\n )}\n label={t(\"Closed Status\")}\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={(\n <Field\n component={Switch}\n id=\"isCancelledStatus\"\n name=\"isCancelledStatus\"\n type=\"checkbox\"\n initialValue={!!initialData?.isCancelledStatus}\n />\n )}\n label={t(\"Cancelled Status\")}\n />\n </>\n )\n }}\n />\n )\n}\n\nexport default forwardRef(UdpTransactionTypeStatusForm);\n","import React, { useCallback, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../../../UI';\nimport UdpTransactionTypeStatusForm from '../forms/UdpTransactionTypeStatusForm';\n\n\n\nconst UdpTransactionTypeStatusCreateAndEditSidesheet = (props) => {\n const {\n initialTransactionTypeStatus,\n isSideSheetOpen,\n handleSideSheet,\n handleCreateTransactionTypeStatus,\n handleUpdateTransactionTypeStatus\n } = props;\n\n const isEditing = !!initialTransactionTypeStatus;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionTypeStatus(values, initialData);\n } else {\n await handleCreateTransactionTypeStatus(values);\n }\n }, [handleCreateTransactionTypeStatus, handleUpdateTransactionTypeStatus]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={500}\n title={isEditing ? t('Edit Status') : t('Create Status')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionTypeStatusForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionTypeStatus}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionTypeStatusCreateAndEditSidesheet;\n","import React, { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { useTranslation } from 'react-i18next';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport UdpTransactionTypeStatusCreateAndEditSidesheet from './UdpTransactionTypeStatusCreateAndEditSidesheet';\nimport { TRANSACTION_TYPE_STATUS_COLORS } from '../../../utilities/transactionConstants';\n\nconst UdpTransactionTypeStatusSidesheet = (props, ref) => {\n const {\n transactionType,\n transactionTypeStatus,\n isSideSheetOpen,\n isTransactionTypeStatusCreateOrEditSidesheetOpen,\n handleTransactionTypeStatusSideSheet,\n handleCreateOrEditTransactionTypeStatusSideSheet,\n handleCreateTransactionTypeStatus,\n handleUpdateTransactionTypeStatus,\n handleDeleteTransactionTypeStatus\n } = props;\n\n const transactionTypeStatusGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n transactionTypeStatusGridApiRef?.current?.refreshServerSide();\n }\n }));\n\n const getStatusLabel = (node) => {\n let label = '';\n label = TRANSACTION_TYPE_STATUS_COLORS.find(\n (color) => color.value === node.data.color\n )?.name;\n return label || '';\n };\n\n const getStatusColor = useMemo(() => {\n return {\n Default: 'gray',\n Warning: 'warning',\n Info: 'info',\n Success: 'success',\n Error: 'error'\n };\n }, []);\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Code'),\n field: 'code',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Color'),\n field: 'color',\n resizable: true,\n sortable: false,\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: getStatusColor,\n getStatusValue: getStatusLabel\n }\n },\n {\n headerName: t('Default'),\n field: 'isDefault',\n resizable: true,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Closed Status'),\n field: 'isClosedStatus',\n resizable: true,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Cancelled Status'),\n field: 'isCancelledStatus',\n resizable: true,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionTypeStatus) => {\n handleCreateOrEditTransactionTypeStatusSideSheet(\n true,\n transactionTypeStatus?.data\n );\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionTypeStatus) => {\n handleDeleteTransactionTypeStatus(transactionTypeStatus?.data);\n }\n }\n ]\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: (params) => params.data\n }\n ];\n }, [\n t,\n handleCreateOrEditTransactionTypeStatusSideSheet,\n handleDeleteTransactionTypeStatus\n ]);\n\n const headerConfig = {\n title: t('Statuses'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () => handleCreateOrEditTransactionTypeStatusSideSheet(true)\n }\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n transactionTypeStatusGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionType?.transactionTypeId) {\n filterElements = [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionType?.transactionTypeId,\n groupId: 1\n }\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionTypeStatus/search`,\n customSearchObject: {\n filterElements: filterElements\n }\n };\n }\n return {};\n }, [transactionType]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={900}\n title={t('Manage Statuses')}\n onClose={() => handleTransactionTypeStatusSideSheet(false)}\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionTypeStatusCreateAndEditSidesheet\n initialTransactionTypeStatus={transactionTypeStatus}\n isSideSheetOpen={isTransactionTypeStatusCreateOrEditSidesheetOpen}\n handleCreateTransactionTypeStatus={handleCreateTransactionTypeStatus}\n handleUpdateTransactionTypeStatus={handleUpdateTransactionTypeStatus}\n handleSideSheet={handleCreateOrEditTransactionTypeStatusSideSheet}\n />\n </SideSheet>\n );\n};\n\nexport default forwardRef(UdpTransactionTypeStatusSidesheet);\n","import React, { useEffect } from 'react';\nimport { Field } from '../../../../utilities/form';\nimport { AmbientAutoComplete, FluentTextField } from '../../../../UI/inputs/textField';\nimport { FluentButton } from '../../../../UI/inputs/buttons';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { StatusCircleErrorXIcon } from '@fluentui/react-icons';\nimport { useForm, useFormState } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n domainFields: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n justifyContent: 'flex-start',\n '& > *': {\n marginRight: theme.spacing(2),\n },\n },\n addRemoveButtons: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n margin: `${theme.spacing(2)}px 0 0 ${-theme.spacing(2)}px`,\n '& > *': {\n margin: `0 ${theme.spacing(2)}px`,\n },\n },\n removeIcon: {\n fontSize: theme.spacing(3.5),\n marginTop: theme.spacing(1),\n },\n noRemoveIcon: {\n marginLeft: theme.spacing(3.5),\n },\n}));\n\nconst UdpTransactionTypeTransactionActionFormFields = (props) => {\n const {\n transactionActionOptions,\n catalogObjectProperties,\n actionApiOptions,\n pageOptions,\n transactionTypeStatusOptions,\n showMandatoryFields,\n showHiddenFields,\n showToStatusField,\n showActionApiField,\n showPageField,\n showDomainDataToUpdateFields,\n pushToFieldArray\n } = props;\n const { t } = useTranslation();\n const classes = useStyles();\n\n const form = useForm();\n const { values } = useFormState();\n\n // Clear the fields when they are hidden\n useEffect(() => {\n if (!showMandatoryFields) form.change('mandatoryFields', []);\n if (!showHiddenFields) form.change('hiddenFields', []);\n if (!showToStatusField) form.change('toStatus', null);\n if (!showActionApiField) form.change('actionApiId', null);\n if (!showPageField) form.change('pageId', []);\n if (!showDomainDataToUpdateFields) form.change('domainDataToUpdate', [[]]);\n }, [\n form,\n showMandatoryFields,\n showHiddenFields,\n showToStatusField,\n showActionApiField,\n showPageField,\n showDomainDataToUpdateFields,\n values.transactionAction\n ]);\n\n return (\n <>\n <Field\n component={FluentTextField}\n label={t(\"Name\")}\n id=\"name\"\n name=\"name\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n />\n <Field\n component={FluentTextField}\n label={t(\"Description\")}\n id=\"description\"\n name=\"description\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n />\n <Field\n component={FluentTextField}\n label={t(\"Icon\")}\n id=\"icon\"\n name=\"icon\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n />\n <Field\n component={AmbientAutoComplete}\n label={t(\"Transaction Action\")}\n id=\"transactionAction\"\n name=\"transactionAction\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={transactionActionOptions || []}\n getOptionLabelFunction={option => option.name}\n valueForChange={value => {\n return value\n }}\n required\n />\n {/* Parameters section */}\n {/* TransactionTypeStatus */}\n {showToStatusField &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"To Status\")}\n id=\"toStatus\"\n name=\"toStatus\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={transactionTypeStatusOptions || []}\n getOptionLabelFunction={option => option.name}\n />\n }\n {showMandatoryFields &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"Mandatory Fields\")}\n id=\"mandatoryFields\"\n name=\"mandatoryFields\"\n variant=\"outlined\"\n isMultiple={true}\n disableCloseOnSelect={true}\n options={catalogObjectProperties || []}\n getOptionLabelFunction={option => option}\n />\n }\n {showHiddenFields &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"Hidden Fields\")}\n id=\"hiddenFields\"\n name=\"hiddenFields\"\n variant=\"outlined\"\n isMultiple={true}\n disableCloseOnSelect={true}\n options={catalogObjectProperties || []}\n getOptionLabelFunction={option => option}\n />\n }\n {showActionApiField &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"Action Api\")}\n id=\"actionApiId\"\n name=\"actionApiId\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={actionApiOptions || []}\n getOptionLabelFunction={option => option.name}\n />\n }\n {showPageField &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"Page\")}\n id=\"pageId\"\n name=\"pageId\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={pageOptions || []}\n getOptionLabelFunction={option => option.name}\n />\n }\n {showDomainDataToUpdateFields && (\n <>\n <div className={classes.addRemoveButtons}>\n <FluentButton\n variant=\"contained\"\n color=\"primary\"\n onClick={() => pushToFieldArray('domainDataToUpdate', undefined)}\n >\n {t('Add a Domain Field')}\n </FluentButton>\n </div>\n <FieldArray name=\"domainDataToUpdate\">\n {({ fields }) =>\n fields.map((name, index) => (\n <div key={`${name}${index}`} className={classes.domainFields}>\n <Field\n component={AmbientAutoComplete}\n label={index === 0 && t(\"Field\")}\n name={`${name}[0]`}\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={catalogObjectProperties || []}\n getOptionLabelFunction={option => option}\n onChange={() => {}}\n />\n <Field\n component={FluentTextField}\n label={index === 0 && t(\"Value\")}\n name={`${name}[1]`}\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n onChange={() => {}}\n />\n <span\n onClick={() => fields.remove(index)}\n style={{ cursor: 'pointer' }}\n className={classes.removeIcon}\n >\n <StatusCircleErrorXIcon/>\n </span>\n </div>\n ))\n }\n </FieldArray>\n </>\n )}\n </>\n );\n};\n\nexport default UdpTransactionTypeTransactionActionFormFields;\n","import React, { forwardRef, useCallback, useImperativeHandle, useMemo, useRef } from 'react';\nimport { arrayMutators, Form } from '../../../../utilities/form';\nimport UdpTransactionTypeTransactionActionFormFields from './UdpTransactionTypeTransactionActionFormFields';\nimport { UdpTransactionActionEnums } from '../../../../enums';\n\nconst baseActionsList = [\n UdpTransactionActionEnums.Send_Email,\n UdpTransactionActionEnums.Create_Reminder,\n UdpTransactionActionEnums.Custom_Client_Action\n];\n\nconst UdpTransactionTypeTransactionActionForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n transactionActionOptions,\n catalogObjectProperties,\n actionApiOptions,\n pageOptions,\n transactionTypeStatusOptions\n } = props;\n const handleSubmitRef = useRef();\n\n const formInitialValues = useMemo(() => {\n let formattedData;\n if (!initialData) return;\n formattedData = {\n ...initialData,\n transactionAction: transactionActionOptions?.find(transactionAction => transactionAction?.transactionActionId === initialData?.transactionActionId),\n toStatus: transactionTypeStatusOptions?.find(tts => tts?.transactionTypeStatusId === initialData?.parameters?.toStatus),\n mandatoryFields: initialData?.parameters?.mandatoryFields,\n hiddenFields: initialData?.parameters?.hiddenFields,\n actionApiId: actionApiOptions?.find(actionApi => actionApi?.actionApiId === initialData?.parameters?.actionApiId),\n pageId: pageOptions?.find(page => page?.pageId === initialData?.parameters?.pageId),\n domainDataToUpdate: initialData?.parameters?.domainDataToUpdate ? Object.entries(initialData?.parameters?.domainDataToUpdate) : [[]]\n }\n return formattedData;\n }, [\n initialData,\n transactionActionOptions,\n transactionTypeStatusOptions,\n actionApiOptions,\n pageOptions\n ]);\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(formData => {\n onSubmit(formData, initialData);\n }, [initialData, onSubmit]);\n\n return (\n <Form\n onSubmit={handleSubmit}\n mutators={{\n ...arrayMutators,\n }}\n initialValues={{\n ...formInitialValues,\n }}\n render={({ handleSubmit, form }) => {\n handleSubmitRef.current = handleSubmit;\n const push = form?.mutators?.push ?? (() => {});\n const transactionActionName = form?.getState()?.values?.transactionAction?.name;\n const showMandatoryFields = transactionActionName === UdpTransactionActionEnums.Set_Mandatory_Fields;\n const showHiddenFields = transactionActionName === UdpTransactionActionEnums.Set_Fields_Hidden;\n const showToStatusField = [\n ...baseActionsList,\n UdpTransactionActionEnums.Update_Status,\n ].includes(transactionActionName);\n const showActionApiField = [ ...baseActionsList, UdpTransactionActionEnums.Product_Action].includes(transactionActionName);\n const showPageField = [ ...baseActionsList, UdpTransactionActionEnums.Product_Action].includes(transactionActionName);\n const showDomainDataToUpdateFields = [ ...baseActionsList, UdpTransactionActionEnums.Update_Domain].includes(transactionActionName);\n\n return (\n <UdpTransactionTypeTransactionActionFormFields\n transactionActionOptions={transactionActionOptions}\n catalogObjectProperties={catalogObjectProperties}\n actionApiOptions={actionApiOptions}\n pageOptions={pageOptions}\n transactionTypeStatusOptions={transactionTypeStatusOptions}\n showMandatoryFields={showMandatoryFields}\n showHiddenFields={showHiddenFields}\n showToStatusField={showToStatusField}\n showActionApiField={showActionApiField}\n showPageField={showPageField}\n showDomainDataToUpdateFields={showDomainDataToUpdateFields}\n pushToFieldArray={push}\n />\n )\n }}\n />\n )\n}\n\nexport default forwardRef(UdpTransactionTypeTransactionActionForm);\n","import React, { useCallback, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionTypeTransactionActionForm from '../forms/UdpTransactionTypeTransactionActionForm';\nimport { SideSheet } from '../../../../UI';\n\n\nconst UdpTransactionTypeTransactionActionCreateAndEditSidesheet = (props) => {\nconst {\n initialTransactionTypeTransactionAction,\n isSideSheetOpen,\n handleSideSheet,\n handleCreateTransactionTypeTransactionAction,\n handleUpdateTransactionTypeTransactionAction,\n transactionActions,\n catalogObjectProperties,\n actionApis,\n pages,\n transactionTypeStatusOptions\n } = props;\n\n const isEditing = !!initialTransactionTypeTransactionAction;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionTypeTransactionAction(values, initialData);\n } else {\n await handleCreateTransactionTypeTransactionAction(values);\n }\n }, [handleCreateTransactionTypeTransactionAction, handleUpdateTransactionTypeTransactionAction]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={600}\n title={isEditing ? t('Edit Action') : t('Create Action')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionTypeTransactionActionForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionTypeTransactionAction}\n transactionActionOptions={transactionActions}\n catalogObjectProperties={catalogObjectProperties}\n actionApiOptions={actionApis}\n pageOptions={pages}\n transactionTypeStatusOptions={transactionTypeStatusOptions}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionTypeTransactionActionCreateAndEditSidesheet;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { useTranslation } from 'react-i18next';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport UdpTransactionTypeTransactionActionCreateAndEditSidesheet from './UdpTransactionTypeTransactionActionCreateAndEditSidesheet';\nimport { UdpTransactionActionEnums } from '../../../../enums';\n\nconst UdpTransactionTypeTransactionActionSidesheet = (props, ref) => {\n const {\n transactionType,\n transactionTypeTransactionAction,\n isSideSheetOpen,\n isTransactionTypeTransactionActionCreateOrEditSidesheetOpen,\n handleTransactionTypeTransactionActionSidesheet,\n handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n handleCreateTransactionTypeTransactionAction,\n handleUpdateTransactionTypeTransactionAction,\n handleDeleteTransactionTypeTransactionAction,\n transactionActions,\n catalogObjectProperties,\n actionApis,\n pages,\n ttstatuses\n } = props;\n\n const transactionTypeTransactionActionGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n const filteredTransactionActions = useMemo(() => {\n if (!transactionActions) return [];\n return transactionActions.filter(\n (ta) =>\n ta?.name !== UdpTransactionActionEnums.Send_Email &&\n ta?.name !== UdpTransactionActionEnums.Custom_Client_Action\n );\n }, [transactionActions]);\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n transactionTypeTransactionActionGridApiRef.current?.refreshServerSide();\n }\n }));\n\n const getTransactionActionName = useCallback(\n (transactionActionId) => {\n if (!transactionActions) return '';\n const matchingTransactionAction = transactionActions.find(\n (transactionAction) =>\n transactionAction.transactionActionId === transactionActionId\n );\n return matchingTransactionAction?.name || '';\n },\n [transactionActions]\n );\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Description'),\n field: 'description',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Icon'),\n field: 'icon',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Transaction Action'),\n resizable: true,\n sortable: false,\n valueGetter: (params) =>\n getTransactionActionName(params.data.transactionActionId)\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionTypeTransactionAction) => {\n handleCreateOrEditTransactionTypeTransactionActionSidesheet(\n true,\n transactionTypeTransactionAction?.data\n );\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionTypeTransactionAction) => {\n handleDeleteTransactionTypeTransactionAction(\n transactionTypeTransactionAction?.data\n );\n }\n }\n ]\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: (params) => params.data\n }\n ];\n }, [\n t,\n handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n handleDeleteTransactionTypeTransactionAction,\n getTransactionActionName\n ]);\n\n const headerConfig = {\n title: t('Actions'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () =>\n handleCreateOrEditTransactionTypeTransactionActionSidesheet(true)\n }\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n transactionTypeTransactionActionGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionType?.transactionTypeId) {\n filterElements = [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionType?.transactionTypeId,\n groupId: 1\n }\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionTypeTransactionAction/search`,\n customSearchObject: {\n filterElements: filterElements\n }\n };\n }\n return {};\n }, [transactionType]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={800}\n title={t('Manage Actions')}\n onClose={() => handleTransactionTypeTransactionActionSidesheet(false)}\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionTypeTransactionActionCreateAndEditSidesheet\n initialTransactionTypeTransactionAction={\n transactionTypeTransactionAction\n }\n isSideSheetOpen={\n isTransactionTypeTransactionActionCreateOrEditSidesheetOpen\n }\n handleCreateTransactionTypeTransactionAction={\n handleCreateTransactionTypeTransactionAction\n }\n handleUpdateTransactionTypeTransactionAction={\n handleUpdateTransactionTypeTransactionAction\n }\n handleSideSheet={\n handleCreateOrEditTransactionTypeTransactionActionSidesheet\n }\n transactionActions={filteredTransactionActions}\n catalogObjectProperties={catalogObjectProperties}\n actionApis={actionApis}\n pages={pages}\n transactionTypeStatusOptions={ttstatuses}\n />\n </SideSheet>\n );\n};\n\nexport default forwardRef(UdpTransactionTypeTransactionActionSidesheet);\n","import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport { Field, Form } from '../../../../utilities/form';\nimport { AmbientAutoComplete } from '../../../../UI/inputs/textField';\nimport { useTranslation } from 'react-i18next';\n\nconst UdpTransactionUiActionForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n transactionUiActionTypeOptions,\n actionApiOptions,\n pageOptions\n } = props;\n const { t } = useTranslation();\n const handleSubmitRef = useRef();\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(formData => {\n onSubmit(formData, initialData);\n }, [initialData, onSubmit]);\n\n return (\n <Form\n onSubmit={handleSubmit}\n render={({ handleSubmit }) => {\n handleSubmitRef.current = handleSubmit;\n return (\n <>\n <Field\n component={AmbientAutoComplete}\n label={t(\"Transaction UI Action Type\")}\n id=\"transactionUiActionType\"\n name=\"transactionUiActionType\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={transactionUiActionTypeOptions || []}\n getOptionLabelFunction={option => option.name}\n initialValue={transactionUiActionTypeOptions?.find(transactionUiActionType => transactionUiActionType?.transactionUiActionTypeId === initialData?.transactionUiActionTypeId) || null}\n required\n />\n <Field\n component={AmbientAutoComplete}\n label={t(\"Action Api\")}\n id=\"actionApi\"\n name=\"actionApi\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={actionApiOptions || []}\n getOptionLabelFunction={option => option.name}\n initialValue={actionApiOptions?.find(actionApi => actionApi?.actionApiId === initialData?.parameters?.actionApiId) || null}\n />\n <Field\n component={AmbientAutoComplete}\n label={t(\"Page\")}\n id=\"page\"\n name=\"page\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={pageOptions || []}\n getOptionLabelFunction={option => option.name}\n initialValue={pageOptions?.find(page => page?.pageId === initialData?.parameters?.pageId) || null}\n />\n </>\n )\n }}\n />\n );\n}\n\nexport default forwardRef(UdpTransactionUiActionForm);\n","import React, { useCallback, useMemo, useRef } from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionUiActionForm from '../forms/UdpTransactionUiActionForm';\n\nconst UdpTransactionUiActionCreateAndEditSidesheet = (props) => {\n const {\n initialTransactionUiAction,\n isSideSheetOpen,\n handleSideSheet,\n handleCreateTransactionUiAction,\n handleUpdateTransactionUiAction,\n transactionUiActionTypes,\n actionApis,\n pages,\n tUiActionsList\n } = props;\n\n const isEditing = !!initialTransactionUiAction;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const normalizeToArray = source => {\n if (Array.isArray(source)) {\n return source;\n }\n return [];\n };\n\n const filterAvailableTUATypes = useCallback((allTUATypes, transactionUiActions, currentTransactionUiActionTypeId = null) => {\n const allTUATypesArray = normalizeToArray(allTUATypes);\n const transactionUiActionsArray = normalizeToArray(transactionUiActions?.pageList);\n if (!transactionUiActions) return allTUATypesArray;\n\n // Capture the IDs of TUATypes currently in use so we can eliminate them from the dropdown\n const usedTUATypeIds = transactionUiActionsArray\n .map(action => action.transactionUiActionTypeId)\n .filter(id => id !== undefined && id !== currentTransactionUiActionTypeId);\n\n return allTUATypesArray.filter(type =>\n !usedTUATypeIds.includes(type.transactionUiActionTypeId)\n );\n }, []);\n\n const availableTUATypeOptions = useMemo(() => {\n if (!transactionUiActionTypes) return [];\n\n // Get the ID of the TUAction being edited\n const currentTUATypeId = initialTransactionUiAction\n ? initialTransactionUiAction.transactionUiActionTypeId\n : null;\n\n return filterAvailableTUATypes(transactionUiActionTypes, tUiActionsList, currentTUATypeId);\n\n }, [transactionUiActionTypes, tUiActionsList, initialTransactionUiAction, filterAvailableTUATypes]);\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionUiAction(values, initialData);\n } else {\n await handleCreateTransactionUiAction(values);\n }\n }, [handleCreateTransactionUiAction, handleUpdateTransactionUiAction]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={600}\n title={isEditing ? t('Edit UI Action') : t('Create UI Action')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionUiActionForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionUiAction}\n transactionUiActionTypeOptions={availableTUATypeOptions}\n actionApiOptions={actionApis}\n pageOptions={pages}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionUiActionCreateAndEditSidesheet;\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef\n} from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionUiActionCreateAndEditSidesheet from './UdpTransactionUiActionCreateAndEditSidesheet';\n\nconst UdpTransactionUiActionSidesheet = (props, ref) => {\n const {\n transactionType,\n transactionUiAction,\n isSideSheetOpen,\n handleTransactionUiActionSidesheet,\n isCreateOrEditTransactionUiActionSidesheetOpen,\n handleCreateOrEditTransactionUiActionSidesheet,\n handleCreateTransactionUiAction,\n handleUpdateTransactionUiAction,\n handleDeleteTransactionUiAction,\n transactionUiActionTypes,\n actionApis,\n pages,\n tUiActionsList\n } = props;\n\n const transactionUiActionGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n transactionUiActionGridApiRef?.current?.refreshServerSide();\n }\n }));\n\n const getTransactionUiActionTypeName = useCallback(\n (transactionUiActionTypeId) => {\n if (!transactionUiActionTypes) return '';\n const matchingTransactionUiActionType = transactionUiActionTypes.find(\n (transactionUiActionType) =>\n transactionUiActionType.transactionUiActionTypeId ===\n transactionUiActionTypeId\n );\n return matchingTransactionUiActionType?.name || '';\n },\n [transactionUiActionTypes]\n );\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('TransactionUiActionId'),\n field: 'transactionUiActionId',\n resizable: true,\n sortable: false,\n hide: true\n },\n {\n headerName: t('Type'),\n field: 'transactionUiActionTypeId',\n resizable: false,\n sortable: false,\n valueGetter: (params) =>\n getTransactionUiActionTypeName(params.data.transactionUiActionTypeId)\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionUiAction) => {\n handleCreateOrEditTransactionUiActionSidesheet(\n true,\n transactionUiAction?.data\n );\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionUiAction) => {\n handleDeleteTransactionUiAction(transactionUiAction?.data);\n }\n }\n ]\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: (params) => params.data\n }\n ];\n }, [\n t,\n handleCreateOrEditTransactionUiActionSidesheet,\n handleDeleteTransactionUiAction,\n getTransactionUiActionTypeName\n ]);\n\n const headerConfig = {\n title: t('Form / Page Overrides'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () => handleCreateOrEditTransactionUiActionSidesheet(true)\n }\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n transactionUiActionGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionType?.transactionTypeId) {\n filterElements = [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionType?.transactionTypeId,\n groupId: 1\n }\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionUiAction/search`,\n customSearchObject: {\n filterElements: filterElements\n }\n };\n }\n return {};\n }, [transactionType]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={800}\n title={t('Manage Form / Page Overrides')}\n onClose={() => handleTransactionUiActionSidesheet(false)}\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionUiActionCreateAndEditSidesheet\n initialTransactionUiAction={transactionUiAction}\n isSideSheetOpen={isCreateOrEditTransactionUiActionSidesheetOpen}\n handleCreateTransactionUiAction={handleCreateTransactionUiAction}\n handleUpdateTransactionUiAction={handleUpdateTransactionUiAction}\n handleSideSheet={handleCreateOrEditTransactionUiActionSidesheet}\n transactionUiActionTypes={transactionUiActionTypes}\n actionApis={actionApis}\n pages={pages}\n tUiActionsList={tUiActionsList}\n />\n </SideSheet>\n );\n};\n\nexport default forwardRef(UdpTransactionUiActionSidesheet);\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef\n} from 'react';\nimport { arrayMutators, Field, Form } from '../../../../utilities/form';\nimport { FormControlLabel, makeStyles, Switch } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport {\n AmbientAutoComplete,\n FluentTextField\n} from '../../../../UI/inputs/textField';\nimport { FluentButton } from '../../../../UI/inputs/buttons';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { StatusCircleErrorXIcon } from '@fluentui/react-icons';\nimport { EMPTY_GUID } from '../../../../enums';\nimport { LayoutUnit } from '../../../../layout';\nimport { DOMAIN_VALUE_OPERATORS } from '../../../utilities/transactionConstants';\n\nconst useStyles = makeStyles((theme) => ({\n domainFields: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n justifyContent: 'flex-start',\n '& > *': {\n marginRight: theme.spacing(2)\n }\n },\n domainValueField: {\n minWidth: '200px'\n },\n addRemoveButtons: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n margin: `${theme.spacing(2)}px 0 0 ${-theme.spacing(2)}px`,\n '& > *': {\n margin: `0 ${theme.spacing(2)}px`\n }\n },\n removeIcon: {\n fontSize: theme.spacing(3.5),\n marginTop: theme.spacing(1)\n },\n noRemoveIcon: {\n marginLeft: theme.spacing(3.5)\n }\n}));\n\nconst noStatus = {\n name: 'No Status',\n transactionTypeStatusId: EMPTY_GUID\n};\n\nconst UdpTransactionTypeConfigurationForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n transactionRuleTypes,\n catalogObjectProperties,\n transactionTypeStatusOptions,\n roles\n } = props;\n const handleSubmitRef = useRef();\n const { t } = useTranslation();\n const classes = useStyles();\n\n const ttstatusesWithNostatusOption = useMemo(() => {\n let ttstatuses;\n if (!transactionTypeStatusOptions) return;\n ttstatuses = [...transactionTypeStatusOptions, noStatus];\n return ttstatuses;\n }, [transactionTypeStatusOptions]);\n\n const formInitialValues = useMemo(() => {\n let formattedData;\n if (!initialData) return;\n formattedData = {\n ...initialData,\n transactionRuleType: transactionRuleTypes?.find(\n (trt) =>\n trt?.transactionRuleTypeId === initialData?.transactionRuleTypeId\n ),\n currentStatus: ttstatusesWithNostatusOption?.find(\n (tts) =>\n tts?.transactionTypeStatusId ===\n initialData?.configuration?.currentStatusId\n ),\n tenantUserRoles: roles?.filter((role) =>\n initialData?.configuration?.tenantUserRoleIds?.includes(role?.roleId)\n ),\n currentDomainValue: initialData?.configuration?.currentDomainValue\n ? Object.entries(initialData?.configuration?.currentDomainValue).map(\n ([fieldKey, fieldConfig]) => {\n const normalizedFieldConfig =\n fieldConfig && typeof fieldConfig === 'object'\n ? fieldConfig\n : { value: fieldConfig };\n const operatorOption =\n DOMAIN_VALUE_OPERATORS.find(\n (option) => option.value === normalizedFieldConfig?.operator\n ) || null;\n\n return [\n fieldKey,\n {\n ...normalizedFieldConfig,\n operator: operatorOption\n }\n ];\n }\n )\n : [[]]\n };\n return formattedData;\n }, [initialData, transactionRuleTypes, roles, ttstatusesWithNostatusOption]);\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(\n (formData) => {\n onSubmit(formData, initialData);\n },\n [initialData, onSubmit]\n );\n\n return (\n <Form\n onSubmit={handleSubmit}\n mutators={{\n ...arrayMutators\n }}\n initialValues={{\n ...formInitialValues\n }}\n render={({ handleSubmit, form }) => {\n handleSubmitRef.current = handleSubmit;\n const push = form?.mutators?.push ?? (() => {});\n return (\n <>\n <Field\n component={FluentTextField}\n label={t('Name')}\n id='name'\n name='name'\n fullWidth\n variant='outlined'\n margin='normal'\n size='small'\n />\n <Field\n component={AmbientAutoComplete}\n label={t('Transaction Rule Type')}\n id='transactionRuleType'\n name='transactionRuleType'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n options={transactionRuleTypes || []}\n getOptionLabelFunction={(option) => option.name}\n valueForChange={(value) => {\n return value;\n }}\n required\n />\n <Field\n component={FluentTextField}\n label={t('Order')}\n id='order'\n name='order'\n fullWidth\n variant='outlined'\n margin='normal'\n size='small'\n type='number'\n required\n />\n <LayoutUnit unit='nudge' />\n <FormControlLabel\n control={\n <Field\n component={Switch}\n id='enabled'\n name='enabled'\n type='checkbox'\n defaultValue={true}\n />\n }\n label={t('Enabled')}\n />\n {/* Configuration section */}\n <Field\n component={AmbientAutoComplete}\n label={t('Current Status')}\n id='currentStatus'\n name='currentStatus'\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n options={ttstatusesWithNostatusOption || []}\n getOptionLabelFunction={(option) => option.name}\n />\n <Field\n component={AmbientAutoComplete}\n label={t('Allowed Roles')}\n id='tenantUserRoles'\n name='tenantUserRoles'\n variant='outlined'\n isMultiple={true}\n disableCloseOnSelect={true}\n groupBy={(option) => option.productName}\n options={roles || []}\n getOptionLabelFunction={(option) => option.name}\n />\n <>\n <div className={classes.addRemoveButtons}>\n <FluentButton\n variant='contained'\n color='primary'\n onClick={() => push('currentDomainValue', undefined)}\n >\n {t('Add a Domain Field')}\n </FluentButton>\n </div>\n <FieldArray name='currentDomainValue'>\n {({ fields }) =>\n fields.map((name, index) => (\n <div\n key={`${name}${index}`}\n className={classes.domainFields}\n >\n <Field\n component={AmbientAutoComplete}\n label={index === 0 && t('Field')}\n name={`${name}[0]`}\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n options={catalogObjectProperties || []}\n getOptionLabelFunction={(option) => option}\n onChange={() => {}}\n />\n <Field\n component={AmbientAutoComplete}\n label={index === 0 && t('Operator')}\n name={`${name}[1].operator`}\n variant='outlined'\n isMultiple={false}\n disableCloseOnSelect={false}\n options={DOMAIN_VALUE_OPERATORS || []}\n getOptionLabelFunction={(option) => option.name}\n onChange={() => {}}\n />\n <Field\n component={FluentTextField}\n label={index === 0 && t('Value')}\n name={`${name}[1].value`}\n fullWidth\n variant='outlined'\n margin='normal'\n size='small'\n onChange={() => {}}\n className={classes.domainValueField}\n />\n <span\n onClick={() => fields.remove(index)}\n style={{ cursor: 'pointer' }}\n className={classes.removeIcon}\n >\n <StatusCircleErrorXIcon />\n </span>\n </div>\n ))\n }\n </FieldArray>\n </>\n </>\n );\n }}\n />\n );\n};\n\nexport default forwardRef(UdpTransactionTypeConfigurationForm);\n","import React, { useCallback, useRef } from 'react';\nimport { SideSheet } from '../../../../UI';\nimport UdpTransactionTypeConfigurationForm from '../forms/UdpTransactionTypeConfigurationForm';\nimport { useTranslation } from 'react-i18next';\n\nconst UdpTransactionTypeConfigurationCreateAndEditSidesheet = (props) => {\n const {\n initialTransactionTypeConfiguration,\n isSideSheetOpen,\n handleSideSheet,\n handleCreateTransactionTypeConfiguration,\n handleUpdateTransactionTypeConfiguration,\n transactionRuleTypes,\n catalogObjectProperties,\n ttstatuses,\n roles,\n } = props;\n\n const isEditing = !!initialTransactionTypeConfiguration;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionTypeConfiguration(values, initialData);\n } else {\n await handleCreateTransactionTypeConfiguration(values);\n }\n }, [handleCreateTransactionTypeConfiguration, handleUpdateTransactionTypeConfiguration]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={800}\n title={isEditing ? t('Edit Rule') : t('Create Rule')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionTypeConfigurationForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionTypeConfiguration}\n transactionRuleTypes={transactionRuleTypes}\n catalogObjectProperties={catalogObjectProperties}\n transactionTypeStatusOptions={ttstatuses}\n roles={roles}\n />\n </SideSheet>\n );\n};\n\nexport default UdpTransactionTypeConfigurationCreateAndEditSidesheet;\n","import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field, Form } from '../../../../utilities/form';\nimport { AmbientAutoComplete } from '../../../../UI/inputs/textField';\n\nconst UdpTransactionTypeConfigurationTransactionActionForm = (props, ref) => {\n const {\n onSubmit,\n initialData,\n transactionTypeTransactionActionOptions,\n isEditing\n } = props;\n const { t } = useTranslation();\n const handleSubmitRef = useRef();\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(formData => {\n onSubmit(formData, initialData);\n }, [initialData, onSubmit]);\n\n return (\n <Form\n onSubmit={handleSubmit}\n render={({ handleSubmit }) => {\n handleSubmitRef.current = handleSubmit;\n return (\n <>\n {isEditing &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"TransactionTypeTransactionActions\")}\n id=\"transactionTypeTransactionAction\"\n name=\"transactionTypeTransactionAction\"\n variant=\"outlined\"\n isMultiple={false}\n disableCloseOnSelect={false}\n options={transactionTypeTransactionActionOptions || []}\n getOptionLabelFunction={option => option.name}\n initialValue={transactionTypeTransactionActionOptions?.find(ttta => ttta?.transactionTypeTransactionActionId === initialData?.transactionTypeTransactionActionId) || null}\n required\n />\n }\n {!!!isEditing &&\n <Field\n component={AmbientAutoComplete}\n label={t(\"Actions to Link\")}\n id=\"transactionTypeTransactionActions\"\n name=\"transactionTypeTransactionActions\"\n variant=\"outlined\"\n isMultiple={true}\n disableCloseOnSelect={true}\n options={transactionTypeTransactionActionOptions || []}\n getOptionLabelFunction={option => option.name}\n required\n />\n }\n </>\n )\n }}\n />\n );\n}\n\nexport default forwardRef(UdpTransactionTypeConfigurationTransactionActionForm);\n","import React, { useCallback, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../../../UI';\nimport UdpTransactionTypeConfigurationTransactionActionForm from '../forms/UdpTransactionTypeConfigurationTransactionActionForm';\n\nconst UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet = (props) => {\n const {\n initialTransactionTypeConfigurationTransactionAction,\n isSideSheetOpen,\n handleSideSheet,\n handleCreateTransactionTypeConfigurationTransactionAction,\n handleUpdateTransactionTypeConfigurationTransactionAction,\n transactionTypeTransactionActions,\n existingTtctaList\n } = props;\n\n const isEditing = !!initialTransactionTypeConfigurationTransactionAction;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const normalizeToArray = source => {\n if (Array.isArray(source)) {\n return source;\n }\n return [];\n };\n\n const filterAvailableTTTActions = useCallback((allTTTActions, existingTTCTActions, currentTransactionTypeTransactionActionId = null) => {\n const allTTTActionsArray = normalizeToArray(allTTTActions);\n const existingTTCTActionsArray = normalizeToArray(existingTTCTActions?.pageList);\n\n // Capture the IDs of TTTActions currently in use so we can eliminate them from the dropdown\n const usedTTTActionIds = existingTTCTActionsArray\n .map(action => action.transactionTypeTransactionActionId)\n .filter(id => id !== undefined && id !== currentTransactionTypeTransactionActionId);\n\n return allTTTActionsArray.filter(type =>\n !usedTTTActionIds.includes(type.transactionTypeTransactionActionId)\n );\n }, []);\n\n const availableTTTActionOptions = useMemo(() => {\n if (!transactionTypeTransactionActions || !existingTtctaList) return [];\n\n // Get the ID of the TUAction being edited\n const currentTTTActionId = initialTransactionTypeConfigurationTransactionAction\n ? initialTransactionTypeConfigurationTransactionAction.transactionTypeTransactionActionId\n : null;\n\n return filterAvailableTTTActions(transactionTypeTransactionActions, existingTtctaList, currentTTTActionId);\n\n }, [transactionTypeTransactionActions, existingTtctaList, initialTransactionTypeConfigurationTransactionAction, filterAvailableTTTActions]);\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionTypeConfigurationTransactionAction(values, initialData);\n } else {\n await handleCreateTransactionTypeConfigurationTransactionAction(values);\n }\n }, [\n handleCreateTransactionTypeConfigurationTransactionAction,\n handleUpdateTransactionTypeConfigurationTransactionAction\n ]);\n\n return(\n <SideSheet\n open={isSideSheetOpen}\n width={500}\n title={isEditing ? t('Edit Linked Action') : t('Create Linked Action')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionTypeConfigurationTransactionActionForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionTypeConfigurationTransactionAction}\n transactionTypeTransactionActionOptions={availableTTTActionOptions}\n isEditing={isEditing}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet;\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef\n} from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet from './UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet';\n\nconst UdpTransactionTypeConfigurationTransactionActionSidesheet = (\n props,\n ref\n) => {\n const {\n transactionTypeConfiguration,\n transactionTypeConfigurationTransactionAction,\n isSideSheetOpen,\n handleTransactionTypeConfigurationTransactionActionSidesheet,\n isCreateOrEditSidesheetOpen,\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n handleCreateTransactionTypeConfigurationTransactionAction,\n handleUpdateTransactionTypeConfigurationTransactionAction,\n handleDeleteTransactionTypeConfigurationTransactionAction,\n tttactions,\n ttctaList\n } = props;\n\n const ttctaGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n ttctaGridApiRef?.current?.refreshServerSide();\n }\n }));\n\n const getTTTActionName = useCallback(\n (transactionTypeTransactionActionId) => {\n if (!tttactions?.length) return '';\n const matchingTTTAction = tttactions.find(\n (ttta) =>\n ttta.transactionTypeTransactionActionId ===\n transactionTypeTransactionActionId\n );\n return matchingTTTAction?.name || '';\n },\n [tttactions]\n );\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('TransactionTypeConfiguration'),\n field: 'transactionTypeConfigurationId',\n resizable: true,\n sortable: false,\n hide: true\n },\n {\n headerName: t('TransactionTypeTransactionAction'),\n field: 'transactionTypeTransactionActionId',\n resizable: false,\n sortable: false,\n hide: true\n },\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false,\n valueGetter: (params) =>\n getTTTActionName(params?.data?.transactionTypeTransactionActionId)\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n // Commenting out the Edit action for now as the underlying DAO method does not allow updating a TTCTA's TTTAction\n // {\n // id: 0,\n // title: t('Edit'),\n // iconName: 'edit',\n // handleOnClick: (e, transactionTypeConfigurationTransactionAction) => {\n // handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(true, transactionTypeConfigurationTransactionAction?.data);\n // }\n // },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (\n e,\n transactionTypeConfigurationTransactionAction\n ) => {\n handleDeleteTransactionTypeConfigurationTransactionAction(\n transactionTypeConfigurationTransactionAction?.data\n );\n }\n }\n ]\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: (params) => params.data\n }\n ];\n }, [\n t,\n //handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n handleDeleteTransactionTypeConfigurationTransactionAction,\n getTTTActionName\n ]);\n\n const headerConfig = {\n title: t('Linked Actions'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () =>\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(\n true\n )\n }\n };\n\n const gridFunctions = [\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n ttctaGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionTypeConfiguration?.transactionTypeConfigurationId) {\n filterElements = [\n {\n searchField: 'TransactionTypeConfigurationId',\n searchOperator: '=',\n searchValue:\n transactionTypeConfiguration?.transactionTypeConfigurationId,\n groupId: 1\n }\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionTypeConfigurationTransactionAction/search`,\n customSearchObject: {\n filterElements: filterElements\n }\n };\n }\n return {};\n }, [transactionTypeConfiguration]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={700}\n title={t('Manage Linked Actions')}\n onClose={() =>\n handleTransactionTypeConfigurationTransactionActionSidesheet(false)\n }\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionTypeConfigurationTransactionActionCreateAndEditSidesheet\n initialTransactionTypeConfigurationTransactionAction={\n transactionTypeConfigurationTransactionAction\n }\n isSideSheetOpen={isCreateOrEditSidesheetOpen}\n handleCreateTransactionTypeConfigurationTransactionAction={\n handleCreateTransactionTypeConfigurationTransactionAction\n }\n handleUpdateTransactionTypeConfigurationTransactionAction={\n handleUpdateTransactionTypeConfigurationTransactionAction\n }\n handleSideSheet={\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet\n }\n transactionTypeTransactionActions={tttactions}\n existingTtctaList={ttctaList}\n />\n </SideSheet>\n );\n};\n\nexport default forwardRef(\n UdpTransactionTypeConfigurationTransactionActionSidesheet\n);\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef\n} from 'react';\nimport { SideSheet } from '../../../../UI';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport { useTranslation } from 'react-i18next';\nimport UdpTransactionTypeConfigurationCreateAndEditSidesheet from './UdpTransactionTypeConfigurationCreateAndEditSidesheet';\nimport UdpTransactionTypeConfigurationTransactionActionSidesheet from './UdpTransactionTypeConfigurationTransactionActionSidesheet';\n\nconst UdpTransactionTypeConfigurationSidesheet = (props, ref) => {\n const {\n transactionType,\n transactionTypeConfiguration,\n isSideSheetOpen,\n isCreateOrEditTransactionTypeConfigurationSidesheetOpen,\n handleTransactionTypeConfigurationSidesheet,\n handleCreateOrEditTransactionTypeConfigurationSidesheet,\n handleCreateTransactionTypeConfiguration,\n handleUpdateTransactionTypeConfiguration,\n handleDeleteTransactionTypeConfiguration,\n transactionRuleTypes,\n catalogObjectProperties,\n ttstatuses,\n roles,\n transactionTypeConfigurationTransactionAction,\n isTransactionTypeConfigurationTransactionActionSidesheetOpen,\n handleTransactionTypeConfigurationTransactionActionSidesheet,\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen,\n tttactions,\n handleCreateTransactionTypeConfigurationTransactionAction,\n handleUpdateTransactionTypeConfigurationTransactionAction,\n handleDeleteTransactionTypeConfigurationTransactionAction,\n ttctaList,\n ttctaGridApiRef\n } = props;\n\n const transactionTypeConfigurationGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n transactionTypeConfigurationGridApiRef?.current?.refreshServerSide();\n }\n }));\n\n const getTransactionRuleTypeName = useCallback(\n (transactionRuleTypeId) => {\n if (!transactionRuleTypes) return '';\n const matchingTransactionRuleType = transactionRuleTypes?.find(\n (transactionRuleType) =>\n transactionRuleType?.transactionRuleTypeId === transactionRuleTypeId\n );\n return matchingTransactionRuleType?.name || '';\n },\n [transactionRuleTypes]\n );\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('TransactionTypeConfigurationId'),\n field: 'transactionTypeConfigurationId',\n resizable: true,\n sortable: false,\n hide: true\n },\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Order'),\n field: 'order',\n resizable: false,\n sortable: false\n },\n {\n headerName: t('Enabled'),\n field: 'enabled',\n resizable: false,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Rule Type'),\n resizable: false,\n sortable: false,\n valueGetter: (params) =>\n getTransactionRuleTypeName(params?.data?.transactionRuleTypeId)\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionTypeConfiguration) => {\n handleCreateOrEditTransactionTypeConfigurationSidesheet(\n true,\n transactionTypeConfiguration?.data\n );\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionTypeConfiguration) => {\n handleDeleteTransactionTypeConfiguration(\n transactionTypeConfiguration?.data\n );\n }\n },\n {\n id: 2,\n title: t('Link'),\n iconName: 'link',\n handleOnClick: (e, transactionTypeConfiguration) => {\n handleTransactionTypeConfigurationTransactionActionSidesheet(\n true,\n transactionTypeConfiguration?.data\n );\n }\n }\n ]\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: (params) => params.data\n }\n ];\n }, [\n t,\n handleCreateOrEditTransactionTypeConfigurationSidesheet,\n handleDeleteTransactionTypeConfiguration,\n getTransactionRuleTypeName,\n handleTransactionTypeConfigurationTransactionActionSidesheet\n ]);\n\n const headerConfig = {\n title: t('Rules'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () =>\n handleCreateOrEditTransactionTypeConfigurationSidesheet(true)\n }\n };\n\n const gridFunctions = [\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n transactionTypeConfigurationGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionType?.transactionTypeId) {\n filterElements = [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionType?.transactionTypeId,\n groupId: 1\n }\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionTypeConfiguration/search`,\n customSearchObject: {\n filterElements: filterElements\n }\n };\n }\n return {};\n }, [transactionType]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={900}\n title={t('Manage Rules')}\n onClose={() => handleTransactionTypeConfigurationSidesheet(false)}\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionTypeConfigurationCreateAndEditSidesheet\n initialTransactionTypeConfiguration={transactionTypeConfiguration}\n isSideSheetOpen={\n isCreateOrEditTransactionTypeConfigurationSidesheetOpen\n }\n handleCreateTransactionTypeConfiguration={\n handleCreateTransactionTypeConfiguration\n }\n handleUpdateTransactionTypeConfiguration={\n handleUpdateTransactionTypeConfiguration\n }\n handleSideSheet={\n handleCreateOrEditTransactionTypeConfigurationSidesheet\n }\n transactionRuleTypes={transactionRuleTypes}\n catalogObjectProperties={catalogObjectProperties}\n ttstatuses={ttstatuses}\n roles={roles}\n />\n <UdpTransactionTypeConfigurationTransactionActionSidesheet\n ref={ttctaGridApiRef}\n transactionTypeConfiguration={transactionTypeConfiguration}\n transactionTypeConfigurationTransactionAction={\n transactionTypeConfigurationTransactionAction\n }\n isSideSheetOpen={\n isTransactionTypeConfigurationTransactionActionSidesheetOpen\n }\n handleTransactionTypeConfigurationTransactionActionSidesheet={\n handleTransactionTypeConfigurationTransactionActionSidesheet\n }\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet={\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet\n }\n isCreateOrEditSidesheetOpen={\n isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen\n }\n tttactions={tttactions}\n handleCreateTransactionTypeConfigurationTransactionAction={\n handleCreateTransactionTypeConfigurationTransactionAction\n }\n handleUpdateTransactionTypeConfigurationTransactionAction={\n handleUpdateTransactionTypeConfigurationTransactionAction\n }\n handleDeleteTransactionTypeConfigurationTransactionAction={\n handleDeleteTransactionTypeConfigurationTransactionAction\n }\n ttctaList={ttctaList}\n />\n </SideSheet>\n );\n};\n\nexport default forwardRef(UdpTransactionTypeConfigurationSidesheet);\n","import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field, Form } from '../../../../utilities/form';\nimport { FluentTextField } from '../../../../UI/inputs/textField';\n\nconst UdpTransactionAttachmentTypeForm = (props, ref) => {\n const {\n onSubmit,\n initialData\n } = props;\n const handleSubmitRef = useRef();\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n submit: () => {\n // eslint-disable-next-line no-unused-expressions\n handleSubmitRef?.current();\n }\n }));\n\n const handleSubmit = useCallback(formData => {\n onSubmit(formData, initialData);\n }, [initialData, onSubmit]);\n\n return(\n <Form\n onSubmit={handleSubmit}\n render={({ handleSubmit }) => {\n handleSubmitRef.current = handleSubmit;\n return (\n <>\n <Field\n component={FluentTextField}\n label={t(\"Name\")}\n id=\"name\"\n name=\"name\"\n fullWidth\n variant=\"outlined\"\n margin=\"normal\"\n size=\"small\"\n required\n initialValue={initialData?.name || ''}\n />\n </>\n )\n }}\n />\n );\n}\n\nexport default forwardRef(UdpTransactionAttachmentTypeForm);\n","import React, { useCallback, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../../../UI';\nimport UdpTransactionAttachmentTypeForm from '../forms/UdpTransactionAttachmentTypeForm';\n\nconst UdpTransactionAttachmentTypeCreateAndEditSidesheet = (props) => {\n const {\n initialTransactionAttachmentType,\n isSideSheetOpen,\n handleCreateTransactionAttachmentType,\n handleUpdateTransactionAttachmentType,\n handleSideSheet,\n } = props;\n\n const isEditing = !!initialTransactionAttachmentType;\n const formRef = useRef();\n const { t } = useTranslation();\n\n const onSubmitForm = useCallback(async (values, initialData) => {\n if (initialData) {\n await handleUpdateTransactionAttachmentType(values, initialData);\n } else {\n await handleCreateTransactionAttachmentType(values);\n }\n }, [handleCreateTransactionAttachmentType, handleUpdateTransactionAttachmentType]);\n\n return (\n <SideSheet\n open={isSideSheetOpen}\n width={500}\n title={isEditing ? t('Edit Attachment Type') : t('Create Attachment Type')}\n onClose={() => handleSideSheet(false)}\n buttonLabel={isEditing ? t('Save') : t('Create')}\n onSubmit={() => {\n // eslint-disable-next-line no-unused-expressions\n formRef?.current?.submit();\n }}\n >\n <UdpTransactionAttachmentTypeForm\n ref={formRef}\n onSubmit={onSubmitForm}\n initialData={initialTransactionAttachmentType}\n />\n </SideSheet>\n );\n}\n\nexport default UdpTransactionAttachmentTypeCreateAndEditSidesheet;\n","import React, { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../../../UI';\nimport { SearchMethodUdpGrid } from '../../../../UI/templates/newGrid';\nimport UdpTransactionAttachmentTypeCreateAndEditSidesheet from './UdpTransactionAttachmentTypeCreateAndEditSidesheet';\n\nconst UdpTransactionAttachmentTypeSidesheet = (props, ref) => {\n const {\n transactionType,\n transactionAttachmentType,\n isSideSheetOpen,\n isTransactionAttachmentTypeCreateOrEditSidesheetOpen,\n handleTransactionAttachmentTypeSidesheet,\n handleCreateOrEditTransactionAttachmentTypeSidesheet,\n handleCreateTransactionAttachmentType,\n handleUpdateTransactionAttachmentType,\n handleDeleteTransactionAttachmentType\n } = props;\n\n const transactionAttachmentTypeGridApiRef = useRef(null);\n const { t } = useTranslation();\n\n useImperativeHandle(ref, () => ({\n refreshServerSide: () => {\n // eslint-disable-next-line no-unused-expressions\n transactionAttachmentTypeGridApiRef?.current?.refreshServerSide();\n }\n }));\n\nconst columnDefs = useMemo(() => {\n return [\n {\n headerName: t('Attachment Type Id'),\n field: 'transactionAttachmentTypeId',\n resizable: true,\n sortable: false,\n hide: true,\n },\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false,\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionAttachmentType) => {\n handleCreateOrEditTransactionAttachmentTypeSidesheet(true, transactionAttachmentType?.data);\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionAttachmentType) => {\n handleDeleteTransactionAttachmentType(transactionAttachmentType?.data);\n }\n },\n ],\n },\n suppressMenu: true,\n sortable: false,\n filter: false,\n valueGetter: params => params.data,\n },\n ];\n }, [t, handleCreateOrEditTransactionAttachmentTypeSidesheet, handleDeleteTransactionAttachmentType]);\n\n const headerConfig = {\n title: t('Attachment Types'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () => handleCreateOrEditTransactionAttachmentTypeSidesheet(true),\n },\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' },\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true,\n };\n }, []);\n\n const handleGridApiCallback = api => {\n transactionAttachmentTypeGridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n let filterElements = [];\n if (transactionType?.transactionTypeId) {\n filterElements = [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionType?.transactionTypeId,\n groupId: 1,\n },\n ];\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionAttachmentType/search`,\n customSearchObject: {\n filterElements: filterElements,\n },\n };\n }\n return {};\n }, [transactionType]);\n\n return(\n <SideSheet\n open={isSideSheetOpen}\n width={800}\n title={t('Manage Attachment Types')}\n onClose={() => handleTransactionAttachmentTypeSidesheet(false)}\n >\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionAttachmentTypeCreateAndEditSidesheet\n initialTransactionAttachmentType={transactionAttachmentType}\n isSideSheetOpen={isTransactionAttachmentTypeCreateOrEditSidesheetOpen}\n handleCreateTransactionAttachmentType={handleCreateTransactionAttachmentType}\n handleUpdateTransactionAttachmentType={handleUpdateTransactionAttachmentType}\n handleSideSheet={handleCreateOrEditTransactionAttachmentTypeSidesheet}\n />\n </SideSheet>\n );\n}\n\nexport default forwardRef(UdpTransactionAttachmentTypeSidesheet);\n","import React, {\n useCallback,\n useState,\n useMemo,\n useRef,\n useEffect\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\nimport { LinearProgress } from '../../../UI/loading/LinearProgress';\nimport UdpTransactionTypeSidesheet from './sidesheets/UdpTransactionTypeSidesheet';\nimport { ActionsRenderer } from '../../../UI/templates/ui/renderers/ActionsRenderer';\nimport { useCatalogStore } from '../../../stores/catalogStore';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { useApiCatalog } from '../../../hooks';\nimport { apiMutate, useAxiosGet } from '../../../utilities';\nimport { useSnackbar } from 'notistack';\nimport { FluentDialog, getSuccessAction } from '../../../UI';\nimport UdpTransactionTypeStatusSidesheet from './sidesheets/UdpTransactionTypeStatusSidesheet';\nimport UdpTransactionTypeTransactionActionSidesheet from './sidesheets/UdpTransactionTypeTransactionActionSidesheet';\nimport { useUser } from '../../../utilities/auth';\nimport UdpTransactionUiActionSidesheet from './sidesheets/UdpTransactionUiActionSidesheet';\nimport UdpTransactionTypeConfigurationSidesheet from './sidesheets/UdpTransactionTypeConfigurationSidesheet';\nimport { EMPTY_GUID } from '../../../enums';\nimport UdpTransactionAttachmentTypeSidesheet from './sidesheets/UdpTransactionAttachmentTypeSidesheet';\n\nconst PAGE_SIZE = 100;\n\nconst baseSearchPayload = {\n pageNumber: 1,\n pageSize: PAGE_SIZE,\n filterElements: [],\n filterGroups: [],\n orderElements: [],\n groupingType: '',\n groupProperty: [],\n groupOperationList: [],\n eagerLoad: false,\n logicalSearchOperator: 1\n};\n\nconst useStyles = makeStyles((theme) => ({\n loadingBar: {\n bottom: theme.spacing(-0.5),\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5)\n }\n}));\n\n/**\n * This function formats the 'Configuration' data into a specific format that can be\n * used by the external library jsonLogic. The formatted data is stored in the\n * udp.TransactionTypeConfiguration table in the ExpressionLogic column.\n */\nconst formatTransactionTypeConfigurationIntoExpressionLogic = (\n configurationObj\n) => {\n if (!configurationObj || typeof configurationObj !== 'object') {\n return '';\n }\n\n const { CurrentStatus, CurrentDomainValue, TenantUserRoleIds } =\n configurationObj;\n const andConditions = [];\n\n if (CurrentStatus) {\n andConditions.push({\n '==': [\n { var: 'currentStatusId' },\n // this check ensures that if the 'No Status' option is selected for the currentStatus, then\n // the currentStatusId is stored in expressionLogic with a value of null\n CurrentStatus?.transactionTypeStatusId === EMPTY_GUID\n ? null\n : CurrentStatus?.transactionTypeStatusId\n ]\n });\n }\n\n if (CurrentDomainValue && typeof CurrentDomainValue === 'object') {\n Object.entries(CurrentDomainValue).forEach(([field, config]) => {\n if (!field || !config) {\n return;\n }\n\n const isConfigObject =\n config && typeof config === 'object' && !Array.isArray(config);\n const operator = isConfigObject ? config?.operator : null;\n const comparisonValue = isConfigObject ? config?.value : config;\n const effectiveOperator = operator || '==';\n const operands =\n effectiveOperator === '!' || effectiveOperator === '!!'\n ? [{ var: `currentDomainValue.${field}` }]\n : [{ var: `currentDomainValue.${field}` }, comparisonValue];\n\n andConditions.push({\n [effectiveOperator]: operands\n });\n });\n }\n\n if (Array.isArray(TenantUserRoleIds) && TenantUserRoleIds.length > 0) {\n andConditions.push({\n some: [\n { var: 'tenantUserRoleIds' },\n {\n in: [{ var: '' }, TenantUserRoleIds]\n }\n ]\n });\n }\n\n if (!andConditions.length) {\n return '';\n }\n\n return {\n and: andConditions\n };\n};\n\nconst UdpTransactionTypesPage = () => {\n // Hooks\n const user = useUser();\n const { t } = useTranslation();\n const classes = useStyles();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const successAction = getSuccessAction(closeSnackbar);\n // Grid Refs\n const gridApiRef = useRef(null); // TransactionType grid\n const ttsGridApiRef = useRef(null); // TransactionTypeStatus grid\n const tttaGridApiRef = useRef(null); // TransactionTypeTransactionAction grid\n const tuaGridApiRef = useRef(null); // TransactionUiAction grid\n const ttcGridApiRef = useRef(null); // TransactionTypeConfiguration grid\n const ttctaGridApiRef = useRef(null); // TransactionTypeConfigurationTransactionAction grid\n const tatGridApiRef = useRef(null); // TransactionAttachmentType grid\n\n // States\n const [searchObject, setSearchObject] = useState(baseSearchPayload);\n // TransactionType\n const [selectedTransactionType, setSelectedTransactionType] = useState(null);\n const [isTransactionTypeSideSheetOpen, setIsTransactionTypeSideSheetOpen] =\n useState(false);\n const [\n isTransactionTypeSidesheetLoading,\n setIsTransactionTypeSidesheetLoading\n ] = useState(false);\n const [\n isDeleteTransactionTypeDialogOpen,\n setIsDeleteTransactionTypeDialogOpen\n ] = useState(false);\n const [selectedDomainName, setSelectedDomainName] = useState('');\n // TransactionTypeStatus\n const [\n isTransactionTypeStatusSidesheetOpen,\n setIsTransactionTypeStatusSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionTypeStatusDialogOpen,\n setIsDeleteTransactionTypeStatusDialogOpen\n ] = useState(false);\n const [selectedTransactionTypeStatus, setSelectedTransactionTypeStatus] =\n useState(null);\n const [\n isCreateOrEditTransactionTypeStatusSidesheetOpen,\n setIsCreateOrEditTransactionTypeStatusSidesheetOpen\n ] = useState(false);\n const [ttstatuses, setTTStatuses] = useState([]);\n // TransactionTypeTransactionAction\n const [\n isTransactionTypeTransactionActionSidesheetOpen,\n setIsTransactionTypeTransactionActionSidesheetOpen\n ] = useState(false);\n const [\n selectedTransactionTypeTransactionAction,\n setSelectedTransactionTypeTransactionAction\n ] = useState(null);\n const [\n isCreateOrEditTransactionTypeTransactionActionSidesheetOpen,\n setIsCreateOrEditTransactionTypeTransactionActionSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionTypeTransactionActionDialogOpen,\n setIsDeleteTransactionTypeTransactionActionDialogOpen\n ] = useState(false);\n const [tttactions, setTTTActions] = useState([]);\n // TransactionUiAction\n const [\n isTransactionUiActionSidesheetOpen,\n setIsTransactionUiActionSidesheetOpen\n ] = useState(false);\n const [selectedTransactionUiAction, setSelectedTransactionUiAction] =\n useState(null);\n const [\n isCreateOrEditTransactionUiActionSidesheetOpen,\n setIsCreateOrEditTransactionUiActionSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionUiActionDialogOpen,\n setIsDeleteTransactionUiActionDialogOpen\n ] = useState(false);\n // TransactionTypeConfiguration\n const [\n isTransactionTypeConfigurationSidesheetOpen,\n setIsTransactionTypeConfigurationSidesheetOpen\n ] = useState(false);\n const [\n selectedTransactionTypeConfiguration,\n setSelectedTransactionTypeConfiguration\n ] = useState(null);\n const [\n isCreateOrEditTransactionTypeConfigurationSidesheetOpen,\n setIsCreateOrEditTransactionTypeConfigurationSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionTypeConfigurationDialogOpen,\n setIsDeleteTransactionTypeConfigurationDialogOpen\n ] = useState(false);\n // TransactionTypeConfigurationTransactionAction\n const [\n isTransactionTypeConfigurationTransactionActionSidesheetOpen,\n setIsTransactionTypeConfigurationTransactionActionSidesheetOpen\n ] = useState(false);\n const [\n selectedTransactionTypeConfigurationTransactionAction,\n setSelectedTransactionTypeConfigurationTransactionAction\n ] = useState(null);\n const [\n isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen,\n setIsCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionTypeConfigurationTransactionActionDialogOpen,\n setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen\n ] = useState(false);\n // TransactionAttachmentType\n const [\n isTransactionAttachmentTypeSidesheetOpen,\n setIsTransactionAttachmentTypeSidesheetOpen\n ] = useState(false);\n const [\n selectedTransactionAttachmentType,\n setSelectedTransactionAttachmentType\n ] = useState(null);\n const [\n isCreateOrEditTransactionAttachmentTypeSidesheetOpen,\n setIsCreateOrEditTransactionAttachmentTypeSidesheetOpen\n ] = useState(false);\n const [\n isDeleteTransactionAttachmentTypeDialogOpen,\n setIsDeleteTransactionAttachmentTypeDialogOpen\n ] = useState(false);\n\n const hasDefaultAndClosedTransactionTypeStatus = useCallback(\n (\n transactionTypeStatuses,\n checkHasDefault = false,\n checkHasClosedStatus = false,\n checkHasCancelledStatus = false\n ) => {\n if (!transactionTypeStatuses) {\n return false;\n }\n return transactionTypeStatuses?.some((record) => {\n if (\n record.transactionTypeStatusId !==\n selectedTransactionTypeStatus?.transactionTypeStatusId\n ) {\n const isDefault = record?.isDefault;\n const isClosedStatus = record?.isClosedStatus;\n const isCancelledStatus = record?.isCancelledStatus;\n if (checkHasDefault && isDefault) return true;\n if (checkHasClosedStatus && isClosedStatus) return true;\n if (checkHasCancelledStatus && isCancelledStatus) return true;\n }\n return false;\n });\n },\n [selectedTransactionTypeStatus]\n );\n\n // API Calls\n /** TransactionType */\n const postCreateTransactionType = async (transactionType) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionType`,\n {\n method: 'POST'\n },\n {\n data: transactionType\n }\n );\n };\n\n const putUpdateTransactionType = async (\n transactionTypeId,\n transactionType\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionType/${transactionTypeId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionType\n }\n );\n };\n\n const deleteTransactionType = async (transactionTypeId) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionType/${transactionTypeId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const [\n {\n data: transactionsByTransactionTypeId,\n loading: getTransactionsByTransactionIdLoading\n },\n fetchTransactionsByTransactionTypeId\n ] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransaction/search`,\n {\n method: 'post',\n data: {\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: selectedTransactionType?.transactionTypeId,\n groupId: 1\n }\n ],\n getAll: true\n }\n },\n !!!selectedTransactionType?.transactionTypeId ||\n !!!isDeleteTransactionTypeDialogOpen,\n false\n );\n\n /** TransactionTypeStatus */\n const postCreateTransactionTypeStatus = async (transactionTypeStatus) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeStatus`,\n {\n method: 'POST'\n },\n {\n data: transactionTypeStatus\n }\n );\n };\n\n const putUpdateTransactionTypeStatus = async (\n transactionTypeStatusId,\n transactionTypeStatus\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeStatus/${transactionTypeStatusId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionTypeStatus\n }\n );\n };\n\n const deleteTransactionTypeStatus = async (transactionTypeStatusId) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeStatus/${transactionTypeStatusId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const searchTransactionTypeStatusByTransactionTypeId = useCallback(\n async (transactionTypeId) => {\n const searchPayload = {\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionTypeId,\n groupId: 1\n }\n ],\n getAll: true\n };\n\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeStatus/search`,\n {\n method: 'POST'\n },\n {\n data: searchPayload\n }\n );\n },\n []\n );\n\n useEffect(() => {\n if (!selectedTransactionType?.transactionTypeId) return;\n const loadTTStatuses = async () => {\n const ttsResponse = await searchTransactionTypeStatusByTransactionTypeId(\n selectedTransactionType?.transactionTypeId\n );\n if (ttsResponse?.status === 200) {\n setTTStatuses(ttsResponse.data?.pageList);\n }\n };\n if (\n isTransactionTypeStatusSidesheetOpen ||\n isTransactionTypeConfigurationSidesheetOpen\n ) {\n loadTTStatuses();\n }\n }, [\n searchTransactionTypeStatusByTransactionTypeId,\n //selectedTransactionType?.transactionTypeId, Leaving this out to prevent re-fetching when closing sidesheets\n isTransactionTypeStatusSidesheetOpen,\n isTransactionTypeConfigurationSidesheetOpen\n ]);\n\n /** TransactionAction */\n const [{ data: transactionActions }] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionAction`,\n {\n method: 'GET'\n },\n false,\n false\n );\n\n /** ActionApis */\n const [{ data: actionApis }] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionWorkflowActionApi`,\n {\n method: 'GET'\n },\n false,\n false\n );\n\n /** PageIds */\n const [{ data: pages }] = useAxiosGet(\n process.env.REACT_APP_TENANTS_API_BASE,\n `Page?tenantId=${user?.currentTenantId}`,\n {\n method: 'GET'\n },\n !!!user?.currentTenantId,\n false\n );\n\n /** TransactionTypeTransactionAction */\n const postCreateTransactionTypeTransactionAction = async (\n transactionTypeTransactionAction\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeTransactionAction`,\n {\n method: 'POST'\n },\n {\n data: transactionTypeTransactionAction\n }\n );\n };\n\n const putUpdateTransactionTypeTransactionAction = async (\n transactionTypeTransactionActionId,\n transactionTypeTransactionAction\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeTransactionAction/${transactionTypeTransactionActionId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionTypeTransactionAction\n }\n );\n };\n\n const deleteTransactionTypeTransactionAction = async (\n transactionTypeTransactionActionId\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeTransactionAction/${transactionTypeTransactionActionId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const searchTransactionTypeTransactionActionByTransactionTypeId = useCallback(\n async (transactionTypeId) => {\n const searchPayload = {\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: transactionTypeId,\n groupId: 1\n }\n ],\n getAll: true\n };\n\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeTransactionAction/search`,\n {\n method: 'POST'\n },\n {\n data: searchPayload\n }\n );\n },\n []\n );\n\n useEffect(() => {\n if (!selectedTransactionType?.transactionTypeId) return;\n const loadTTTActions = async () => {\n const tttaResponse =\n await searchTransactionTypeTransactionActionByTransactionTypeId(\n selectedTransactionType?.transactionTypeId\n );\n if (tttaResponse?.status === 200) {\n setTTTActions(tttaResponse.data?.pageList);\n }\n };\n if (isTransactionTypeConfigurationTransactionActionSidesheetOpen) {\n loadTTTActions();\n }\n }, [\n searchTransactionTypeTransactionActionByTransactionTypeId,\n isTransactionTypeConfigurationTransactionActionSidesheetOpen\n //selectedTransactionType?.transactionTypeId, Leaving this out to prevent re-fetching when closing sidesheets\n ]);\n\n /** TransactionUiAction */\n const postCreateTransactionUiAction = async (transactionUiAction) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionUiAction`,\n {\n method: 'POST'\n },\n {\n data: transactionUiAction\n }\n );\n };\n\n const putUpdateTransactionUiAction = async (\n transactionUiActionId,\n transactionUiAction\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionUiAction/${transactionUiActionId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionUiAction\n }\n );\n };\n\n const deleteTransactionUiAction = async (transactionUiActionId) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionUiAction/${transactionUiActionId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const [{ data: tUiActionsList }, fetchTUiActionsList] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionUiAction/search`,\n {\n method: 'post',\n data: {\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchOperator: '=',\n searchValue: selectedTransactionType?.transactionTypeId,\n groupId: 1\n }\n ],\n getAll: true\n }\n },\n !!!isTransactionUiActionSidesheetOpen,\n false\n );\n\n /** TransactionUiActionType */\n const [{ data: transactionUiActionTypes }] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionUiActionType`,\n {\n method: 'GET'\n },\n false,\n false\n );\n\n /** TransactionTypeConfiguration */\n const postCreateTransactionTypeConfiguration = async (\n transactionTypeConfiguration\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfiguration`,\n {\n method: 'POST'\n },\n {\n data: transactionTypeConfiguration\n }\n );\n };\n\n const putUpdateTransactionTypeConfiguration = async (\n transactionTypeConfigurationId,\n transactionTypeConfiguration\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfiguration/${transactionTypeConfigurationId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionTypeConfiguration\n }\n );\n };\n\n const deleteTransactionTypeConfiguration = async (\n transactionTypeConfigurationId\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfiguration/${transactionTypeConfigurationId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n /** TransactionRuleType */\n const [{ data: transactionRuleTypes }] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionRuleType`,\n {\n method: 'GET'\n },\n false,\n false\n );\n\n /** Roles */\n const [{ data: roles }] = useAxiosGet(\n process.env.REACT_APP_TENANTS_API_BASE,\n `Roles?tenantId=${user?.currentTenantId}`,\n {\n method: 'GET'\n },\n !!!user?.currentTenantId,\n false\n );\n\n /** TransactionTypeConfigurationTransactionAction */\n const postCreateTransactionTypeConfigurationTransactionAction = async (\n ttcta\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfigurationTransactionAction/createBulk`,\n {\n method: 'POST'\n },\n {\n data: ttcta\n }\n );\n };\n\n const putUpdateTransactionTypeConfigurationTransactionAction = async (\n transactionTypeConfigurationId,\n transactionTypeTransactionActionId,\n transactionTypeConfigurationTransactionAction\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfigurationTransactionAction/${transactionTypeConfigurationId}/${transactionTypeTransactionActionId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionTypeConfigurationTransactionAction\n }\n );\n };\n\n const deleteTransactionTypeConfigurationTransactionAction = async (\n transactionTypeConfigurationId,\n transactionTypeTransactionActionId\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfigurationTransactionAction/${transactionTypeConfigurationId}/${transactionTypeTransactionActionId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const [{ data: ttctaList }, fetchTtctaList] = useAxiosGet(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionTypeConfigurationTransactionAction/search`,\n {\n method: 'post',\n data: {\n filterElements: [\n {\n searchField: 'TransactionTypeConfigurationId',\n searchOperator: '=',\n searchValue:\n selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n groupId: 1\n }\n ],\n getAll: true\n }\n },\n !!!selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n false\n );\n\n /** TransactionAttachmenType */\n const postCreateTransactionAttachmentType = async (\n transactionAttachmentType\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionAttachmentType`,\n {\n method: 'POST'\n },\n {\n data: transactionAttachmentType\n }\n );\n };\n\n const putUpdateTransactionAttachmentType = async (\n transactionAttachmentTypeId,\n transactionAttachmentType\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionAttachmentType/${transactionAttachmentTypeId}`,\n {\n method: 'PUT'\n },\n {\n data: transactionAttachmentType\n }\n );\n };\n\n const deleteTransactionAttachmentType = async (\n transactionAttachmentTypeId\n ) => {\n return await apiMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionAttachmentType/${transactionAttachmentTypeId}`,\n {\n method: 'DELETE'\n }\n );\n };\n\n const currentApiCatalogId = useCatalogStore(\n (state) => state.currentApiCatalogId\n );\n\n const { data: catalogObjects } = useApiCatalog(currentApiCatalogId);\n\n // Get the list of properties for the selected domain name (i.e. catalogObjectName)\n const catalogObjectProperties = useMemo(() => {\n const catalogObjectList = catalogObjects?.ctlg?.catalogObjectList;\n if (!catalogObjectList) return [];\n const catalogObject = catalogObjectList?.find(\n (obj) =>\n (obj.catalogObjectName === selectedTransactionType?.domainName ||\n obj.catalogObjectName === selectedDomainName) &&\n obj.apiCatalogId === currentApiCatalogId\n );\n if (!catalogObject) return [];\n const properties = catalogObject?.properties\n .filter(\n (property) =>\n property.name !== 'businessObjectKey' && property.name !== null\n )\n .map((property) => property.name);\n return properties;\n }, [\n catalogObjects,\n selectedTransactionType,\n selectedDomainName,\n currentApiCatalogId\n ]);\n\n /** Sidesheet handlers */\n const handleSideSheet = useCallback((isOpen, transactionType) => {\n setIsTransactionTypeSideSheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n }, []);\n\n const handleTransactionTypeStatusSideSheet = useCallback(\n (isOpen, transactionType) => {\n setIsTransactionTypeStatusSidesheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n },\n []\n );\n\n const handleCreateOrEditTransactionTypeStatusSideSheet = useCallback(\n (isOpen, transactionTypeStatus) => {\n setIsCreateOrEditTransactionTypeStatusSidesheetOpen(isOpen);\n setSelectedTransactionTypeStatus(transactionTypeStatus);\n },\n []\n );\n\n const handleTransactionTypeTransactionActionSidesheet = useCallback(\n (isOpen, transactionType) => {\n setIsTransactionTypeTransactionActionSidesheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n },\n []\n );\n\n const handleCreateOrEditTransactionTypeTransactionActionSidesheet =\n useCallback((isOpen, transactionTypeTransactionAction) => {\n setIsCreateOrEditTransactionTypeTransactionActionSidesheetOpen(isOpen);\n setSelectedTransactionTypeTransactionAction(\n transactionTypeTransactionAction\n );\n }, []);\n\n const handleTransactionUiActionSidesheet = useCallback(\n (isOpen, transactionType) => {\n setIsTransactionUiActionSidesheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n },\n []\n );\n\n const handleCreateOrEditTransactionUiActionSidesheet = useCallback(\n (isOpen, transactionUiAction) => {\n setIsCreateOrEditTransactionUiActionSidesheetOpen(isOpen);\n setSelectedTransactionUiAction(transactionUiAction);\n },\n []\n );\n\n const handleTransactionTypeConfigurationSidesheet = useCallback(\n (isOpen, transactionType) => {\n setIsTransactionTypeConfigurationSidesheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n },\n []\n );\n\n const handleCreateOrEditTransactionTypeConfigurationSidesheet = useCallback(\n (isOpen, transactionTypeConfiguration) => {\n setIsCreateOrEditTransactionTypeConfigurationSidesheetOpen(isOpen);\n setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n },\n []\n );\n\n const handleTransactionTypeConfigurationTransactionActionSidesheet =\n useCallback((isOpen, transactionTypeConfiguration) => {\n setIsTransactionTypeConfigurationTransactionActionSidesheetOpen(isOpen);\n setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n }, []);\n\n const handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet =\n useCallback((isOpen, transactionTypeConfigurationTransactionAction) => {\n setIsCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen(\n isOpen\n );\n setSelectedTransactionTypeConfigurationTransactionAction(\n transactionTypeConfigurationTransactionAction\n );\n }, []);\n\n const handleTransactionAttachmentTypeSidesheet = useCallback(\n (isOpen, transactionType) => {\n setIsTransactionAttachmentTypeSidesheetOpen(isOpen);\n setSelectedTransactionType(transactionType);\n },\n []\n );\n\n const handleCreateOrEditTransactionAttachmentTypeSidesheet = useCallback(\n (isOpen, transactionAttachmentType) => {\n setIsCreateOrEditTransactionAttachmentTypeSidesheetOpen(isOpen);\n setSelectedTransactionAttachmentType(transactionAttachmentType);\n },\n []\n );\n\n // API call handlers\n /** TransactionType */\n const handleCreateTransactionType = useCallback(\n async (formValues) => {\n const newTransactionType = { ...formValues };\n\n try {\n const response = await postCreateTransactionType(newTransactionType);\n if (response?.status === 201) {\n enqueueSnackbar(t('TransactionType created successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleSideSheet(false);\n setSelectedDomainName('');\n gridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [enqueueSnackbar, gridApiRef, handleSideSheet, successAction, t]\n );\n\n const handleUpdateTransactionType = useCallback(\n async (formValues, initialValues) => {\n const transactionTypeId = initialValues.transactionTypeId;\n const updatedTransactionType = {\n ...initialValues,\n ...formValues\n };\n\n try {\n const response = await putUpdateTransactionType(\n transactionTypeId,\n updatedTransactionType\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionType updated successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleSideSheet(false);\n setSelectedDomainName('');\n gridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [enqueueSnackbar, gridApiRef, handleSideSheet, successAction, t]\n );\n\n const handleDeleteTransactionType = useCallback(async () => {\n if (!selectedTransactionType) return;\n\n setIsTransactionTypeSidesheetLoading(true);\n const transactionTypeId = selectedTransactionType.transactionTypeId;\n\n try {\n const response = await deleteTransactionType(transactionTypeId);\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionType deleted successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n setIsDeleteTransactionTypeDialogOpen(false);\n gridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n } finally {\n setIsTransactionTypeSidesheetLoading(false);\n }\n }, [\n enqueueSnackbar,\n selectedTransactionType,\n successAction,\n t,\n setIsTransactionTypeSidesheetLoading,\n setIsDeleteTransactionTypeDialogOpen\n ]);\n /** end of TransactionType */\n\n /** TransactionTypeStatus */\n const handleCreateTransactionTypeStatus = useCallback(\n async (formValues) => {\n const newTransactionTypeStatus = {\n ...formValues,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n color: formValues?.color?.value || null\n };\n let hasDefaultOrClosedorCancelledStatus = false;\n\n try {\n const isCreatingDefaultStatus = formValues?.isDefault === true;\n const isCreatingClosedStatus = formValues?.isClosedStatus === true;\n const isCreatingCancelledStatus =\n formValues?.isCancelledStatus === true;\n if (\n isCreatingDefaultStatus ||\n isCreatingClosedStatus ||\n isCreatingCancelledStatus\n ) {\n const searchTransactionTypeStatusResponse =\n await searchTransactionTypeStatusByTransactionTypeId(\n selectedTransactionType?.transactionTypeId\n );\n if (searchTransactionTypeStatusResponse?.status !== 200) {\n enqueueSnackbar(\n t(\n 'Unable to validate existing TransactionTypeStatus records. Please try again.'\n ),\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n return;\n }\n hasDefaultOrClosedorCancelledStatus =\n hasDefaultAndClosedTransactionTypeStatus(\n searchTransactionTypeStatusResponse?.data?.pageList,\n isCreatingDefaultStatus,\n isCreatingClosedStatus,\n isCreatingCancelledStatus\n );\n }\n\n if (\n (isCreatingDefaultStatus ||\n isCreatingClosedStatus ||\n isCreatingCancelledStatus) &&\n hasDefaultOrClosedorCancelledStatus\n ) {\n let statusConflictMessage = '';\n if (isCreatingDefaultStatus) {\n statusConflictMessage =\n 'There is already a TransactionTypeStatus for this TransactionType that has IsDefault set to true.';\n } else if (isCreatingClosedStatus) {\n statusConflictMessage =\n 'There is already a TransactionTypeStatus for this TransactionType that has IsClosedStatus set to true.';\n } else if (isCreatingCancelledStatus) {\n statusConflictMessage =\n 'There is already a TransactionTypeStatus for this TransactionType that has IsCancelledStatus set to true.';\n }\n enqueueSnackbar(t(statusConflictMessage), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n return;\n }\n const response = await postCreateTransactionTypeStatus(\n newTransactionTypeStatus\n );\n if (response?.status === 201) {\n enqueueSnackbar(t('TransactionTypeStatus created successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionTypeStatusSideSheet(false);\n ttsGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response?.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttsGridApiRef,\n handleCreateOrEditTransactionTypeStatusSideSheet,\n successAction,\n t,\n selectedTransactionType,\n searchTransactionTypeStatusByTransactionTypeId,\n hasDefaultAndClosedTransactionTypeStatus\n ]\n );\n\n const handleUpdateTransactionTypeStatus = useCallback(\n async (formValues, initialValues) => {\n const transactionTypeStatusId = initialValues.transactionTypeStatusId;\n const updatedTransactionTypeStatus = {\n ...initialValues,\n ...formValues,\n color: formValues?.color?.value || null\n };\n let hasExistingDefaultOrClosedStatus = false;\n\n try {\n const isEditingDefaultStatus = formValues?.isDefault === true;\n const isEditingClosedStatus = formValues?.isClosedStatus === true;\n if (isEditingDefaultStatus || isEditingClosedStatus) {\n const searchTransactionTypeStatusResponse =\n await searchTransactionTypeStatusByTransactionTypeId(\n selectedTransactionType?.transactionTypeId\n );\n if (searchTransactionTypeStatusResponse?.status !== 200) {\n enqueueSnackbar(\n t(\n 'Unable to validate existing TransactionTypeStatus records. Please try again.'\n ),\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n return;\n }\n hasExistingDefaultOrClosedStatus =\n hasDefaultAndClosedTransactionTypeStatus(\n searchTransactionTypeStatusResponse?.data?.pageList,\n isEditingDefaultStatus,\n isEditingClosedStatus\n );\n }\n\n if (\n (isEditingDefaultStatus || isEditingClosedStatus) &&\n hasExistingDefaultOrClosedStatus\n ) {\n enqueueSnackbar(\n t(`There is already a TransactionTypeStatus for this TransactionType that has\n ${\n isEditingDefaultStatus\n ? isEditingClosedStatus\n ? 'IsDefault and/or IsClosedStatus'\n : 'IsDefault'\n : 'IsClosedStatus'\n } set to true.`),\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n return;\n }\n const response = await putUpdateTransactionTypeStatus(\n transactionTypeStatusId,\n updatedTransactionTypeStatus\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionTypeStatus updated successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionTypeStatusSideSheet(false);\n ttsGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response?.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttsGridApiRef,\n handleCreateOrEditTransactionTypeStatusSideSheet,\n successAction,\n t,\n searchTransactionTypeStatusByTransactionTypeId,\n hasDefaultAndClosedTransactionTypeStatus,\n selectedTransactionType\n ]\n );\n\n const handleDeleteTransactionTypeStatus = useCallback(async () => {\n if (!selectedTransactionTypeStatus) return;\n\n const transactionTypeStatusId =\n selectedTransactionTypeStatus.transactionTypeStatusId;\n\n try {\n const response = await deleteTransactionTypeStatus(\n transactionTypeStatusId\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionTypeStatus deleted successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n setIsDeleteTransactionTypeStatusDialogOpen(false);\n ttsGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n enqueueSnackbar,\n selectedTransactionTypeStatus,\n successAction,\n t,\n ttsGridApiRef,\n setIsDeleteTransactionTypeStatusDialogOpen\n ]);\n /** end of TransactionTypeStatus */\n\n /** TransactionTypeTransactionAction */\n const handleCreateTransactionTypeTransactionAction = useCallback(\n async (formValues) => {\n const {\n transactionAction,\n toStatus,\n actionApiId,\n pageId,\n mandatoryFields,\n hiddenFields,\n domainDataToUpdate,\n ...restValues\n } = formValues || {};\n\n const domainDataDictionary = (\n Array.isArray(domainDataToUpdate) ? domainDataToUpdate : []\n ).reduce((accumulator, entry) => {\n if (!entry) {\n return accumulator;\n }\n\n const [field, value] = entry;\n if (field) {\n accumulator[field] = value;\n }\n\n return accumulator;\n }, {});\n\n const newTransactionTypeTransactionAction = {\n ...restValues,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionActionId: transactionAction?.transactionActionId,\n parameters: {\n ToStatus: toStatus?.transactionTypeStatusId,\n DomainDataToUpdate: domainDataDictionary,\n MandatoryFields: Array.isArray(mandatoryFields)\n ? mandatoryFields\n : [],\n HiddenFields: Array.isArray(hiddenFields) ? hiddenFields : [],\n ActionApiId: actionApiId?.actionApiId || '',\n PageId: pageId?.pageId || ''\n }\n };\n\n try {\n const response = await postCreateTransactionTypeTransactionAction(\n newTransactionTypeTransactionAction\n );\n if (response?.status === 201) {\n enqueueSnackbar(\n t('TransactionTypeTransactionAction created successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeTransactionActionSidesheet(false);\n tttaGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n tttaGridApiRef,\n handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n successAction,\n t,\n selectedTransactionType\n ]\n );\n\n const handleUpdateTransactionTypeTransactionAction = useCallback(\n async (formValues, initialValues) => {\n const {\n transactionAction,\n toStatus,\n actionApiId,\n pageId,\n mandatoryFields,\n hiddenFields,\n domainDataToUpdate\n } = formValues || {};\n\n const transactionTypeTransactionActionId =\n initialValues.transactionTypeTransactionActionId;\n // Process the domainDataToUpdate array form data into an object\n const domainDataDictionary = (\n Array.isArray(domainDataToUpdate) ? domainDataToUpdate : []\n ).reduce((accumulator, entry) => {\n if (!entry) {\n return accumulator;\n }\n\n const [field, value] = entry;\n if (field) {\n accumulator[field] = value;\n }\n\n return accumulator;\n }, {});\n\n const updatedTransactionTypeTransactionAction = {\n ...initialValues,\n name: formValues?.name || '',\n description: formValues?.description || '',\n icon: formValues?.icon || '',\n transactionTypeTransactionActionId: transactionTypeTransactionActionId,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionActionId: transactionAction?.transactionActionId,\n parameters: {\n ToStatus: toStatus?.transactionTypeStatusId,\n DomainDataToUpdate: domainDataDictionary,\n MandatoryFields: Array.isArray(mandatoryFields)\n ? mandatoryFields\n : [],\n HiddenFields: Array.isArray(hiddenFields) ? hiddenFields : [],\n ActionApiId: actionApiId?.actionApiId || '',\n PageId: pageId?.pageId || ''\n }\n };\n\n try {\n const response = await putUpdateTransactionTypeTransactionAction(\n transactionTypeTransactionActionId,\n updatedTransactionTypeTransactionAction\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t('TransactionTypeTransactionAction updated successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeTransactionActionSidesheet(false);\n tttaGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n tttaGridApiRef,\n handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n successAction,\n t,\n selectedTransactionType\n ]\n );\n\n const handleDeleteTransactionTypeTransactionAction = useCallback(async () => {\n if (!selectedTransactionTypeTransactionAction) return;\n\n const transactionTypeTransactionActionId =\n selectedTransactionTypeTransactionAction.transactionTypeTransactionActionId;\n\n try {\n const response = await deleteTransactionTypeTransactionAction(\n transactionTypeTransactionActionId\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t('TransactionTypeTransactionAction deleted successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n setIsDeleteTransactionTypeTransactionActionDialogOpen(false);\n tttaGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n enqueueSnackbar,\n selectedTransactionTypeTransactionAction,\n successAction,\n t,\n setIsDeleteTransactionTypeTransactionActionDialogOpen\n ]);\n /** end of TransactionTypeTransactionAction */\n\n /** TransactionUiAction */\n const handleCreateTransactionUiAction = useCallback(\n async (formValues) => {\n const { transactionUiActionType, actionApi, page, ...restValues } =\n formValues;\n\n const newTransactionUiAction = {\n ...restValues,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionUiActionTypeId:\n transactionUiActionType?.transactionUiActionTypeId,\n parameters: {\n ActionApiId: actionApi?.actionApiId || '',\n PageId: page?.pageId || ''\n }\n };\n\n try {\n const response = await postCreateTransactionUiAction(\n newTransactionUiAction\n );\n if (response?.status === 201) {\n enqueueSnackbar(t('TransactionUiAction created successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionUiActionSidesheet(false);\n tuaGridApiRef.current?.refreshServerSide();\n fetchTUiActionsList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n tuaGridApiRef,\n handleCreateOrEditTransactionUiActionSidesheet,\n successAction,\n t,\n selectedTransactionType,\n fetchTUiActionsList\n ]\n );\n\n const handleUpdateTransactionUiAction = useCallback(\n async (formValues, initialValues) => {\n const { transactionUiActionType, actionApi, page, ...restValues } =\n formValues;\n const transactionUiActionId = initialValues.transactionUiActionId;\n\n const updatedTransactionUiAction = {\n ...restValues,\n transactionUiActionId: transactionUiActionId,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionUiActionTypeId:\n transactionUiActionType?.transactionUiActionTypeId,\n parameters: {\n ActionApiId: actionApi?.actionApiId || '',\n PageId: page?.pageId || ''\n }\n };\n\n try {\n const response = await putUpdateTransactionUiAction(\n transactionUiActionId,\n updatedTransactionUiAction\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionUiAction updated successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionUiActionSidesheet(false);\n tuaGridApiRef.current?.refreshServerSide();\n fetchTUiActionsList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n tuaGridApiRef,\n handleCreateOrEditTransactionUiActionSidesheet,\n successAction,\n t,\n selectedTransactionType,\n fetchTUiActionsList\n ]\n );\n\n const handleDeleteTransactionUiAction = useCallback(async () => {\n if (!selectedTransactionUiAction) return;\n\n const transactionUiActionId =\n selectedTransactionUiAction.transactionUiActionId;\n\n try {\n const response = await deleteTransactionUiAction(transactionUiActionId);\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionUiAction deleted successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n setIsDeleteTransactionUiActionDialogOpen(false);\n tuaGridApiRef.current?.refreshServerSide();\n fetchTUiActionsList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n enqueueSnackbar,\n selectedTransactionUiAction,\n successAction,\n t,\n setIsDeleteTransactionUiActionDialogOpen,\n fetchTUiActionsList\n ]);\n /** end of TransactionUiAction */\n\n /** TransactionTypeConfiguration */\n const handleCreateTransactionTypeConfiguration = useCallback(\n async (formValues) => {\n const {\n transactionRuleType,\n currentStatus,\n tenantUserRoles,\n currentDomainValue,\n ...restValues\n } = formValues;\n\n const domainDataDictionary = (\n Array.isArray(currentDomainValue) ? currentDomainValue : []\n ).reduce((accumulator, entry) => {\n if (!entry) {\n return accumulator;\n }\n\n const field = entry[0];\n const value = entry[1].value;\n const operator = entry[1]?.operator?.value;\n if (field) {\n accumulator[field] = {\n value: value,\n operator: operator\n };\n }\n\n return accumulator;\n }, {});\n\n const tenantUserRoleIds = tenantUserRoles?.map((tur) => tur?.roleId);\n const configurationObj = {\n CurrentStatus: currentStatus,\n CurrentDomainValue: domainDataDictionary,\n TenantUserRoleIds: Array.isArray(tenantUserRoleIds)\n ? tenantUserRoleIds\n : []\n };\n const expressionLogic =\n formatTransactionTypeConfigurationIntoExpressionLogic(configurationObj);\n const newTransactionTypeConfiguration = {\n ...restValues,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionRuleTypeId: transactionRuleType?.transactionRuleTypeId,\n configuration: {\n ...configurationObj,\n CurrentStatusId: currentStatus?.transactionTypeStatusId\n },\n expressionLogic\n };\n\n try {\n const response = await postCreateTransactionTypeConfiguration(\n newTransactionTypeConfiguration\n );\n if (response?.status === 201) {\n enqueueSnackbar(\n t('TransactionTypeConfiguration created successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeConfigurationSidesheet(false);\n ttcGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttcGridApiRef,\n handleCreateOrEditTransactionTypeConfigurationSidesheet,\n successAction,\n t,\n selectedTransactionType\n ]\n );\n\n const handleUpdateTransactionTypeConfiguration = useCallback(\n async (formValues, initialValues) => {\n const {\n transactionRuleType,\n currentStatus,\n tenantUserRoles,\n currentDomainValue,\n name,\n ...restValues\n } = formValues;\n const transactionTypeConfigurationId =\n initialValues.transactionTypeConfigurationId;\n\n const domainDataDictionary = (\n Array.isArray(currentDomainValue) ? currentDomainValue : []\n ).reduce((accumulator, entry) => {\n if (!entry) {\n return accumulator;\n }\n\n const field = entry[0];\n const value = entry[1].value;\n const operator = entry[1]?.operator?.value;\n if (field) {\n accumulator[field] = {\n value: value,\n operator: operator\n };\n }\n\n return accumulator;\n }, {});\n\n const tenantUserRoleIds = tenantUserRoles?.map((tur) => tur?.roleId);\n const configurationObj = {\n CurrentStatus: currentStatus,\n CurrentDomainValue: domainDataDictionary,\n TenantUserRoleIds: Array.isArray(tenantUserRoleIds)\n ? tenantUserRoleIds\n : []\n };\n const expressionLogic =\n formatTransactionTypeConfigurationIntoExpressionLogic(configurationObj);\n const updatedTransactionTypeConfiguration = {\n ...initialValues,\n name: name || '',\n order: formValues?.order || 0,\n enabled: formValues?.enabled,\n transactionTypeConfigurationId: transactionTypeConfigurationId,\n transactionTypeId: selectedTransactionType?.transactionTypeId,\n transactionRuleTypeId: transactionRuleType?.transactionRuleTypeId,\n configuration: {\n ...configurationObj,\n CurrentStatusId: currentStatus?.transactionTypeStatusId\n },\n expressionLogic\n };\n\n try {\n const response = await putUpdateTransactionTypeConfiguration(\n transactionTypeConfigurationId,\n updatedTransactionTypeConfiguration\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t('TransactionTypeConfiguration updated successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeConfigurationSidesheet(false);\n ttcGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttcGridApiRef,\n handleCreateOrEditTransactionTypeConfigurationSidesheet,\n successAction,\n t,\n selectedTransactionType\n ]\n );\n\n const handleDeleteTransactionTypeConfiguration = useCallback(async () => {\n if (!selectedTransactionTypeConfiguration) return;\n\n const transactionTypeConfigurationId =\n selectedTransactionTypeConfiguration.transactionTypeConfigurationId;\n\n try {\n const response = await deleteTransactionTypeConfiguration(\n transactionTypeConfigurationId\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t('TransactionTypeConfiguration deleted successfully'),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n setIsDeleteTransactionTypeConfigurationDialogOpen(false);\n ttcGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n enqueueSnackbar,\n selectedTransactionTypeConfiguration,\n successAction,\n t,\n setIsDeleteTransactionTypeConfigurationDialogOpen\n ]);\n /** end of TransactionTypeConfiguration */\n\n /** TransactionTypeConfigurationTransactionAction */\n const handleCreateTransactionTypeConfigurationTransactionAction = useCallback(\n async (formValues) => {\n const { transactionTypeTransactionActions } = formValues;\n\n const newTTCTActions = [];\n\n transactionTypeTransactionActions?.forEach((action) => {\n newTTCTActions.push({\n transactionTypeConfigurationId:\n selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n transactionTypeTransactionActionId:\n action?.transactionTypeTransactionActionId\n });\n });\n\n try {\n const response =\n await postCreateTransactionTypeConfigurationTransactionAction(\n newTTCTActions\n );\n if (response?.status === 201) {\n enqueueSnackbar(\n t(\n 'TransactionTypeConfigurationTransactionAction(s) created successfully'\n ),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(\n false\n );\n ttctaGridApiRef.current?.refreshServerSide();\n fetchTtctaList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttctaGridApiRef,\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n successAction,\n t,\n selectedTransactionTypeConfiguration,\n fetchTtctaList\n ]\n );\n\n const handleUpdateTransactionTypeConfigurationTransactionAction = useCallback(\n async (formValues, initialValues) => {\n const { transactionTypeTransactionActions } = formValues;\n const transactionTypeConfigurationId =\n selectedTransactionTypeConfiguration?.transactionTypeConfigurationId;\n const existingTransactionTypeTransactionActionId =\n initialValues?.transactionTypeTransactionActionId;\n\n const updatedTransactionTypeConfigurationTransactionAction = {\n transactionTypeConfigurationId: transactionTypeConfigurationId,\n transactionTypeTransactionActionId:\n transactionTypeTransactionActions?.[0]\n ?.transactionTypeTransactionActionId\n };\n\n try {\n const response =\n await putUpdateTransactionTypeConfigurationTransactionAction(\n transactionTypeConfigurationId,\n existingTransactionTypeTransactionActionId,\n updatedTransactionTypeConfigurationTransactionAction\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t(\n 'TransactionTypeConfigurationTransactionAction updated successfully'\n ),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(\n false\n );\n ttctaGridApiRef.current?.refreshServerSide();\n fetchTtctaList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n ttctaGridApiRef,\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n successAction,\n t,\n selectedTransactionTypeConfiguration,\n fetchTtctaList\n ]\n );\n\n const handleDeleteTransactionTypeConfigurationTransactionAction =\n useCallback(async () => {\n if (!selectedTransactionTypeConfigurationTransactionAction) return;\n\n const transactionTypeConfigurationId =\n selectedTransactionTypeConfigurationTransactionAction?.transactionTypeConfigurationId;\n const transactionTypeTransactionActionId =\n selectedTransactionTypeConfigurationTransactionAction?.transactionTypeTransactionActionId;\n\n try {\n const response =\n await deleteTransactionTypeConfigurationTransactionAction(\n transactionTypeConfigurationId,\n transactionTypeTransactionActionId\n );\n if (response.status === 204) {\n enqueueSnackbar(\n t(\n 'TransactionTypeConfigurationTransactionAction deleted successfully'\n ),\n {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n }\n );\n }\n setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(\n false\n );\n ttctaGridApiRef.current?.refreshServerSide();\n fetchTtctaList();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n ttctaGridApiRef,\n enqueueSnackbar,\n selectedTransactionTypeConfigurationTransactionAction,\n successAction,\n t,\n setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen,\n fetchTtctaList\n ]);\n /** end of TransactionTypeConfigurationTransactionAction */\n\n /** TransactionAttachmentType */\n const handleCreateTransactionAttachmentType = useCallback(\n async (formValues) => {\n const newTransactionAttachmentType = {\n ...formValues,\n transactionTypeId: selectedTransactionType?.transactionTypeId\n };\n\n try {\n const response = await postCreateTransactionAttachmentType(\n newTransactionAttachmentType\n );\n if (response?.status === 201) {\n enqueueSnackbar(t('TransactionAttachmentType created successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionAttachmentTypeSidesheet(false);\n tatGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [\n enqueueSnackbar,\n tatGridApiRef,\n successAction,\n t,\n selectedTransactionType,\n handleCreateOrEditTransactionAttachmentTypeSidesheet\n ]\n );\n\n const handleUpdateTransactionAttachmentType = useCallback(\n async (formValues, initialValues) => {\n const transactionTypeId = selectedTransactionType?.transactionTypeId;\n const transactionAttachmentTypeId =\n selectedTransactionAttachmentType?.transactionAttachmentTypeId;\n const updatedTransactionType = {\n ...initialValues,\n ...formValues,\n transactionTypeId: transactionTypeId,\n transactionAttachmentTypeId: transactionAttachmentTypeId\n };\n\n try {\n const response = await putUpdateTransactionAttachmentType(\n transactionAttachmentTypeId,\n updatedTransactionType\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionAttachmentType updated successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n handleCreateOrEditTransactionAttachmentTypeSidesheet(false);\n tatGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n },\n [enqueueSnackbar, selectedTransactionType, successAction, t]\n );\n\n const handleDeleteTransactionAttachmentType = useCallback(async () => {\n if (!selectedTransactionAttachmentType) return;\n\n const transactionAttachmentTypeId =\n selectedTransactionAttachmentType?.transactionAttachmentTypeId;\n\n try {\n const response = await deleteTransactionAttachmentType(\n transactionAttachmentTypeId\n );\n if (response.status === 204) {\n enqueueSnackbar(t('TransactionAttachmentType deleted successfully'), {\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: successAction,\n autoHideDuration: null\n });\n }\n setIsDeleteTransactionAttachmentTypeDialogOpen(false);\n tatGridApiRef.current?.refreshServerSide();\n } catch (err) {\n enqueueSnackbar(\n typeof err.response.data === 'object'\n ? err.response.data.title\n : err.response.data,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n }\n }, [\n enqueueSnackbar,\n selectedTransactionAttachmentType,\n tatGridApiRef,\n successAction,\n t,\n setIsDeleteTransactionAttachmentTypeDialogOpen\n ]);\n /** end of TransactionAttachmentType */\n\n const handleOpenDeleteTransactionTypeDialog = useCallback(\n (transactionType) => {\n setSelectedTransactionType(transactionType);\n setIsDeleteTransactionTypeDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionTypeDialog = useCallback(() => {\n setIsDeleteTransactionTypeDialogOpen(false);\n setSelectedTransactionType(null);\n }, []);\n\n const handleOpenDeleteTransactionTypeStatusDialog = useCallback(\n (transactionTypeStatus) => {\n setSelectedTransactionTypeStatus(transactionTypeStatus);\n setIsDeleteTransactionTypeStatusDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionTypeStatusDialog = useCallback(() => {\n setIsDeleteTransactionTypeStatusDialogOpen(false);\n setSelectedTransactionTypeStatus(null);\n }, []);\n\n const handleOpenDeleteTransactionTypeTransactionActionDialog = useCallback(\n (transactionTypeTransactionAction) => {\n setSelectedTransactionTypeTransactionAction(\n transactionTypeTransactionAction\n );\n setIsDeleteTransactionTypeTransactionActionDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionTypeTransactionActionDialog =\n useCallback(() => {\n setIsDeleteTransactionTypeTransactionActionDialogOpen(false);\n setSelectedTransactionTypeTransactionAction(null);\n }, []);\n\n const handleOpenDeleteTransactionUiActionDialog = useCallback(\n (transactionUiAction) => {\n setSelectedTransactionUiAction(transactionUiAction);\n setIsDeleteTransactionUiActionDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionUiActionDialog = useCallback(() => {\n setIsDeleteTransactionUiActionDialogOpen(false);\n setSelectedTransactionUiAction(null);\n }, []);\n\n const handleOpenDeleteTransactionTypeConfigurationDialog = useCallback(\n (transactionTypeConfiguration) => {\n setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n setIsDeleteTransactionTypeConfigurationDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionTypeConfigurationDialog =\n useCallback(() => {\n setIsDeleteTransactionTypeConfigurationDialogOpen(false);\n setSelectedTransactionTypeConfiguration(null);\n }, []);\n\n const handleOpenDeleteTransactionTypeConfigurationTransactionActionDialog =\n useCallback((transactionTypeConfigurationTransactionAction) => {\n setSelectedTransactionTypeConfigurationTransactionAction(\n transactionTypeConfigurationTransactionAction\n );\n setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(true);\n }, []);\n\n const handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog =\n useCallback(() => {\n setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(false);\n setSelectedTransactionTypeConfigurationTransactionAction(null);\n }, []);\n\n const handleOpenDeleteTransactionAttachmentTypeDialog = useCallback(\n (transactionAttachmentType) => {\n setSelectedTransactionAttachmentType(transactionAttachmentType);\n setIsDeleteTransactionAttachmentTypeDialogOpen(true);\n },\n []\n );\n\n const handleCloseDeleteTransactionAttachmentTypeDialog = useCallback(() => {\n setIsDeleteTransactionAttachmentTypeDialogOpen(false);\n setSelectedTransactionAttachmentType(null);\n }, []);\n\n const columnDefs = useMemo(() => {\n return [\n {\n headerName: t('Transaction Type ID'),\n field: 'transactionTypeId',\n resizable: true,\n sortable: false,\n hide: true\n },\n {\n headerName: t('Name'),\n field: 'name',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Domain Name'),\n field: 'domainName',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Domain Fields'),\n field: 'domainFields',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Allow Revisions'),\n field: 'hasRevision',\n resizable: true,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Revision Field'),\n field: 'revisionField',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Enabled'),\n field: 'enabled',\n resizable: true,\n sortable: false,\n cellDataType: 'boolean'\n },\n {\n headerName: t('Field Label'),\n field: 'domainFieldLabel',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Sub-Type'),\n field: 'domainFieldType',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Sub-Type Value'),\n field: 'domainFieldValue',\n resizable: true,\n sortable: false\n },\n {\n headerName: t('Actions'),\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, transactionType) => {\n handleSideSheet(true, transactionType?.data);\n }\n },\n {\n id: 1,\n title: t('Delete'),\n iconName: 'trashCan',\n handleOnClick: (e, transactionType) => {\n handleOpenDeleteTransactionTypeDialog(transactionType?.data);\n }\n },\n {\n id: 2,\n title: t('Manage Statuses'),\n iconName: 'settings',\n handleOnClick: (e, transactionType) => {\n handleTransactionTypeStatusSideSheet(\n true,\n transactionType?.data\n );\n }\n },\n {\n id: 3,\n title: t('Manage Actions'),\n iconName: 'workorder',\n handleOnClick: (e, transactionType) => {\n handleTransactionTypeTransactionActionSidesheet(\n true,\n transactionType?.data\n );\n }\n },\n {\n id: 4,\n title: t('Manage Forms/Pages'),\n iconName: 'send',\n handleOnClick: (e, transactionType) => {\n handleTransactionUiActionSidesheet(true, transactionType?.data);\n }\n },\n {\n id: 5,\n title: t('Manage Rules'),\n iconName: 'wizard',\n handleOnClick: (e, transactionType) => {\n handleTransactionTypeConfigurationSidesheet(\n true,\n transactionType?.data\n );\n }\n },\n {\n id: 6,\n title: t('Manage Attachment Types'),\n iconName: 'attachment',\n handleOnClick: (e, transactionType) => {\n handleTransactionAttachmentTypeSidesheet(\n true,\n transactionType?.data\n );\n }\n }\n ]\n },\n valueGetter: (params) => params.data,\n suppressMenu: true,\n sortable: false,\n filter: false\n }\n ];\n }, [\n handleSideSheet,\n handleOpenDeleteTransactionTypeDialog,\n handleTransactionTypeStatusSideSheet,\n handleTransactionTypeTransactionActionSidesheet,\n handleTransactionUiActionSidesheet,\n handleTransactionTypeConfigurationSidesheet,\n handleTransactionAttachmentTypeSidesheet,\n t\n ]);\n\n const headerConfig = {\n title: t('Transaction Types'),\n primaryActionButton: {\n label: t('Add'),\n iconName: 'add',\n onClick: () => handleSideSheet(true)\n }\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true\n };\n }, []);\n\n const handleGridApiCallback = (api) => {\n gridApiRef.current = api;\n };\n\n const searchMethodConfig = useMemo(() => {\n return {\n requestUrl: `${process.env.REACT_APP_PRODUCT_API_BASE}/UdpTransactionType/search`,\n customSearchObject: searchObject\n };\n }, [searchObject]);\n\n return (\n <>\n {isTransactionTypeSidesheetLoading && (\n <LinearProgress className={classes.loadingBar} color='secondary' />\n )}\n <SearchMethodUdpGrid\n searchMethodConfig={searchMethodConfig}\n columnDefs={columnDefs}\n gridHeaderConfig={headerConfig}\n gridOptions={gridOptions}\n gridApiCallback={handleGridApiCallback}\n gridFunctions={gridFunctions}\n />\n <UdpTransactionTypeSidesheet\n key={selectedTransactionType?.transactionTypeId}\n initialTransactionType={selectedTransactionType}\n isSideSheetOpen={isTransactionTypeSideSheetOpen}\n handleSideSheet={handleSideSheet}\n setSelectedDomainName={setSelectedDomainName}\n handleCreateTransactionType={handleCreateTransactionType}\n handleUpdateTransactionType={handleUpdateTransactionType}\n catalogObjects={catalogObjects}\n catalogObjectProperties={catalogObjectProperties}\n />\n {getTransactionsByTransactionIdLoading ? (\n <LinearProgress />\n ) : (\n <FluentDialog\n open={isDeleteTransactionTypeDialogOpen}\n onClose={handleCloseDeleteTransactionTypeDialog}\n title={t('Confirm Delete')}\n message={\n !transactionsByTransactionTypeId?.pageList?.length\n ? t(`Are you sure you want to delete this type?`)\n : t(`Unable to delete this type as there are existing transactions associated with it.\n As an alternative, you can disable the type to prevent further use.`)\n }\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionType}\n buttonOneHidden={!!transactionsByTransactionTypeId?.pageList?.length}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionTypeDialog}\n />\n )}\n <UdpTransactionTypeStatusSidesheet\n ref={ttsGridApiRef}\n transactionType={selectedTransactionType}\n transactionTypeStatus={selectedTransactionTypeStatus}\n isSideSheetOpen={isTransactionTypeStatusSidesheetOpen}\n isTransactionTypeStatusCreateOrEditSidesheetOpen={\n isCreateOrEditTransactionTypeStatusSidesheetOpen\n }\n handleTransactionTypeStatusSideSheet={\n handleTransactionTypeStatusSideSheet\n }\n handleCreateOrEditTransactionTypeStatusSideSheet={\n handleCreateOrEditTransactionTypeStatusSideSheet\n }\n handleCreateTransactionTypeStatus={handleCreateTransactionTypeStatus}\n handleUpdateTransactionTypeStatus={handleUpdateTransactionTypeStatus}\n handleDeleteTransactionTypeStatus={\n handleOpenDeleteTransactionTypeStatusDialog\n }\n />\n <FluentDialog\n open={isDeleteTransactionTypeStatusDialogOpen}\n onClose={handleCloseDeleteTransactionTypeStatusDialog}\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this status?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionTypeStatus}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionTypeStatusDialog}\n />\n <UdpTransactionTypeTransactionActionSidesheet\n ref={tttaGridApiRef}\n transactionType={selectedTransactionType}\n transactionTypeTransactionAction={\n selectedTransactionTypeTransactionAction\n }\n isSideSheetOpen={isTransactionTypeTransactionActionSidesheetOpen}\n isTransactionTypeTransactionActionCreateOrEditSidesheetOpen={\n isCreateOrEditTransactionTypeTransactionActionSidesheetOpen\n }\n handleTransactionTypeTransactionActionSidesheet={\n handleTransactionTypeTransactionActionSidesheet\n }\n handleCreateOrEditTransactionTypeTransactionActionSidesheet={\n handleCreateOrEditTransactionTypeTransactionActionSidesheet\n }\n handleCreateTransactionTypeTransactionAction={\n handleCreateTransactionTypeTransactionAction\n }\n handleUpdateTransactionTypeTransactionAction={\n handleUpdateTransactionTypeTransactionAction\n }\n handleDeleteTransactionTypeTransactionAction={\n handleOpenDeleteTransactionTypeTransactionActionDialog\n }\n transactionActions={transactionActions}\n catalogObjectProperties={catalogObjectProperties}\n actionApis={actionApis}\n pages={pages}\n ttstatuses={ttstatuses}\n />\n <FluentDialog\n open={isDeleteTransactionTypeTransactionActionDialogOpen}\n onClose={handleCloseDeleteTransactionTypeTransactionActionDialog}\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this action?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionTypeTransactionAction}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionTypeTransactionActionDialog}\n />\n <UdpTransactionUiActionSidesheet\n ref={tuaGridApiRef}\n transactionType={selectedTransactionType}\n transactionUiAction={selectedTransactionUiAction}\n isSideSheetOpen={isTransactionUiActionSidesheetOpen}\n handleTransactionUiActionSidesheet={handleTransactionUiActionSidesheet}\n isCreateOrEditTransactionUiActionSidesheetOpen={\n isCreateOrEditTransactionUiActionSidesheetOpen\n }\n handleCreateOrEditTransactionUiActionSidesheet={\n handleCreateOrEditTransactionUiActionSidesheet\n }\n handleCreateTransactionUiAction={handleCreateTransactionUiAction}\n handleUpdateTransactionUiAction={handleUpdateTransactionUiAction}\n handleDeleteTransactionUiAction={\n handleOpenDeleteTransactionUiActionDialog\n }\n transactionUiActionTypes={transactionUiActionTypes}\n actionApis={actionApis}\n pages={pages}\n tUiActionsList={tUiActionsList}\n />\n <FluentDialog\n open={isDeleteTransactionUiActionDialogOpen}\n onClose={handleCloseDeleteTransactionUiActionDialog}\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this UI action?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionUiAction}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionUiActionDialog}\n />\n <UdpTransactionTypeConfigurationSidesheet\n ref={ttcGridApiRef}\n transactionType={selectedTransactionType}\n transactionTypeConfiguration={selectedTransactionTypeConfiguration}\n isSideSheetOpen={isTransactionTypeConfigurationSidesheetOpen}\n handleTransactionTypeConfigurationSidesheet={\n handleTransactionTypeConfigurationSidesheet\n }\n isCreateOrEditTransactionTypeConfigurationSidesheetOpen={\n isCreateOrEditTransactionTypeConfigurationSidesheetOpen\n }\n handleCreateOrEditTransactionTypeConfigurationSidesheet={\n handleCreateOrEditTransactionTypeConfigurationSidesheet\n }\n handleCreateTransactionTypeConfiguration={\n handleCreateTransactionTypeConfiguration\n }\n handleUpdateTransactionTypeConfiguration={\n handleUpdateTransactionTypeConfiguration\n }\n handleDeleteTransactionTypeConfiguration={\n handleOpenDeleteTransactionTypeConfigurationDialog\n }\n transactionRuleTypes={transactionRuleTypes}\n catalogObjectProperties={catalogObjectProperties}\n ttstatuses={ttstatuses}\n roles={roles}\n transactionTypeConfigurationTransactionAction={\n selectedTransactionTypeConfigurationTransactionAction\n }\n isTransactionTypeConfigurationTransactionActionSidesheetOpen={\n isTransactionTypeConfigurationTransactionActionSidesheetOpen\n }\n handleTransactionTypeConfigurationTransactionActionSidesheet={\n handleTransactionTypeConfigurationTransactionActionSidesheet\n }\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet={\n handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet\n }\n isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen={\n isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen\n }\n tttactions={tttactions}\n handleCreateTransactionTypeConfigurationTransactionAction={\n handleCreateTransactionTypeConfigurationTransactionAction\n }\n handleUpdateTransactionTypeConfigurationTransactionAction={\n handleUpdateTransactionTypeConfigurationTransactionAction\n }\n handleDeleteTransactionTypeConfigurationTransactionAction={\n handleOpenDeleteTransactionTypeConfigurationTransactionActionDialog\n }\n ttctaList={ttctaList}\n ttctaGridApiRef={ttctaGridApiRef}\n />\n <FluentDialog\n open={isDeleteTransactionTypeConfigurationDialogOpen}\n onClose={handleCloseDeleteTransactionTypeConfigurationDialog}\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this rule?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionTypeConfiguration}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionTypeConfigurationDialog}\n />\n <FluentDialog\n open={isDeleteTransactionTypeConfigurationTransactionActionDialogOpen}\n onClose={\n handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog\n }\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this linked action?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionTypeConfigurationTransactionAction}\n labelTwo={t('Cancel')}\n actionTwo={\n handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog\n }\n />\n <UdpTransactionAttachmentTypeSidesheet\n ref={tatGridApiRef}\n transactionType={selectedTransactionType}\n transactionAttachmentType={selectedTransactionAttachmentType}\n isSideSheetOpen={isTransactionAttachmentTypeSidesheetOpen}\n isTransactionAttachmentTypeCreateOrEditSidesheetOpen={\n isCreateOrEditTransactionAttachmentTypeSidesheetOpen\n }\n handleTransactionAttachmentTypeSidesheet={\n handleTransactionAttachmentTypeSidesheet\n }\n handleCreateOrEditTransactionAttachmentTypeSidesheet={\n handleCreateOrEditTransactionAttachmentTypeSidesheet\n }\n handleCreateTransactionAttachmentType={\n handleCreateTransactionAttachmentType\n }\n handleUpdateTransactionAttachmentType={\n handleUpdateTransactionAttachmentType\n }\n handleDeleteTransactionAttachmentType={\n handleOpenDeleteTransactionAttachmentTypeDialog\n }\n />\n <FluentDialog\n open={isDeleteTransactionAttachmentTypeDialogOpen}\n onClose={handleCloseDeleteTransactionAttachmentTypeDialog}\n title={t('Confirm Delete')}\n message={t(`Are you sure you want to delete this attachment type?`)}\n labelOne={t('Delete')}\n actionOne={handleDeleteTransactionAttachmentType}\n labelTwo={t('Cancel')}\n actionTwo={handleCloseDeleteTransactionAttachmentTypeDialog}\n />\n </>\n );\n};\n\nexport default UdpTransactionTypesPage;\n","export * from './UdpTransactionTypesPage';\nexport {default} from './UdpTransactionTypesPage';\n"],"mappings":"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"}