@asaleh37/ui-base 26.2.16 → 27.5.26

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.
Files changed (176) hide show
  1. package/.env.development +1 -1
  2. package/.github/workflows/publish-npm.yml +49 -49
  3. package/README.md +51 -51
  4. package/__ODockerfile +14 -14
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +1 -1
  8. package/dist/index.mjs.map +1 -1
  9. package/eslint.config.js +29 -29
  10. package/index.html +20 -20
  11. package/package.json +122 -122
  12. package/public/manifest.json +21 -21
  13. package/rollup.config-1748377725725.cjs +50 -50
  14. package/rollup.config.js +45 -45
  15. package/src/components/App.tsx +155 -155
  16. package/src/components/BaseApp.tsx +75 -75
  17. package/src/components/ExampleTrial.tsx +24 -24
  18. package/src/components/administration/admin/ChangePasswordPanel.tsx +128 -128
  19. package/src/components/administration/admin/CustomPersonGrid.tsx +361 -361
  20. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  21. package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -347
  22. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  23. package/src/components/administration/admin/OrganizationGrid.tsx +118 -118
  24. package/src/components/administration/admin/OrganizationMemberGrid.tsx +190 -190
  25. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  26. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  27. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  28. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  29. package/src/components/administration/admin/PersonGrid.tsx +27 -27
  30. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  31. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +117 -117
  32. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  33. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  34. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +75 -75
  35. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  36. package/src/components/administration/dev/AttachmentConfigGrid.tsx +224 -224
  37. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  38. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  39. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  40. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  41. package/src/components/administration/dev/DataQueryGrid.tsx +216 -216
  42. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  43. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  44. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +151 -151
  45. package/src/components/administration/dev/EntityParameterGrid.tsx +322 -322
  46. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  47. package/src/components/administration/dev/MailAttachmentGrid.tsx +172 -172
  48. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  49. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  50. package/src/components/administration/dev/MailRecipientGrid.tsx +170 -170
  51. package/src/components/administration/dev/MailSenderConfigGrid.tsx +486 -486
  52. package/src/components/administration/dev/MailTemplateGrid.tsx +385 -385
  53. package/src/components/administration/dev/NotificationGrid.tsx +435 -435
  54. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  55. package/src/components/administration/dev/ReportGrid.tsx +503 -503
  56. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  57. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  58. package/src/components/administration/dev/WidgetGrid.tsx +380 -380
  59. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  60. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  61. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  62. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +357 -357
  63. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  64. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  65. package/src/components/common/AzureLogin.tsx +222 -222
  66. package/src/components/common/ChangeOrgForm.tsx +85 -85
  67. package/src/components/common/Home.tsx +43 -43
  68. package/src/components/common/LanguageSwitcher.tsx +25 -25
  69. package/src/components/common/LayoutHandlers.tsx +11 -11
  70. package/src/components/common/LoadingMask.tsx +24 -24
  71. package/src/components/common/Login.tsx +268 -268
  72. package/src/components/common/MobileLogin.tsx +229 -229
  73. package/src/components/common/MyNotificationsPanel.tsx +109 -109
  74. package/src/components/common/NoLicenseComponent.tsx +79 -79
  75. package/src/components/common/NotificationItem.tsx +138 -138
  76. package/src/components/index.ts +10 -10
  77. package/src/components/msalConfig.ts +11 -11
  78. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +361 -361
  79. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +297 -297
  80. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  81. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +238 -238
  82. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +108 -108
  83. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +66 -66
  84. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +164 -164
  85. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +70 -70
  86. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +71 -71
  87. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  88. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +56 -56
  89. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +20 -20
  90. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +431 -431
  91. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +197 -197
  92. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +1044 -1044
  93. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  94. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  95. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +251 -251
  96. package/src/components/templates/TransferList.tsx +256 -256
  97. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  98. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  99. package/src/components/templates/attachment/AttachmentImageViewer.tsx +85 -85
  100. package/src/components/templates/attachment/AttachmentPanel.tsx +285 -285
  101. package/src/components/templates/index.ts +35 -35
  102. package/src/components/templates/report/ExcelReportViewer.tsx +71 -71
  103. package/src/components/templates/report/ReportViewer.tsx +261 -261
  104. package/src/components/templates/report/ReportViewerRoute.tsx +9 -9
  105. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  106. package/src/components/templates/visuals/DashboardViewer.tsx +192 -192
  107. package/src/components/templates/visuals/WidgetViewer.tsx +208 -208
  108. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  109. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  110. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  111. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  112. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  113. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  114. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +611 -611
  115. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +145 -145
  116. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  117. package/src/examples/ExampleGrid.tsx +134 -134
  118. package/src/hooks/UseConfirmationWindow.tsx +56 -56
  119. package/src/hooks/UseMobile.tsx +13 -13
  120. package/src/hooks/UseSession.tsx +59 -59
  121. package/src/hooks/UseWindow.tsx +111 -111
  122. package/src/hooks/index.ts +22 -22
  123. package/src/hooks/useApiActions.ts +124 -124
  124. package/src/hooks/useAxios.tsx +340 -340
  125. package/src/hooks/useCommonStore.tsx +29 -29
  126. package/src/hooks/useInterval.tsx +23 -23
  127. package/src/hooks/useLoadingMask.tsx +16 -16
  128. package/src/hooks/useLookupGridColumn.tsx +35 -35
  129. package/src/hooks/useParameterPanel.tsx +171 -171
  130. package/src/index.ts +4 -4
  131. package/src/layout/DrawerHeader.tsx +10 -10
  132. package/src/layout/Layout.tsx +102 -102
  133. package/src/layout/MainContent.tsx +115 -115
  134. package/src/layout/MobileDrawer.tsx +103 -103
  135. package/src/layout/NavigationTree.tsx +360 -360
  136. package/src/layout/NotificationButton.tsx +207 -207
  137. package/src/layout/RouteWrapper.tsx +63 -63
  138. package/src/layout/SideBar.tsx +85 -85
  139. package/src/layout/TopBar.tsx +317 -317
  140. package/src/locales/arabic/adminLocalsAr.json +94 -94
  141. package/src/locales/arabic/common.json +44 -44
  142. package/src/locales/arabic/devLocalsAr.json +317 -317
  143. package/src/locales/arabic/index.ts +9 -9
  144. package/src/locales/english/adminLocalsEn.json +97 -97
  145. package/src/locales/english/common.json +43 -43
  146. package/src/locales/english/devLocalsEn.json +318 -318
  147. package/src/locales/english/index.ts +9 -9
  148. package/src/locales/i18n.ts +8 -8
  149. package/src/locales/index.ts +9 -9
  150. package/src/main.tsx +41 -41
  151. package/src/navigationItems/Administration/adminNavigationItems.tsx +231 -231
  152. package/src/navigationItems/Administration/index.tsx +16 -16
  153. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  154. package/src/navigationItems/common/index.tsx +7 -7
  155. package/src/navigationItems/index.tsx +35 -35
  156. package/src/redux/features/administration/AdministrationStoresMetaData.ts +164 -164
  157. package/src/redux/features/common/AppInfoSlice.ts +95 -95
  158. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  159. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  160. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  161. package/src/redux/features/common/SideBarSlice.ts +27 -27
  162. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  163. package/src/redux/store.ts +29 -29
  164. package/src/routes/administration/adminRoutes.tsx +99 -99
  165. package/src/routes/administration/devRoutes.tsx +129 -129
  166. package/src/routes/administration/index.ts +10 -10
  167. package/src/routes/index.ts +5 -5
  168. package/src/routes/types/index.ts +6 -6
  169. package/src/styles/index.css +19 -19
  170. package/src/types/index.ts +8 -8
  171. package/src/util/AppUtils.ts +73 -73
  172. package/src/util/constants.ts +6 -6
  173. package/src/util/index.ts +5 -5
  174. package/tsconfig.json +135 -135
  175. package/vite.config.ts +24 -24
  176. package/package-lock.json/342/200/216 +0 -9040
