udp-react-enterprise-component-library 25.18.3-beta.7 → 25.18.3-beta.9
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.
- package/dist/{UdpFormsSubmissionGrid-DH_T7FWK.js → UdpFormsSubmissionGrid-DFUaQDgZ.js} +5 -1
- package/dist/UdpFormsSubmissionGrid-DFUaQDgZ.js.map +1 -0
- package/dist/{UdpTransactionsPage-BpHCN2VF.js → UdpTransactionsPage-B-0Z5NDA.js} +30 -12
- package/dist/UdpTransactionsPage-B-0Z5NDA.js.map +1 -0
- package/dist/index.js +2 -2
- package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
- package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.d.ts.map +1 -1
- package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
- package/dist/udp/pages/UdpPages/index.js +1 -1
- package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
- package/export-map.json +1 -1
- package/package.json +1 -1
- package/dist/UdpFormsSubmissionGrid-DH_T7FWK.js.map +0 -1
- package/dist/UdpTransactionsPage-BpHCN2VF.js.map +0 -1
|
@@ -45,6 +45,10 @@ const filterConfigByUrlField = {
|
|
|
45
45
|
agGridField: "form_Name",
|
|
46
46
|
filterType: "text"
|
|
47
47
|
},
|
|
48
|
+
formsubmission_formid: {
|
|
49
|
+
agGridField: "formSubmission_FormId",
|
|
50
|
+
filterType: "text"
|
|
51
|
+
},
|
|
48
52
|
formsubmission_formversion: {
|
|
49
53
|
agGridField: "formSubmission_FormVersion",
|
|
50
54
|
filterType: "number"
|
|
@@ -749,4 +753,4 @@ const UdpFormsSubmissionGrid = ({ isManagerMode = false, generic1 = void 0, gene
|
|
|
749
753
|
|
|
750
754
|
//#endregion
|
|
751
755
|
export { UdpFormsSubmissionGrid as t };
|
|
752
|
-
//# sourceMappingURL=UdpFormsSubmissionGrid-
|
|
756
|
+
//# sourceMappingURL=UdpFormsSubmissionGrid-DFUaQDgZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UdpFormsSubmissionGrid-DFUaQDgZ.js","names":["CustomMenuPage"],"sources":["../src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.jsx"],"sourcesContent":["import React, {\n useMemo,\n useState,\n useEffect,\n useCallback,\n useRef\n} from 'react';\nimport { useUser } from '../../../utilities/auth/useUser';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport { CustomMenuPage } from '../../../menuPage';\nimport { useTranslation } from 'react-i18next';\nimport { apiMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { LoadingIndicator } from '../../../UI/loading/LoadingIndicator';\nimport { UdpPageEnums } from '../../../enums';\nimport { StatusCellRenderer } from '../../../UI/templates/ui/renderers';\nimport { SqlFilterOperators } from '../../../enums/aggridEnums';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport { Autocomplete } from '@material-ui/lab';\nimport { TextField, FormControlLabel, Switch} from '@material-ui/core';\nimport { PageLoading } from '../../../UI';\nimport { parseSearchParamsIntoFilterObjects } from '../../../utilities/search';\n\n\n\n// ============================================================================\n// Submission status enum\n// Used to map numeric submission status values returned from the backend\n// ============================================================================\nconst UdpFormsSubmissionStatusEnum = Object.freeze({\n InProgress: 1,\n Submitted: 2,\n Created: 3\n});\n\n// ============================================================================\n// Date formatter helper\n// Normalizes backend date strings and formats them for display\n// Handles both ISO strings and \"YYYY-MM-DD HH:mm:ss.sss\" formats\n// ============================================================================\nconst formatDateTime = (dateString) => {\n let normalizedDateString = dateString;\n\n // Check if the string is in the 'YYYY-MM-DD HH:mm:ss.sss' format\n // (i.e., contains a space instead of 'T').\n // If the input is already ISO (e.g. '2025-12-10T20:23:23.055Z'),\n // it passes straight through.\n // This format is assumed to be missing timezone info and treated as UTC.\n if (dateString.includes(' ')) {\n // Replace the space with 'T' to normalize to ISO-like format\n normalizedDateString = dateString.replace(' ', 'T');\n }\n\n // Ensure UTC timezone is explicitly specified\n if (!dateString.toUpperCase().endsWith('Z')) {\n normalizedDateString = normalizedDateString + 'Z';\n }\n\n const date = new Date(normalizedDateString);\n\n // Localized, user-friendly date/time display\n return date.toLocaleString(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n};\n\nconst toUtcIsoAtLocalEndOfDay = (yyyyMmDd) => {\n if (!yyyyMmDd) return null;\n const [y, m, d] = String(yyyyMmDd)\n .split('-')\n .map((x) => Number(x));\n if (!y || !m || !d) return null;\n\n // local time end-of-day (23:59:59.000), then serialize as UTC ISO\n const local = new Date(y, m - 1, d, 23, 59, 59, 0);\n return local.toISOString();\n};\n\n// ============================================================================\n// URL filter field → ag-Grid filter configuration mapping\n// Used when converting URL search params into ag-Grid filter models\n// ============================================================================\nconst filterConfigByUrlField = {\n form_name: { agGridField: 'form_Name', filterType: 'text' },\n formsubmission_formid: {\n agGridField: 'formSubmission_FormId',\n filterType: 'text'\n },\n formsubmission_formversion: {\n agGridField: 'formSubmission_FormVersion',\n filterType: 'number'\n },\n form_description: { agGridField: 'form_Description', filterType: 'text' },\n formsubmission_userdisplayname: {\n agGridField: 'formSubmission_UserDisplayName',\n filterType: 'text'\n },\n formsubmission_status: {\n agGridField: 'formSubmission_Status',\n filterType: 'number'\n },\n formsubmission_initialcreatedon: {\n agGridField: 'formSubmission_InitialCreatedOn',\n filterType: 'date'\n },\n formsubmission_lastmodifiedon: {\n agGridField: 'formSubmission_LastModifiedOn',\n filterType: 'date'\n },\n formsubmission_submittedon: {\n agGridField: 'formSubmission_SubmittedOn',\n filterType: 'date'\n },\n formsubmission_duedate: {\n agGridField: 'formSubmission_DueDate',\n filterType: 'date'\n },\n formsubmission_isoverdue: {\n agGridField: 'formSubmission_IsOverdue',\n filterType: 'text'\n }\n};\n\n/**\n * Maps your internal filter object structure (from URL processing)\n * to the ag-Grid Filter Model structure.\n * * @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects\n * @returns {object} ag-Grid Filter Model\n */\n/**\n * Maps your internal filter object structure (from URL processing)\n * to the ag-Grid Filter Model structure.\n * @param {Array<{searchField: string, searchOperator: number, searchValue: string}>} filterObjects\n * @returns {object} ag-Grid Filter Model\n */\nconst mapUrlFiltersToAgGridModel = (filterObjects) => {\n if (!filterObjects || filterObjects.length === 0) {\n return null;\n }\n\n const agGridModel = {};\n\n filterObjects.forEach((filter) => {\n const { searchField, searchOperator, searchValue } = filter;\n\n const searchKey = searchField.toLocaleLowerCase();\n const config = filterConfigByUrlField[searchKey];\n\n if (!config) {\n console.warn(\n `No configuration found for URL filter field: ${searchField}. Filter ignored.`\n );\n return;\n }\n\n const agGridField = config.agGridField;\n const filterType = config.filterType;\n\n let type = 'equals';\n switch (searchOperator) {\n case SqlFilterOperators.EQUALS:\n type = 'equals';\n break;\n case SqlFilterOperators.NOT_EQUALS:\n type = 'notEqual';\n break;\n case SqlFilterOperators.GREATER_THAN:\n type = 'greaterThan';\n break;\n case SqlFilterOperators.LESS_THAN:\n type = 'lessThan';\n break;\n case SqlFilterOperators.LIKE:\n type = 'contains';\n break;\n default:\n type = 'equals';\n }\n\n let filterValue = searchValue;\n\n if (\n !filterValue ||\n filterValue.toLowerCase() === 'undefined' ||\n filterValue.toLowerCase() === 'null'\n ) {\n console.warn(\n `Skipping filter for ${agGridField} due to invalid value: ${searchValue}`\n );\n return;\n }\n\n if (filterType == 'date') {\n agGridModel[agGridField] = {\n filterType,\n type,\n dateFrom: filterValue\n };\n } else if (\n filterType == 'text' &&\n agGridField.toLocaleLowerCase() == 'formsubmission_isoverdue'\n ) {\n agGridModel[agGridField] = {\n filterType,\n type: filterValue\n };\n } else {\n agGridModel[agGridField] = {\n filterType,\n type,\n filter: filterValue\n };\n }\n });\n\n return agGridModel;\n};\n\n// ============================================================================\n// Helper for CustomMenuPage to parse form submission ID and version from node ID\n// ============================================================================\nconst parseIdAndVersion = (input) => {\n const formSubmissionId = input.replace(/^form-submission-/, '');\n // Check for \"all forms\" special case\n if (formSubmissionId.includes('all-forms-key')) {\n return null;\n }\n return formSubmissionId;\n};\n\n// ============================================================================\n// Maps a submission status enum value to a human-readable status label\n// Used in grid cell renderer\n// ============================================================================\nconst getSubmissionStatusLabel = (node) => {\n const formStatus = node?.data?.formSubmission_Status;\n switch (formStatus) {\n case UdpFormsSubmissionStatusEnum.InProgress:\n return 'InProgress';\n case UdpFormsSubmissionStatusEnum.Created:\n return 'Created';\n case UdpFormsSubmissionStatusEnum.Submitted:\n return 'Submitted';\n default:\n return '';\n }\n};\n\n// ============================================================================\n// Maps overdue flag to a display label\n// Used in grid cell renderer\n// ============================================================================\nconst getOverdueStatusLabel = (node) => {\n const overdueStatus = node?.data?.formSubmission_IsOverdue;\n switch (overdueStatus) {\n case true:\n return 'Overdue';\n default:\n return '';\n }\n};\n\n// ============================================================================\n// Filters form submissions by tenant ID\n// ============================================================================\nconst filterSubmissionByTenantId = (submissions, tenantId) => {\n return submissions.filter(\n (submission) => submission.form_TenantId === tenantId\n );\n};\n\n// ============================================================================\n// Map of status labels to status types\n// Used in grid configs\n// ============================================================================\nconst gridFunctions = [\n { name: 'agGridSizeColumnsToFit' },\n { name: 'agGridAutoSizeColumns' },\n { name: 'agGridResetColumns' },\n { name: 'agGridHideShowColumns' }\n];\n\n// ============================================================================\n// Map of status labels to status types\n// Used in grid configs\n// ============================================================================\nconst statusMappingConfig = {\n Created: 'info',\n InProgress: 'warning',\n Submitted: 'success',\n Overdue: 'error'\n};\n\n// ============================================================================\n// Map of status labels to status types\n// Grid options config\n// ============================================================================\nconst gridOptions = {\n pagination: true,\n defaultColDef: {\n sortable: true,\n filter: true,\n resizable: true\n }\n};\n\nexport const UdpFormsSubmissionGrid = ({\n isManagerMode = false,\n generic1 = undefined,\n generic2 = undefined,\n generic3 = undefined,\n formsRendererUrlPath = undefined,\n allFormTitle = undefined,\n menuTitle = undefined,\n onSideSheetPrimaryAction = undefined\n}) => {\n const user = useUser();\n const tenant = useTenant();\n const history = useHistory();\n const location = useLocation();\n const { t } = useTranslation();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n // Component states\n const [innerMenuItemList, setInnerMenuItemList] = useState([]);\n const [formSubmissionViewDataRaw, setFormSubmissionViewDataRaw] = useState([]);\n const [formDataRaw, setFormDataRaw] = useState([]);\n const [isSidesheetOpen, setIsSidesheetOpen] = useState(false);\n const [selectedUdpFormInSideSheet, setSelectedUdpFormInSideSheet] = useState({});\n const [formSubmissionUrlSearchObjs, setFormSubmissionUrlSearchObjs] = useState([]);\n const [gridApi, setGridApi] = useState(null);\n const handleGridApiCallback = useCallback((api) => { setGridApi(api) }, []);\n const [containsDueDate, setContainsDueDate] = useState(false);\n const [dueDateValue, setDueDateValue] = useState(null); \n\n const initialFilterModel = useMemo(() => {\n return mapUrlFiltersToAgGridModel(formSubmissionUrlSearchObjs);\n }, [formSubmissionUrlSearchObjs]);\n\n useEffect(() => {\n if (gridApi && initialFilterModel) {\n gridApi.setFilterModel(initialFilterModel);\n gridApi.onFilterChanged();\n }\n }, [gridApi, initialFilterModel]);\n\n const consolidateAndSortFormsByFormId = useCallback(\n (forms, submissions = []) => {\n const resultMap = new Map();\n for (const item of forms) {\n const {\n id: formId,\n version: formVersion,\n name: formName,\n description: formDescription,\n initialCreatedOn: initialCreatedOn\n } = item;\n if (!formId || formVersion == null) continue;\n\n const key = String(formId);\n const existing = resultMap.get(key);\n\n // normalize version and timestamp\n const versionNum = Number(formVersion) || 0;\n const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;\n\n // robust comparison (coerce to string)\n const submissionCount = (submissions || []).filter(\n (sub) => String(sub?.formSubmission_FormId) === key\n ).length;\n\n if (!existing) {\n resultMap.set(key, {\n id: key,\n formId,\n formVersion: versionNum,\n name: formName || t('Untitled Form'),\n submissionCount,\n description: formDescription || '',\n mostRecentCreatedOn: ts\n });\n } else {\n // keep metadata (name/description/formVersion) from the highest version seen\n if (versionNum > (existing.formVersion || 0)) {\n existing.formVersion = versionNum;\n if (formName) existing.name = formName;\n if (formDescription) existing.description = formDescription;\n }\n }\n }\n\n const sortedOptions = Array.from(resultMap.values()).sort((a, b) =>\n b.name.localeCompare(a.name)\n );\n return sortedOptions;\n },\n [t]\n );\n\n const consolidateAndSortFormSubmissionsByFormId = useCallback(\n (submissions) => {\n const resultMap = new Map();\n for (const item of submissions) {\n const {\n formSubmission_FormId: formId,\n formSubmission_FormVersion: formVersion,\n form_Name: formName,\n form_Description: formDescription,\n formSubmission_InitialCreatedOn: initialCreatedOn\n } = item;\n if (!formId || formVersion == null) continue;\n\n const key = `${formId}`;\n const existing = resultMap.get(key);\n\n // normalize version and timestamp\n const versionNum = Number(formVersion) || 0;\n const ts = initialCreatedOn ? new Date(initialCreatedOn).getTime() : 0;\n\n if (!existing) {\n resultMap.set(key, {\n id: key,\n formId,\n formVersion: versionNum,\n name: formName || t('Untitled Form'),\n submissionCount: 1,\n description: formDescription || '',\n mostRecentCreatedOn: ts\n });\n } else {\n existing.submissionCount += 1;\n existing.mostRecentCreatedOn = Math.max(\n existing.mostRecentCreatedOn || 0,\n ts\n );\n\n // keep metadata (name/description/formVersion) from the highest version seen\n if (versionNum > (existing.formVersion || 0)) {\n existing.formVersion = versionNum;\n if (formName) existing.name = formName;\n if (formDescription) existing.description = formDescription;\n }\n }\n }\n\n const sortedOptions = Array.from(resultMap.values()).sort(\n (a, b) => b.mostRecentCreatedOn - a.mostRecentCreatedOn\n );\n return sortedOptions;\n },\n [t]\n );\n\n const fetchSubmissions = useCallback(async () => {\n try {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n filterElements.push({\n searchField: 'Form_TenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'FormSubmission_UnityUserId',\n searchOperator: '=',\n searchValue: user.id\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormWithSubmissionsView/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const submissions = formSubmissionViewSearchResponse?.data.pageList || [];\n const processedSubmissions = filterSubmissionByTenantId(\n submissions,\n tenant.activeTenant.tenantId\n );\n setFormSubmissionViewDataRaw(processedSubmissions);\n } catch (e) {\n console.error('fetchSubmissions error:', e);\n }\n }, [\n user,\n tenant,\n isManagerMode,\n consolidateAndSortFormSubmissionsByFormId,\n t,\n generic1,\n generic2,\n generic3\n ]);\n\n const fetchForms = useCallback(async () => {\n try {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n filterElements.push({\n searchField: 'tenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n const formResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpForm/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n const forms = formResponse?.data.pageList || [];\n setFormDataRaw(forms);\n } catch (e) {\n console.error('fetchForms error:', e);\n }\n }, [user, tenant, consolidateAndSortFormSubmissionsByFormId]);\n\n const getSearchMethodConfig = useCallback(\n (formId) => {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const filterElements = [];\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'formSubmission_unityUserId',\n searchOperator: '=',\n searchValue: user.id || ''\n });\n }\n\n if (formId) {\n filterElements.push({\n searchField: 'formSubmission_formId',\n searchOperator: '=',\n searchValue: formId\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n filterElements.push({\n searchField: 'form_tenantId',\n searchOperator: '=',\n searchValue: tenant?.activeTenant?.tenantId || ''\n });\n\n return {\n requestUrl: `${ConfigService.productV1ApiUrl}/UdpFormWithSubmissionsView/search`,\n customSearchObject: {\n eagerLoad: false,\n filterElements,\n orderElements: [\n {\n sortColumn: 'initialCreatedOn',\n sortDirection: 'DESC'\n }\n ]\n }\n // logicalSearchOperator: 1,\n // groupingType: '',\n // groupProperty: [],\n // groupOperationList: [],\n // type: 'advanced',\n // pageNumber: 1,\n // pageSize: 20,\n };\n },\n [user, isManagerMode, tenant, generic1, generic2, generic3]\n );\n\n const generateFormRendererUrlPathUsingFormIdAndFormVersion = useCallback(\n (formId, formVersion) => {\n const baseRoute = formsRendererUrlPath\n ? formsRendererUrlPath\n : 'page/' + UdpPageEnums.Udp_Form_Renderer_Page;\n\n return `${baseRoute}?udpf_formId=${encodeURIComponent(\n formId\n )}&udpf_version=${encodeURIComponent(formVersion)}`;\n },\n [formsRendererUrlPath]\n );\n\n const generateFormRendererUrlPathUsingSubmissionId = useCallback(\n (submissionId) => {\n const baseRoute = formsRendererUrlPath\n ? formsRendererUrlPath\n : 'page/' + UdpPageEnums.Udp_Form_Renderer_Page;\n\n return `${baseRoute}?udpf_submissionId=${encodeURIComponent(\n submissionId\n )}`;\n },\n [formsRendererUrlPath]\n );\n\n const getGridHeaderConfig = useCallback(\n (formId, formVersion, formTitle) => {\n const config = {\n title: formTitle\n };\n\n if (!isManagerMode) {\n config.primaryActionButton = {\n label: t('Submit New Form'),\n onClick: () => {\n if (formId && formVersion) {\n setSelectedUdpFormInSideSheet({ value: `${formId}|${formVersion}`, label: formTitle });\n } \n setIsSidesheetOpen(true);\n }\n };\n }\n\n return config;\n },\n [history, t, isManagerMode]\n );\n\n const columnDefs = useMemo(\n () => [\n { headerName: 'Form ID', field: 'formSubmission_FormId', hide: true },\n {\n headerName: t('Name'),\n field: 'form_Name',\n type: 'text',\n sortable: true\n },\n {\n headerName: t('Version'),\n field: 'formSubmission_FormVersion',\n type: 'number',\n sortable: true\n },\n {\n headerName: t('Description'),\n field: 'form_Description',\n type: 'text',\n sortable: true,\n hide: true\n },\n {\n headerName: t('Submitted By'),\n field: 'formSubmission_UserDisplayName',\n type: 'text',\n sortable: true\n },\n {\n headerName: t('Status'),\n filter: true,\n field: 'formSubmission_Status',\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: statusMappingConfig,\n getStatusValue: getSubmissionStatusLabel\n }\n },\n {\n headerName: t('Overdue Status'),\n field: 'formSubmission_IsOverdue',\n cellDataType: 'boolean',\n sortable: true,\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: statusMappingConfig,\n getStatusValue: getOverdueStatusLabel\n }\n },\n {\n headerName: t('Created On'),\n field: 'formSubmission_InitialCreatedOn',\n valueFormatter: (p) => (p.value ? formatDateTime(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Last Modified On'),\n field: 'formSubmission_LastModifiedOn',\n valueFormatter: (p) => (p.value ? formatDateTime(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Submitted On'),\n field: 'formSubmission_SubmittedOn',\n valueFormatter: (p) => (p.value ? formatDateTime(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n headerName: t('Due On'),\n field: 'formSubmission_DueDate',\n valueFormatter: (p) => (p.value ? formatDateTime(p.value) : ''),\n sortable: true,\n cellDataType: 'dateTimeString'\n },\n {\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n iconName: 'view',\n title: t('Open This Submission'),\n handleOnClick: (e, params) => {\n history.push(\n `${\n formsRendererUrlPath\n ? formsRendererUrlPath\n : '/page/' + UdpPageEnums.Udp_Form_Renderer_Page\n }?udpf_submissionId=${params?.data?.formSubmission_Id}`\n );\n }\n }\n ]\n }\n }\n ],\n [history, t, formsRendererUrlPath]\n );\n\n // ============================================================================\n // Side Sheet Helpers and Handlers\n // ============================================================================\n const handleSidesheetPrimaryClick = async () => {\n try {\n // selectedUdpFormInSideSheet format is { value: \"formId|formVersion\", label: \"...\" }\n const raw = selectedUdpFormInSideSheet?.value || '';\n const [id, versionStr] = raw.split('|');\n const version = Number(versionStr || 0);\n if (!id || !version) {\n console.warn('Invalid selection:', selectedUdpFormInSideSheet);\n setIsSidesheetOpen(false);\n return;\n }\n\n const fd = new FormData();\n fd.append('FormId', id);\n fd.append('FormVersion', String(version));\n fd.append('Status', String(UdpFormsSubmissionStatusEnum.Created));\n fd.append('Data', JSON.stringify({}));\n if (dueDateValue) {\n fd.append('DueDate', toUtcIsoAtLocalEndOfDay(dueDateValue));\n }\n if (generic1 !== undefined) {\n fd.append('Generic1', String(generic1));\n }\n if (generic2 !== undefined) {\n fd.append('Generic2', String(generic2));\n }\n if (generic3 !== undefined) {\n fd.append('Generic3', String(generic3));\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormSubmission`,\n {\n method: 'POST',\n data: fd\n },\n {}\n );\n\n const newSubmissionId = formSubmissionViewSearchResponse?.data?.id;\n setIsSidesheetOpen(false);\n const urlPath = generateFormRendererUrlPathUsingSubmissionId(newSubmissionId);\n history.push(urlPath);\n } catch (e) {\n console.error('handleSidesheetPrimaryClick error:', e);\n enqueueSnackbar(t('Error creating a new form.'), { variant: 'error' , anchorOrigin: { vertical: 'top', horizontal: 'center' }});\n }\n };\n\n const handleSideSheetDueDateToggleChange = useCallback((checked) => {\n setContainsDueDate(checked);\n if (!checked) setDueDateValue(null); // hide + clear datapoint\n }, []);\n\n const handleDueDateChange = useCallback((e) => {\n const next = e?.target?.value;\n setDueDateValue(next);\n }, []);\n\n const handleSideSheetClosed = () => {\n setSelectedUdpFormInSideSheet({});\n setIsSidesheetOpen(false);\n setContainsDueDate(false);\n setDueDateValue(null);\n };\n\n const selectableItems = useMemo(() => {\n const map = new Map();\n\n for (const f of formDataRaw || []) {\n const formType = f.form_Type ?? f.formType ?? f.type;\n if (Number(formType) !== 1) continue;\n\n const formId = f.id ?? f.form_Id ?? f.formId ?? String(f?.Id ?? '');\n const version = Number(f.version ?? f.form_Version ?? f.formVersion ?? 0);\n const name =\n f.name ??\n f.form_Name ??\n f.formName ??\n f.Form_Name ??\n f.displayName ??\n t('Untitled Form');\n const description = f.description ?? f.form_Description ?? '';\n\n const existing = map.get(formId);\n if (!existing || version > existing.version) {\n map.set(formId, { id: formId, name, version, description });\n }\n }\n\n return Array.from(map.values()).sort((a, b) => b.version - a.version);\n }, [formDataRaw, t]);\n\n const selectorOptions = useMemo(() => {\n return (selectableItems || []).map((s) => ({\n value: `${s.id}|${s.version}`,\n label: s.version ? `${s.name} (v${s.version})` : s.name\n }));\n }, [selectableItems]);\n\n const handleSelectedUdpFormInSideSheetChange = (event, newValue) => {\n if (newValue !== null) {\n setSelectedUdpFormInSideSheet(newValue);\n }\n };\n\n const getMainGridContent = ({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n }) => {\n if (!selectedNode) {\n return <PageLoading />;\n }\n const formId = parseIdAndVersion(selectedNode.id);\n const found = innerMenuItemList.find((form) => form.formId == formId);\n const formTitle = `${found?.name}` || 'Unknown Form';\n const newestFormVersion = formDataRaw\n .filter((formObj) => formObj.id == formId)\n .reduce((acc, curr) => {\n return Math.max(acc, curr.version);\n }, null);\n\n return (\n <>\n <SideSheet\n open={isSidesheetOpen}\n title={t('Submit New Form')}\n position='right'\n width={'30%'}\n buttonLabel={t('New')}\n // Disable primary action when there is no selected form OR when\n // the user requested a due date but didn't pick one.\n buttonOneDisabled={!selectedUdpFormInSideSheet?.value || (containsDueDate && !dueDateValue)}\n onSubmit={handleSidesheetPrimaryClick}\n onClose={handleSideSheetClosed}\n >\n <FormControlLabel\n control={\n <Switch\n size='small'\n onChange={(e) => handleSideSheetDueDateToggleChange(Boolean(e?.target?.checked))}\n />\n }\n label='Set a Due Date'\n style={{ marginLeft: 0 }}\n />\n {containsDueDate ? (\n <TextField\n label={t('Due Date')}\n type='date'\n variant='outlined'\n size='small'\n InputLabelProps={{ shrink: true }}\n value={dueDateValue}\n onChange={handleDueDateChange}\n helperText={t('Set a due date at the end-of-day based on your local time.')}\n />\n ) : null}\n \n {/* // Only show form selector when the user is not in a specific form context */}\n {!(found?.id && newestFormVersion) && (\n <Autocomplete\n options={selectorOptions}\n getOptionLabel={(selectedOption) => selectedOption.label}\n onChange={handleSelectedUdpFormInSideSheetChange}\n // Autocomplete expects the selected option object as value\n value={selectedUdpFormInSideSheet}\n disableClearable={true}\n size='small'\n renderInput={(params) => (\n <TextField\n {...params}\n label={t('Choose a Form')}\n variant='outlined'\n />\n )}\n />\n )}\n \n </SideSheet>\n\n <SearchMethodUdpGrid\n searchMethodConfig={getSearchMethodConfig(formId)}\n columnDefs={columnDefs}\n gridOptions={gridOptions}\n gridHeaderConfig={getGridHeaderConfig(\n formId,\n newestFormVersion,\n formTitle\n )}\n gridFunctions={gridFunctions}\n gridApiCallback={handleGridApiCallback} // Pass the setter/ref handler\n />\n </>\n );\n };\n\n useEffect(() => {\n if (!tenant?.activeTenant?.tenantId) return;\n\n const urlSearchObjs = parseSearchParamsIntoFilterObjects();\n setFormSubmissionUrlSearchObjs(urlSearchObjs); // THIS LINE TRIGGERS initialFilterModel\n\n let cancelled = false;\n (async () => {\n try {\n // replicate fetchSubmissions logic but using local urlSearchObjs (avoids depending on the state)\n let filterElements = [];\n\n filterElements.push({\n searchField: 'Form_TenantId',\n searchOperator: '=',\n searchValue: tenant.activeTenant.tenantId\n });\n\n if (!isManagerMode) {\n filterElements.push({\n searchField: 'FormSubmission_UnityUserId',\n searchOperator: '=',\n searchValue: user.id\n });\n }\n\n if (generic1 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic1',\n searchOperator: '=',\n searchValue: generic1\n });\n }\n\n if (generic2 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic2',\n searchOperator: '=',\n searchValue: generic2\n });\n }\n\n if (generic3 !== undefined) {\n filterElements.push({\n searchField: 'formSubmission_generic3',\n searchOperator: '=',\n searchValue: generic3\n });\n }\n\n const formSubmissionViewSearchResponse = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpFormWithSubmissionsView/search`,\n {\n method: 'POST',\n data: {\n eagerLoad: false,\n getAll: true,\n filterElements\n }\n },\n {}\n );\n\n if (cancelled) return;\n\n const submissions = formSubmissionViewSearchResponse?.data.pageList || [];\n const processedSubmissions = submissions.filter((submission) =>\n submission.form_TenantId === tenant.activeTenant.tenantId\n );\n setFormSubmissionViewDataRaw(processedSubmissions);\n await fetchForms();\n } catch (err) {\n console.error('fetching submissions/forms failed', err);\n }\n })();\n\n return () => {\n cancelled = true;\n };\n }, [\n location.search,\n tenant?.activeTenant?.tenantId,\n generic1,\n generic2,\n generic3,\n isManagerMode,\n user?.id,\n fetchForms\n ]);\n\n // derive menu items from fetched submissions (separate effect to avoid refetch loop)\n useEffect(() => {\n const innerMenuList = consolidateAndSortFormsByFormId(\n formDataRaw || [],\n formSubmissionViewDataRaw || []\n );\n\n innerMenuList.unshift({\n id: 'all-forms-key',\n name:\n allFormTitle ??\n t(\n isManagerMode\n ? t('All Form Submissions')\n : t('All My Form Submissions')\n ),\n submissionCount: formSubmissionViewDataRaw?.length || 0\n });\n setInnerMenuItemList(innerMenuList);\n }, [\n formSubmissionViewDataRaw,\n isManagerMode,\n consolidateAndSortFormsByFormId,\n formDataRaw,\n t,\n allFormTitle\n ]);\n\n return (\n <div>\n <CustomMenuPage\n menuTitle={menuTitle ?? t('Forms')}\n items={innerMenuItemList}\n idPrefix='form-submission'\n showItemCount={true}\n itemCountAccessor={(item) => item?.submissionCount ?? 0}\n mainContent={({ selectedNode, menuItemsList, idMap, classes }) => {\n return (\n <div>\n {getMainGridContent({\n selectedNode,\n menuItemsList,\n idMap,\n classes\n })}\n </div>\n );\n }}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -649,7 +649,7 @@ var AttachmentTransaction_default = AttachmentTransaction;
|
|
|
649
649
|
//#endregion
|
|
650
650
|
//#region src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.jsx
|
|
651
651
|
const UdpTransactionCustomPage = (props) => {
|
|
652
|
-
const { pageId, transactionTypeId, transactionUiActionType, formRef, refetchTransaction, transaction, transactionTypeTransactionActionId, setHasUnsavedChanges, onSubmitSuccess, refreshGridData } = props;
|
|
652
|
+
const { pageId, transactionTypeId, transactionUiActionType, formRef, refetchTransaction, transaction, transactionTypeTransactionActionId, setHasUnsavedChanges, onSubmitSuccess, refreshGridData, additionalPageParms = {} } = props;
|
|
653
653
|
const { getUiActionRenderPageId, getHiddenFields, getRequiredFields } = useTransactionEngine(transactionTypeId);
|
|
654
654
|
const { handleErrorSnackbar, handleSuccessSnackbar } = useHandleAxiosSnackbar();
|
|
655
655
|
const { t } = useTranslation();
|
|
@@ -735,7 +735,8 @@ const UdpTransactionCustomPage = (props) => {
|
|
|
735
735
|
transaction,
|
|
736
736
|
isFieldRequired,
|
|
737
737
|
isFieldHidden,
|
|
738
|
-
refreshTransactionGrid: refreshGridData
|
|
738
|
+
refreshTransactionGrid: refreshGridData,
|
|
739
|
+
...additionalPageParms
|
|
739
740
|
}
|
|
740
741
|
}));
|
|
741
742
|
};
|
|
@@ -760,6 +761,7 @@ const WorkflowActions = ({ transaction, closeSideSheet, refreshGridData }) => {
|
|
|
760
761
|
const [selectedAction, setSelectedAction] = useState(null);
|
|
761
762
|
const [sideSheetOpen, setSideSheetOpen] = useState(false);
|
|
762
763
|
const [loading, setLoading] = useState(false);
|
|
764
|
+
const [sidesheetPrimaryButtonDisabled, setSidesheetPrimaryButtonDisabled] = useState(false);
|
|
763
765
|
const formRef = useRef(null);
|
|
764
766
|
const { getTransactionTypeTransactionActions } = useTransactionEngine(transaction.transactionTypeId);
|
|
765
767
|
const handleOnCloseSideSheet = useCallback(() => {
|
|
@@ -869,14 +871,15 @@ const WorkflowActions = ({ transaction, closeSideSheet, refreshGridData }) => {
|
|
|
869
871
|
progress: loading,
|
|
870
872
|
variant: "indeterminate",
|
|
871
873
|
color: "primary",
|
|
872
|
-
buttonOneDisabled: loading
|
|
874
|
+
buttonOneDisabled: loading || sidesheetPrimaryButtonDisabled
|
|
873
875
|
}, selectedAction && selectedAction.parameters?.pageId && /* @__PURE__ */ React.createElement(UdpTransactionCustomPage_default, {
|
|
874
876
|
pageId: selectedAction.parameters.pageId,
|
|
875
877
|
transaction,
|
|
876
878
|
formRef,
|
|
877
879
|
transactionTypeTransactionActionId: selectedAction.transactionTypeTransactionActionId,
|
|
878
880
|
onSubmitSuccess: handleSubmitSuccessfulWorkflowAction,
|
|
879
|
-
refreshGridData
|
|
881
|
+
refreshGridData,
|
|
882
|
+
additionalPageParms: { sidesheetParams: { setSidesheetPrimaryButtonDisabled } }
|
|
880
883
|
})));
|
|
881
884
|
};
|
|
882
885
|
var WorkflowActions_default = WorkflowActions;
|
|
@@ -1536,7 +1539,7 @@ var DynamicTransactionDomainForm_default = DynamicTransactionDomainForm;
|
|
|
1536
1539
|
//#endregion
|
|
1537
1540
|
//#region src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.jsx
|
|
1538
1541
|
const EditTransaction = (props) => {
|
|
1539
|
-
const { transaction: initialTransaction, transactionTypeId, transactionIsClosed, openInnerSidesheetState, setOpenInnerSidesheetState, refreshGridData, closeSideSheet, setSidesheetLoading, setHasUnsavedChanges, domainName, attachmentType, setAttachmentType, currentAttachments, setCurrentAttachments, attachmentProgress, setAttachmentProgress, transactionAttachmentTypes, transactionAttachments, setTransactionAttachments, filePreview, setFilePreview } = props;
|
|
1542
|
+
const { transaction: initialTransaction, transactionTypeId, transactionIsClosed, openInnerSidesheetState, setOpenInnerSidesheetState, refreshGridData, closeSideSheet, setSidesheetLoading, setHasUnsavedChanges, domainName, attachmentType, setAttachmentType, currentAttachments, setCurrentAttachments, attachmentProgress, setAttachmentProgress, transactionAttachmentTypes, transactionAttachments, setTransactionAttachments, filePreview, setFilePreview, additionalPageParms } = props;
|
|
1540
1543
|
const { t } = useTranslation();
|
|
1541
1544
|
const [selectedTab, setSelectedTab] = useState(0);
|
|
1542
1545
|
const [transaction, setTransaction] = useState(initialTransaction);
|
|
@@ -1808,7 +1811,8 @@ const EditTransaction = (props) => {
|
|
|
1808
1811
|
transaction,
|
|
1809
1812
|
refetchTransaction,
|
|
1810
1813
|
setHasUnsavedChanges,
|
|
1811
|
-
refreshGridData
|
|
1814
|
+
refreshGridData,
|
|
1815
|
+
additionalPageParms
|
|
1812
1816
|
}) : /* @__PURE__ */ React.createElement(DynamicTransactionDomainForm_default, {
|
|
1813
1817
|
transaction,
|
|
1814
1818
|
formRef,
|
|
@@ -1881,6 +1885,8 @@ const UdpTransactionSidesheet = (props) => {
|
|
|
1881
1885
|
const [attachmentProgress, setAttachmentProgress] = useState(false);
|
|
1882
1886
|
const [transactionAttachments, setTransactionAttachments] = useState([]);
|
|
1883
1887
|
const [filePreview, setFilePreview] = useState(false);
|
|
1888
|
+
const [sidesheetPrimaryButtonDisabled, setSidesheetPrimaryButtonDisabled] = useState(false);
|
|
1889
|
+
const [sidesheetSecondaryButtonDisabled, setSidesheetSecondaryButtonDisabled] = useState(false);
|
|
1884
1890
|
const { handleSuccessSnackbar, handleErrorSnackbar } = useHandleAxiosSnackbar();
|
|
1885
1891
|
const { hasClosedStatus, checkIfTransactionIsClosed, getTransactionTypeLabel, getUiActionRenderPageId } = useTransactionEngine(transactionTypeId);
|
|
1886
1892
|
const { t } = useTranslation();
|
|
@@ -2073,7 +2079,11 @@ const UdpTransactionSidesheet = (props) => {
|
|
|
2073
2079
|
transactionUiActionType: TransactionUiActionTypeEnums.Render_Create_Transaction_Page,
|
|
2074
2080
|
formRef,
|
|
2075
2081
|
onSubmitSuccess: handleTransactionCreationSuccess,
|
|
2076
|
-
refreshGridData
|
|
2082
|
+
refreshGridData,
|
|
2083
|
+
additionalPageParms: { sidesheetParams: {
|
|
2084
|
+
setSidesheetPrimaryButtonDisabled,
|
|
2085
|
+
setSidesheetSecondaryButtonDisabled
|
|
2086
|
+
} }
|
|
2077
2087
|
}) : /* @__PURE__ */ React.createElement(DynamicTransactionDomainForm_default, {
|
|
2078
2088
|
transaction,
|
|
2079
2089
|
formRef,
|
|
@@ -2193,7 +2203,11 @@ const UdpTransactionSidesheet = (props) => {
|
|
|
2193
2203
|
setTransactionAttachments,
|
|
2194
2204
|
filePreview,
|
|
2195
2205
|
setFilePreview,
|
|
2196
|
-
domainName
|
|
2206
|
+
domainName,
|
|
2207
|
+
additionalPageParms: { sidesheetParams: {
|
|
2208
|
+
setSidesheetPrimaryButtonDisabled,
|
|
2209
|
+
setSidesheetSecondaryButtonDisabled
|
|
2210
|
+
} }
|
|
2197
2211
|
})
|
|
2198
2212
|
},
|
|
2199
2213
|
{
|
|
@@ -2208,7 +2222,11 @@ const UdpTransactionSidesheet = (props) => {
|
|
|
2208
2222
|
formRef,
|
|
2209
2223
|
transaction,
|
|
2210
2224
|
onSubmitSuccess: handleTransactionRevisionCreationSuccess,
|
|
2211
|
-
refreshGridData
|
|
2225
|
+
refreshGridData,
|
|
2226
|
+
additionalPageParms: { sidesheetParams: {
|
|
2227
|
+
setSidesheetPrimaryButtonDisabled,
|
|
2228
|
+
setSidesheetSecondaryButtonDisabled
|
|
2229
|
+
} }
|
|
2212
2230
|
}),
|
|
2213
2231
|
buttonLabel: "Create Revision"
|
|
2214
2232
|
}
|
|
@@ -2277,8 +2295,8 @@ const UdpTransactionSidesheet = (props) => {
|
|
|
2277
2295
|
color: "primary",
|
|
2278
2296
|
buttonTwoLabel: item?.buttonTwoLabel,
|
|
2279
2297
|
buttonTwoAction: item?.buttonTwoAction,
|
|
2280
|
-
buttonOneDisabled: item?.buttonOneDisabled,
|
|
2281
|
-
buttonTwoDisabled: item?.buttonTwoDisabled,
|
|
2298
|
+
buttonOneDisabled: item?.buttonOneDisabled || sidesheetPrimaryButtonDisabled,
|
|
2299
|
+
buttonTwoDisabled: item?.buttonTwoDisabled || sidesheetSecondaryButtonDisabled,
|
|
2282
2300
|
progress: sidesheetLoading,
|
|
2283
2301
|
variant: "indeterminate"
|
|
2284
2302
|
}, /* @__PURE__ */ React.createElement("div", null, item.children));
|
|
@@ -2539,4 +2557,4 @@ var UdpTransactionsPage_exports = /* @__PURE__ */ __exportAll({ default: () => U
|
|
|
2539
2557
|
|
|
2540
2558
|
//#endregion
|
|
2541
2559
|
export { UdpTransactionsPage_default as n, UdpTransactionsPage_exports as t };
|
|
2542
|
-
//# sourceMappingURL=UdpTransactionsPage-
|
|
2560
|
+
//# sourceMappingURL=UdpTransactionsPage-B-0Z5NDA.js.map
|