@@ -1,60 +1,60 @@
1
- import { Button } from "@mui/material";
2
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3
- import { RecordAction } from "../DataEntryTypes";
4
- import useSession from "../../../../hooks/UseSession";
5
- import { useConfirmationWindow } from "../../../../hooks/UseConfirmationWindow";
6
-
7
- const FormAction: React.FC<RecordAction> = (action: RecordAction) => {
8
- const session = useSession();
9
- const { ConfirmationWindow, setOpen: setConfirmationWindowState } =
10
- useConfirmationWindow({
11
- body: action?.confirmationMessage || "",
12
- title: "Confirmation",
13
- onConfirmationCallBk: () => {
14
- action?.actionFn(action?.record);
15
- },
16
- });
17
- if (
18
- action?.authority === undefined ||
19
- action?.authority === null ||
20
- session.isUserAuthorized(action.authority)
21
- ) {
22
- return (
23
- <>
24
- <ConfirmationWindow />
25
- <Button
26
- variant={action?.formActionProps?.actionButtonVariant}
27
- color={action?.formActionProps?.actionButtonColor}
28
- onClick={() => {
29
- if (action?.actionFn) {
30
- if (action?.preActionValidation) {
31
- if (!action.preActionValidation(action.record)) {
32
- return;
33
- }
34
- }
35
- if (action?.isConfirmationRequired === true) {
36
- setConfirmationWindowState(true);
37
- } else {
38
- action?.actionFn(action.record);
39
- }
40
- }
41
- }}
42
- >
43
- {action?.icon ? (
44
- <FontAwesomeIcon
45
- icon={action.icon}
46
- style={{ marginRight: 5, marginLeft: 5 }}
47
- />
48
- ) : (
49
- <></>
50
- )}
51
- <div>{action?.label}</div>
52
- </Button>
53
- </>
54
- );
55
- } else {
56
- return <></>;
57
- }
58
- };
59
-
60
- export default FormAction;
1
+ import { Button } from "@mui/material";
2
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3
+ import { RecordAction } from "../DataEntryTypes";
4
+ import useSession from "../../../../hooks/UseSession";
5
+ import { useConfirmationWindow } from "../../../../hooks/UseConfirmationWindow";
6
+
7
+ const FormAction: React.FC<RecordAction> = (action: RecordAction) => {
8
+ const session = useSession();
9
+ const { ConfirmationWindow, setOpen: setConfirmationWindowState } =
10
+ useConfirmationWindow({
11
+ body: action?.confirmationMessage || "",
12
+ title: "Confirmation",
13
+ onConfirmationCallBk: () => {
14
+ action?.actionFn(action?.record);
15
+ },
16
+ });
17
+ if (
18
+ action?.authority === undefined ||
19
+ action?.authority === null ||
20
+ session.isUserAuthorized(action.authority)
21
+ ) {
22
+ return (
23
+ <>
24
+ <ConfirmationWindow />
25
+ <Button
26
+ variant={action?.formActionProps?.actionButtonVariant}
27
+ color={action?.formActionProps?.actionButtonColor}
28
+ onClick={() => {
29
+ if (action?.actionFn) {
30
+ if (action?.preActionValidation) {
31
+ if (!action.preActionValidation(action.record)) {
32
+ return;
33
+ }
34
+ }
35
+ if (action?.isConfirmationRequired === true) {
36
+ setConfirmationWindowState(true);
37
+ } else {
38
+ action?.actionFn(action.record);
39
+ }
40
+ }
41
+ }}
42
+ >
43
+ {action?.icon ? (
44
+ <FontAwesomeIcon
45
+ icon={action.icon}
46
+ style={{ marginRight: 5, marginLeft: 5 }}
47
+ />
48
+ ) : (
49
+ <></>
50
+ )}
51
+ <div>{action?.label}</div>
52
+ </Button>
53
+ </>
54
+ );
55
+ } else {
56
+ return <></>;
57
+ }
58
+ };
59
+
60
+ export default FormAction;
@@ -1,238 +1,238 @@
1
- import { Grid2 } from "@mui/material";
2
- import TemplateTextField from "./FormFields/TemplateTextField";
3
- import Datefield from "./FormFields/Datefield";
4
- import DatetimeField from "./FormFields/DatetimeField";
5
- import ComboBox from "./FormFields/ComboBox";
6
- import CheckBox from "./FormFields/CheckBox";
7
- import { DATE_FORMAT, DATE_TIME_FORMAT } from "../../../../util/constants";
8
- import { isNumeric } from "../../../../util/AppUtils";
9
- import { FormElementFieldProps } from "../DataEntryTypes";
10
- import SystemLookupCombobox from "./FormFields/SystemLookupCombobox";
11
-
12
- const FormElementField: React.FC<FormElementFieldProps> = (
13
- element: FormElementFieldProps
14
- ) => {
15
- if (element?.fieldInfo) {
16
- const props = element.fieldInfo;
17
- const formManager = element?.formManager || null;
18
- const formActions = element?.formActions || null;
19
- const formValues = element?.formValues || null;
20
- const fieldName: any = element?.fieldInfo?.fieldName || null;
21
- const fieldType = element?.fieldInfo?.fieldType || null;
22
- if (!(props && formManager && formValues && fieldName && fieldType)) {
23
- return <></>;
24
- }
25
-
26
- const getFieldLabel = () => {
27
- if (element?.fieldInfo?.formProps?.fieldLabelFn) {
28
- return element.fieldInfo.formProps.fieldLabelFn(formValues);
29
- } else if (element?.fieldInfo?.fieldLabel) {
30
- return element?.fieldInfo?.fieldLabel;
31
- }
32
- };
33
- return !element.hiddenFields.includes(fieldName) ? (
34
- <Grid2
35
- size={
36
- props?.formProps?.fieldSize || {
37
- lg: 12,
38
- md: 12,
39
- sm: 12,
40
- }
41
- }
42
- sx={{
43
- padding: 1,
44
- width: "100%",
45
- }}
46
- >
47
- {fieldType === "text" || fieldType === "number" ? (
48
- <TemplateTextField
49
- {...props.muiTextFieldProps}
50
- fullWidth
51
- type={fieldType}
52
- disabled={element.disabledFields.includes(fieldName)}
53
- label={getFieldLabel()}
54
- value={formValues[fieldName]}
55
- onChange={(event) => {
56
- let newValue = null;
57
- if (event.target.value != "") {
58
- if (fieldType === "number" && isNumeric(event.target.value)) {
59
- newValue = Number(event.target.value);
60
- } else {
61
- newValue = event.target.value;
62
- }
63
- }
64
- formManager.setValue(fieldName, newValue);
65
- if (element?.formValuesChangeCallBk) {
66
- element?.formValuesChangeCallBk(
67
- formValues,
68
- formActions,
69
- formManager,
70
- fieldName,
71
- newValue
72
- );
73
- }
74
- }}
75
- sx={{
76
- "& .MuiInputBase-root": {
77
- height: `${props?.formProps?.fieldHeight}px` || undefined,
78
- },
79
- "& .MuiInputBase-input": {
80
- height: "100% !important", // forces full height usage
81
- },
82
- ...props?.formProps?.style,
83
- display: element.hiddenFields.includes(fieldName)
84
- ? "none"
85
- : undefined,
86
- }}
87
- error={formManager.formState.errors[fieldName] != undefined}
88
- helperText={formManager?.formState?.errors[
89
- fieldName
90
- ]?.message?.toString()}
91
- />
92
- ) : props?.fieldType === "date" ? (
93
- <Datefield
94
- format={props?.dateFormat || DATE_FORMAT}
95
- sx={props?.formProps?.style || { width: "100%" }}
96
- disabled={element.disabledFields.includes(fieldName)}
97
- hidden={element.hiddenFields.includes(fieldName)}
98
- label={getFieldLabel()}
99
- onChangeCallBack={(v: any) => {
100
- formManager.setValue(fieldName, v);
101
- if (element?.formValuesChangeCallBk) {
102
- element?.formValuesChangeCallBk(
103
- formValues,
104
- formActions,
105
- formManager,
106
- fieldName,
107
- v
108
- );
109
- }
110
- }}
111
- value={formValues[fieldName]}
112
- error={formManager.formState.errors[fieldName] != undefined}
113
- errorMessage={formManager?.formState?.errors[
114
- fieldName
115
- ]?.message?.toString()}
116
- />
117
- ) : props?.fieldType === "datetime" ? (
118
- <DatetimeField
119
- format={props?.dateFormat || DATE_TIME_FORMAT}
120
- sx={props?.formProps?.style || { width: "100%" }}
121
- disabled={element.disabledFields.includes(fieldName)}
122
- hidden={element.hiddenFields.includes(fieldName)}
123
- label={getFieldLabel()}
124
- onChangeCallBack={(v: any) => {
125
- formManager.setValue(fieldName, v);
126
- if (element?.formValuesChangeCallBk) {
127
- element?.formValuesChangeCallBk(
128
- formValues,
129
- formActions,
130
- formManager,
131
- fieldName,
132
- v
133
- );
134
- }
135
- }}
136
- value={formValues[fieldName]}
137
- error={formManager.formState.errors[fieldName] != undefined}
138
- errorMessage={formManager?.formState?.errors[
139
- fieldName
140
- ]?.message?.toString()}
141
- />
142
- ) : props?.fieldType === "checkbox" ? (
143
- <CheckBox
144
- label={getFieldLabel()}
145
- onChangeCallBack={(v: any) => {
146
- formManager.setValue(fieldName, v);
147
- if (element?.formValuesChangeCallBk) {
148
- element?.formValuesChangeCallBk(
149
- formValues,
150
- formActions,
151
- formManager,
152
- fieldName,
153
- v
154
- );
155
- }
156
- }}
157
- value={formValues[fieldName]}
158
- checkedValue={props?.checkedValue || true}
159
- unCheckedValue={props?.unCheckedValue || false}
160
- disabled={element.disabledFields.includes(fieldName)}
161
- hidden={element.hiddenFields.includes(fieldName)}
162
- sx={props?.formProps?.style}
163
- />
164
- ) : props?.fieldType === "combobox" ? (
165
- <ComboBox
166
- sx={props?.formProps?.style || { width: "100%" }}
167
- label={getFieldLabel()}
168
- commonStoreKey={props?.commonStoreKey}
169
- dataQueryId={props?.dataQueryId}
170
- storeUrl={props?.storeUrl}
171
- storeLoadParam={props?.storeLoadParam}
172
- disabled={element.disabledFields.includes(fieldName)}
173
- hidden={element.hiddenFields.includes(fieldName)}
174
- onChangeCallBack={(v: any, selectedRecord: any) => {
175
- let newValue = null;
176
- if (v) {
177
- newValue = v;
178
- }
179
- formManager.setValue(fieldName, newValue);
180
- if (element?.formValuesChangeCallBk) {
181
- element?.formValuesChangeCallBk(
182
- formValues,
183
- formActions,
184
- formManager,
185
- fieldName,
186
- v,
187
- selectedRecord
188
- );
189
- }
190
- }}
191
- options={props?.options || []}
192
- displayField={props?.optionDisplayField || ""}
193
- valueField={props?.optionValueField || ""}
194
- value={formValues[fieldName]}
195
- errorMessage={formManager?.formState?.errors[
196
- fieldName
197
- ]?.message?.toString()}
198
- />
199
- ) : props?.fieldType === "lookup" ? (
200
- <SystemLookupCombobox
201
- sx={props?.formProps?.style || { width: "100%" }}
202
- label={getFieldLabel()}
203
- disabled={element.disabledFields.includes(fieldName)}
204
- hidden={element.hiddenFields.includes(fieldName)}
205
- onChangeCallBack={(v: any, selectedRecord: any) => {
206
- let newValue = null;
207
- if (v) {
208
- newValue = v;
209
- }
210
- formManager.setValue(fieldName, newValue);
211
- if (element?.formValuesChangeCallBk) {
212
- element?.formValuesChangeCallBk(
213
- formValues,
214
- formActions,
215
- formManager,
216
- fieldName,
217
- v,
218
- selectedRecord
219
- );
220
- }
221
- }}
222
- lookupType={props.lookupType}
223
- value={formValues[fieldName]}
224
- errorMessage={formManager?.formState?.errors[
225
- fieldName
226
- ]?.message?.toString()}
227
- />
228
- ) : null}
229
- </Grid2>
230
- ) : (
231
- <></>
232
- );
233
- } else {
234
- return <></>;
235
- }
236
- };
237
-
238
- export default FormElementField;
1
+ import { Grid2 } from "@mui/material";
2
+ import TemplateTextField from "./FormFields/TemplateTextField";
3
+ import Datefield from "./FormFields/Datefield";
4
+ import DatetimeField from "./FormFields/DatetimeField";
5
+ import ComboBox from "./FormFields/ComboBox";
6
+ import CheckBox from "./FormFields/CheckBox";
7
+ import { DATE_FORMAT, DATE_TIME_FORMAT } from "../../../../util/constants";
8
+ import { isNumeric } from "../../../../util/AppUtils";
9
+ import { FormElementFieldProps } from "../DataEntryTypes";
10
+ import SystemLookupCombobox from "./FormFields/SystemLookupCombobox";
11
+
12
+ const FormElementField: React.FC<FormElementFieldProps> = (
13
+ element: FormElementFieldProps
14
+ ) => {
15
+ if (element?.fieldInfo) {
16
+ const props = element.fieldInfo;
17
+ const formManager = element?.formManager || null;
18
+ const formActions = element?.formActions || null;
19
+ const formValues = element?.formValues || null;
20
+ const fieldName: any = element?.fieldInfo?.fieldName || null;
21
+ const fieldType = element?.fieldInfo?.fieldType || null;
22
+ if (!(props && formManager && formValues && fieldName && fieldType)) {
23
+ return <></>;
24
+ }
25
+
26
+ const getFieldLabel = () => {
27
+ if (element?.fieldInfo?.formProps?.fieldLabelFn) {
28
+ return element.fieldInfo.formProps.fieldLabelFn(formValues);
29
+ } else if (element?.fieldInfo?.fieldLabel) {
30
+ return element?.fieldInfo?.fieldLabel;
31
+ }
32
+ };
33
+ return !element.hiddenFields.includes(fieldName) ? (
34
+ <Grid2
35
+ size={
36
+ props?.formProps?.fieldSize || {
37
+ lg: 12,
38
+ md: 12,
39
+ sm: 12,
40
+ }
41
+ }
42
+ sx={{
43
+ padding: 1,
44
+ width: "100%",
45
+ }}
46
+ >
47
+ {fieldType === "text" || fieldType === "number" ? (
48
+ <TemplateTextField
49
+ {...props.muiTextFieldProps}
50
+ fullWidth
51
+ type={fieldType}
52
+ disabled={element.disabledFields.includes(fieldName)}
53
+ label={getFieldLabel()}
54
+ value={formValues[fieldName]}
55
+ onChange={(event) => {
56
+ let newValue = null;
57
+ if (event.target.value != "") {
58
+ if (fieldType === "number" && isNumeric(event.target.value)) {
59
+ newValue = Number(event.target.value);
60
+ } else {
61
+ newValue = event.target.value;
62
+ }
63
+ }
64
+ formManager.setValue(fieldName, newValue);
65
+ if (element?.formValuesChangeCallBk) {
66
+ element?.formValuesChangeCallBk(
67
+ formValues,
68
+ formActions,
69
+ formManager,
70
+ fieldName,
71
+ newValue
72
+ );
73
+ }
74
+ }}
75
+ sx={{
76
+ "& .MuiInputBase-root": {
77
+ height: `${props?.formProps?.fieldHeight}px` || undefined,
78
+ },
79
+ "& .MuiInputBase-input": {
80
+ height: "100% !important", // forces full height usage
81
+ },
82
+ ...props?.formProps?.style,
83
+ display: element.hiddenFields.includes(fieldName)
84
+ ? "none"
85
+ : undefined,
86
+ }}
87
+ error={formManager.formState.errors[fieldName] != undefined}
88
+ helperText={formManager?.formState?.errors[
89
+ fieldName
90
+ ]?.message?.toString()}
91
+ />
92
+ ) : props?.fieldType === "date" ? (
93
+ <Datefield
94
+ format={props?.dateFormat || DATE_FORMAT}
95
+ sx={props?.formProps?.style || { width: "100%" }}
96
+ disabled={element.disabledFields.includes(fieldName)}
97
+ hidden={element.hiddenFields.includes(fieldName)}
98
+ label={getFieldLabel()}
99
+ onChangeCallBack={(v: any) => {
100
+ formManager.setValue(fieldName, v);
101
+ if (element?.formValuesChangeCallBk) {
102
+ element?.formValuesChangeCallBk(
103
+ formValues,
104
+ formActions,
105
+ formManager,
106
+ fieldName,
107
+ v
108
+ );
109
+ }
110
+ }}
111
+ value={formValues[fieldName]}
112
+ error={formManager.formState.errors[fieldName] != undefined}
113
+ errorMessage={formManager?.formState?.errors[
114
+ fieldName
115
+ ]?.message?.toString()}
116
+ />
117
+ ) : props?.fieldType === "datetime" ? (
118
+ <DatetimeField
119
+ format={props?.dateFormat || DATE_TIME_FORMAT}
120
+ sx={props?.formProps?.style || { width: "100%" }}
121
+ disabled={element.disabledFields.includes(fieldName)}
122
+ hidden={element.hiddenFields.includes(fieldName)}
123
+ label={getFieldLabel()}
124
+ onChangeCallBack={(v: any) => {
125
+ formManager.setValue(fieldName, v);
126
+ if (element?.formValuesChangeCallBk) {
127
+ element?.formValuesChangeCallBk(
128
+ formValues,
129
+ formActions,
130
+ formManager,
131
+ fieldName,
132
+ v
133
+ );
134
+ }
135
+ }}
136
+ value={formValues[fieldName]}
137
+ error={formManager.formState.errors[fieldName] != undefined}
138
+ errorMessage={formManager?.formState?.errors[
139
+ fieldName
140
+ ]?.message?.toString()}
141
+ />
142
+ ) : props?.fieldType === "checkbox" ? (
143
+ <CheckBox
144
+ label={getFieldLabel()}
145
+ onChangeCallBack={(v: any) => {
146
+ formManager.setValue(fieldName, v);
147
+ if (element?.formValuesChangeCallBk) {
148
+ element?.formValuesChangeCallBk(
149
+ formValues,
150
+ formActions,
151
+ formManager,
152
+ fieldName,
153
+ v
154
+ );
155
+ }
156
+ }}
157
+ value={formValues[fieldName]}
158
+ checkedValue={props?.checkedValue || true}
159
+ unCheckedValue={props?.unCheckedValue || false}
160
+ disabled={element.disabledFields.includes(fieldName)}
161
+ hidden={element.hiddenFields.includes(fieldName)}
162
+ sx={props?.formProps?.style}
163
+ />
164
+ ) : props?.fieldType === "combobox" ? (
165
+ <ComboBox
166
+ sx={props?.formProps?.style || { width: "100%" }}
167
+ label={getFieldLabel()}
168
+ commonStoreKey={props?.commonStoreKey}
169
+ dataQueryId={props?.dataQueryId}
170
+ storeUrl={props?.storeUrl}
171
+ storeLoadParam={props?.storeLoadParam}
172
+ disabled={element.disabledFields.includes(fieldName)}
173
+ hidden={element.hiddenFields.includes(fieldName)}
174
+ onChangeCallBack={(v: any, selectedRecord: any) => {
175
+ let newValue = null;
176
+ if (v) {
177
+ newValue = v;
178
+ }
179
+ formManager.setValue(fieldName, newValue);
180
+ if (element?.formValuesChangeCallBk) {
181
+ element?.formValuesChangeCallBk(
182
+ formValues,
183
+ formActions,
184
+ formManager,
185
+ fieldName,
186
+ v,
187
+ selectedRecord
188
+ );
189
+ }
190
+ }}
191
+ options={props?.options || []}
192
+ displayField={props?.optionDisplayField || ""}
193
+ valueField={props?.optionValueField || ""}
194
+ value={formValues[fieldName]}
195
+ errorMessage={formManager?.formState?.errors[
196
+ fieldName
197
+ ]?.message?.toString()}
198
+ />
199
+ ) : props?.fieldType === "lookup" ? (
200
+ <SystemLookupCombobox
201
+ sx={props?.formProps?.style || { width: "100%" }}
202
+ label={getFieldLabel()}
203
+ disabled={element.disabledFields.includes(fieldName)}
204
+ hidden={element.hiddenFields.includes(fieldName)}
205
+ onChangeCallBack={(v: any, selectedRecord: any) => {
206
+ let newValue = null;
207
+ if (v) {
208
+ newValue = v;
209
+ }
210
+ formManager.setValue(fieldName, newValue);
211
+ if (element?.formValuesChangeCallBk) {
212
+ element?.formValuesChangeCallBk(
213
+ formValues,
214
+ formActions,
215
+ formManager,
216
+ fieldName,
217
+ v,
218
+ selectedRecord
219
+ );
220
+ }
221
+ }}
222
+ lookupType={props.lookupType}
223
+ value={formValues[fieldName]}
224
+ errorMessage={formManager?.formState?.errors[
225
+ fieldName
226
+ ]?.message?.toString()}
227
+ />
228
+ ) : null}
229
+ </Grid2>
230
+ ) : (
231
+ <></>
232
+ );
233
+ } else {
234
+ return <></>;
235
+ }
236
+ };
237
+
238
+ export default FormElementField;