@asaleh37/ui-base 1.2.29 → 25.1.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.
Files changed (179) hide show
  1. package/.github/workflows/publish-npm.yml +49 -0
  2. package/README.md +51 -51
  3. package/__ODockerfile +14 -0
  4. package/dist/index.d.ts +101 -10
  5. package/dist/index.js +135 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +135 -7
  8. package/dist/index.mjs.map +1 -1
  9. package/eslint.config.js +29 -29
  10. package/index.html +20 -13
  11. package/package-lock.json/342/200/216 +9040 -0
  12. package/package.json +122 -119
  13. package/public/bg.jpg +0 -0
  14. package/public/ezzsteel.png +0 -0
  15. package/public/logo.png +0 -0
  16. package/public/manifest.json +21 -0
  17. package/public/no_user.png +0 -0
  18. package/rollup.config-1748377725725.cjs +34 -34
  19. package/rollup.config.js +45 -45
  20. package/src/components/App.tsx +155 -123
  21. package/src/components/BaseApp.tsx +75 -53
  22. package/src/components/ExampleTrial.tsx +24 -0
  23. package/src/components/administration/admin/ChangePasswordPanel.tsx +128 -0
  24. package/src/components/administration/admin/CustomPersonGrid.tsx +361 -0
  25. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  26. package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -0
  27. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  28. package/src/components/administration/admin/OrganizationGrid.tsx +118 -82
  29. package/src/components/administration/admin/OrganizationMemberGrid.tsx +190 -176
  30. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  31. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  32. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  33. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  34. package/src/components/administration/admin/PersonGrid.tsx +27 -231
  35. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  36. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +117 -126
  37. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  38. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  39. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +75 -67
  40. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  41. package/src/components/administration/dev/AttachmentConfigGrid.tsx +224 -213
  42. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  43. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  44. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  45. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  46. package/src/components/administration/dev/DataQueryGrid.tsx +216 -206
  47. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  48. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  49. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +151 -150
  50. package/src/components/administration/dev/EntityParameterGrid.tsx +307 -279
  51. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  52. package/src/components/administration/dev/MailAttachmentGrid.tsx +155 -155
  53. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  54. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  55. package/src/components/administration/dev/MailRecipientGrid.tsx +170 -169
  56. package/src/components/administration/dev/MailSenderConfigGrid.tsx +480 -478
  57. package/src/components/administration/dev/MailTemplateGrid.tsx +385 -384
  58. package/src/components/administration/dev/NotificationGrid.tsx +435 -432
  59. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  60. package/src/components/administration/dev/ReportGrid.tsx +503 -504
  61. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  62. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  63. package/src/components/administration/dev/WidgetGrid.tsx +380 -431
  64. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  65. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  66. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  67. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +357 -377
  68. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  69. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  70. package/src/components/common/AzureLogin.tsx +222 -0
  71. package/src/components/common/ChangeOrgForm.tsx +85 -81
  72. package/src/components/common/Home.tsx +43 -44
  73. package/src/components/common/LanguageSwitcher.tsx +25 -25
  74. package/src/components/common/LayoutHandlers.tsx +11 -11
  75. package/src/components/common/LoadingMask.tsx +24 -24
  76. package/src/components/common/Login.tsx +268 -214
  77. package/src/components/common/MobileLogin.tsx +229 -0
  78. package/src/components/common/MyNotificationsPanel.tsx +109 -104
  79. package/src/components/common/NoLicenseComponent.tsx +79 -0
  80. package/src/components/common/NotificationItem.tsx +138 -138
  81. package/src/components/index.ts +10 -9
  82. package/src/components/msalConfig.ts +11 -0
  83. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +361 -324
  84. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +297 -248
  85. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  86. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +238 -231
  87. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +108 -106
  88. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +66 -64
  89. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +164 -93
  90. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +70 -65
  91. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +71 -64
  92. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  93. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +56 -55
  94. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +20 -17
  95. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +431 -388
  96. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +197 -189
  97. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +1044 -998
  98. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  99. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  100. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +234 -227
  101. package/src/components/templates/TransferList.tsx +256 -257
  102. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  103. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  104. package/src/components/templates/attachment/AttachmentImageViewer.tsx +85 -45
  105. package/src/components/templates/attachment/AttachmentPanel.tsx +285 -271
  106. package/src/components/templates/index.ts +35 -33
  107. package/src/components/templates/report/ExcelReportViewer.tsx +71 -72
  108. package/src/components/templates/report/ReportViewer.tsx +272 -383
  109. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  110. package/src/components/templates/visuals/DashboardViewer.tsx +192 -148
  111. package/src/components/templates/visuals/WidgetViewer.tsx +208 -198
  112. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  113. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  114. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  115. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  116. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  117. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  118. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +611 -606
  119. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +145 -140
  120. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  121. package/src/examples/ExampleGrid.tsx +134 -0
  122. package/src/hooks/UseConfirmationWindow.tsx +56 -54
  123. package/src/hooks/UseMobile.tsx +13 -13
  124. package/src/hooks/UseSession.tsx +59 -40
  125. package/src/hooks/UseWindow.tsx +111 -107
  126. package/src/hooks/index.ts +22 -7
  127. package/src/hooks/useApiActions.ts +124 -124
  128. package/src/hooks/useAxios.tsx +340 -316
  129. package/src/hooks/useCommonStore.tsx +29 -0
  130. package/src/hooks/useInterval.tsx +23 -23
  131. package/src/hooks/useLoadingMask.tsx +16 -16
  132. package/src/hooks/useLookupGridColumn.tsx +35 -35
  133. package/src/hooks/useParameterPanel.tsx +159 -0
  134. package/src/index.ts +4 -4
  135. package/src/layout/DrawerHeader.tsx +10 -10
  136. package/src/layout/Layout.tsx +102 -90
  137. package/src/layout/MainContent.tsx +115 -114
  138. package/src/layout/MobileDrawer.tsx +103 -103
  139. package/src/layout/NavigationTree.tsx +309 -291
  140. package/src/layout/NotificationButton.tsx +207 -207
  141. package/src/layout/RouteWrapper.tsx +63 -36
  142. package/src/layout/SideBar.tsx +85 -85
  143. package/src/layout/TopBar.tsx +317 -217
  144. package/src/locales/arabic/adminLocalsAr.json +94 -93
  145. package/src/locales/arabic/common.json +44 -44
  146. package/src/locales/arabic/devLocalsAr.json +317 -317
  147. package/src/locales/arabic/index.ts +9 -9
  148. package/src/locales/english/adminLocalsEn.json +97 -96
  149. package/src/locales/english/common.json +43 -43
  150. package/src/locales/english/devLocalsEn.json +318 -318
  151. package/src/locales/english/index.ts +9 -9
  152. package/src/locales/i18n.ts +8 -8
  153. package/src/locales/index.ts +9 -9
  154. package/src/main.tsx +41 -23
  155. package/src/navigationItems/Administration/adminNavigationItems.tsx +231 -222
  156. package/src/navigationItems/Administration/index.tsx +16 -16
  157. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  158. package/src/navigationItems/common/index.tsx +7 -7
  159. package/src/navigationItems/index.tsx +35 -34
  160. package/src/redux/features/administration/AdministrationStoresMetaData.ts +164 -126
  161. package/src/redux/features/common/AppInfoSlice.ts +93 -63
  162. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  163. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  164. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  165. package/src/redux/features/common/SideBarSlice.ts +27 -27
  166. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  167. package/src/redux/store.ts +29 -29
  168. package/src/routes/administration/adminRoutes.tsx +99 -99
  169. package/src/routes/administration/devRoutes.tsx +129 -129
  170. package/src/routes/administration/index.ts +8 -8
  171. package/src/routes/index.ts +5 -11
  172. package/src/routes/types/index.ts +6 -5
  173. package/src/styles/index.css +19 -19
  174. package/src/types/index.ts +8 -2
  175. package/src/util/AppUtils.ts +73 -53
  176. package/src/util/constants.ts +6 -6
  177. package/src/util/index.ts +5 -2
  178. package/tsconfig.json +135 -135
  179. package/vite.config.ts +24 -23
@@ -1,140 +1,145 @@
1
- import Typography from "@mui/material/Typography";
2
- import { workflowDocumentActionHistory } from "./WorkflowDocumentPanel";
3
- import { useSelector } from "react-redux";
4
- import { Avatar, Box, Divider, Paper, Stack } from "@mui/material";
5
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
6
- import { useTranslation } from "react-i18next";
7
- import AttachmentImageViewer from "../attachment/AttachmentImageViewer";
8
-
9
- type WorkflowDocumentTimeLineProp = {
10
- actionHistory: Array<workflowDocumentActionHistory>;
11
- };
12
-
13
- const WorkflowDocumentTimeLine: React.FC<WorkflowDocumentTimeLineProp> = (
14
- props
15
- ) => {
16
- const AppLayout = useSelector((state: any) => state.AppLayout);
17
- const { t } = useTranslation();
18
- return (
19
- <Paper
20
- sx={{
21
- display: "flex",
22
- flexDirection: "column",
23
- flexGrow: 1,
24
- padding: 1,
25
- margin: 1,
26
- alignItems: "center",
27
- justifyContent: "center",
28
- }}
29
- >
30
- <Box
31
- sx={{
32
- width: "100%",
33
- display: "flex",
34
- alignItems: "center",
35
- justifyContent: "center",
36
- fontSize: 18,
37
- fontWeight: "bold",
38
- }}
39
- >
40
- <FontAwesomeIcon
41
- icon="history"
42
- style={{ marginRight: 10, marginLeft: 10 }}
43
- />
44
- {t("WF_ACTION_HISTORY_LABEL")}
45
- </Box>
46
- <Box
47
- sx={{
48
- flexGrow: 1,
49
- width: "100%",
50
- display: "flex",
51
- flexDirection: "column",
52
- overflowY: "auto",
53
- alignItems: "center",
54
- justifyContent: "flex-start",
55
- }}
56
- >
57
- {props.actionHistory.map((actionHistoryRecord, index) => {
58
- return (
59
- <>
60
- <Box
61
- sx={{
62
- display: "flex",
63
- alignItems: "center",
64
- justifyContent: "center",
65
- width: "100%",
66
- marginBottom: 2,
67
- }}
68
- >
69
- <Box
70
- sx={{
71
- display: "flex",
72
- flex: 1,
73
- flexDirection: "column",
74
- alignItems: "flex-end",
75
- justifyContent: "center",
76
- }}
77
- >
78
- <Box sx={{ marginBottom: 0.2 }}>
79
- {actionHistoryRecord.actionTime}
80
- </Box>
81
- <Typography>
82
- via {actionHistoryRecord.actionMethod}
83
- </Typography>
84
- </Box>
85
- <Box
86
- sx={{
87
- display: "flex",
88
- flexDirection: "column",
89
- alignItems: "center",
90
- justifyContent: "center",
91
- position: "relative",
92
- marginRight: 2,
93
- marginLeft: 2,
94
- }}
95
- >
96
- <AttachmentImageViewer
97
- showAsAvatar={true}
98
- attachmentCode="EMPLOYEE_PHOTOS"
99
- refKey={actionHistoryRecord?.personId + "" || "0"}
100
- style={{ m: 1, width: 70, height: 70 }}
101
- />
102
- {index !== props.actionHistory.length - 1 ? (
103
- <Box sx={{ marginTop: 11, position: "absolute" }}>|</Box>
104
- ) : (
105
- <></>
106
- )}
107
- </Box>
108
- <Box
109
- sx={{
110
- display: "flex",
111
- flex: 1,
112
- flexDirection: "column",
113
- alignItems: "flex-start",
114
- justifyContent: "center",
115
- }}
116
- >
117
- <Box sx={{ width: "100%" }}>
118
- {AppLayout.appDirection === "ltr"
119
- ? `${actionHistoryRecord?.documentActionEnName}`
120
- : `${actionHistoryRecord?.documentActionArName}`}
121
- {actionHistoryRecord?.actionComment
122
- ? " - " + actionHistoryRecord.actionComment
123
- : ""}
124
- </Box>
125
- <Box sx={{ width: "100%" }}>
126
- {AppLayout.appDirection === "ltr"
127
- ? `${actionHistoryRecord?.employeeEnName}`
128
- : `${actionHistoryRecord?.employeeArName}`}
129
- </Box>
130
- </Box>
131
- </Box>
132
- </>
133
- );
134
- })}
135
- </Box>
136
- </Paper>
137
- );
138
- };
139
-
140
- export default WorkflowDocumentTimeLine;
1
+ import Typography from "@mui/material/Typography";
2
+ import { workflowDocumentActionHistory } from "./WorkflowDocumentPanel";
3
+ import { useSelector } from "react-redux";
4
+ import { Avatar, Box, Divider, Paper, Stack } from "@mui/material";
5
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
6
+ import { useTranslation } from "react-i18next";
7
+ import AttachmentImageViewer from "../attachment/AttachmentImageViewer";
8
+
9
+ type WorkflowDocumentTimeLineProp = {
10
+ actionHistory: Array<workflowDocumentActionHistory>;
11
+ };
12
+
13
+ const WorkflowDocumentTimeLine: React.FC<WorkflowDocumentTimeLineProp> = (
14
+ props
15
+ ) => {
16
+ const AppLayout = useSelector((state: any) => state.AppLayout);
17
+ const { t } = useTranslation();
18
+ return (
19
+ <Paper
20
+ sx={{
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ // flexGrow: 1,
24
+ width: 600,
25
+ padding: 1,
26
+ margin: 1,
27
+ alignItems: "center",
28
+ justifyContent: "center",
29
+ }}
30
+ >
31
+ <Box
32
+ sx={{
33
+ width: "100%",
34
+ display: "flex",
35
+ alignItems: "center",
36
+ justifyContent: "center",
37
+ fontSize: 18,
38
+ fontWeight: "bold",
39
+ }}
40
+ >
41
+ <FontAwesomeIcon
42
+ icon="history"
43
+ style={{ marginRight: 10, marginLeft: 10 }}
44
+ />
45
+ {t("WF_ACTION_HISTORY_LABEL")}
46
+ </Box>
47
+ <Box
48
+ sx={{
49
+ flexGrow: 1,
50
+ width: "100%",
51
+ display: "flex",
52
+ flexDirection: "column",
53
+ overflowY: "auto",
54
+ alignItems: "center",
55
+ justifyContent: "flex-start",
56
+ }}
57
+ >
58
+ {props.actionHistory.map((actionHistoryRecord, index) => {
59
+ return (
60
+ <>
61
+ <Box
62
+ sx={{
63
+ display: "flex",
64
+ alignItems: "center",
65
+ justifyContent: "center",
66
+ width: "100%",
67
+ marginBottom: 2,
68
+ }}
69
+ >
70
+ <Box
71
+ sx={{
72
+ display: "flex",
73
+ flex: 1,
74
+ flexDirection: "column",
75
+ alignItems: "flex-end",
76
+ justifyContent: "center",
77
+ }}
78
+ >
79
+ <Box sx={{ marginBottom: 0.2 }}>
80
+ {actionHistoryRecord.actionTime}
81
+ </Box>
82
+ <Typography>
83
+ via {actionHistoryRecord.actionMethod}
84
+ </Typography>
85
+ </Box>
86
+ <Box
87
+ sx={{
88
+ display: "flex",
89
+ flexDirection: "column",
90
+ alignItems: "center",
91
+ justifyContent: "center",
92
+ position: "relative",
93
+ marginRight: 2,
94
+ marginLeft: 2,
95
+ }}
96
+ >
97
+ <AttachmentImageViewer
98
+ showAsAvatar={true}
99
+ attachmentCode="EMPLOYEE_PHOTOS"
100
+ refKey={
101
+ actionHistoryRecord?.personId
102
+ ? actionHistoryRecord?.personId + ""
103
+ : undefined
104
+ }
105
+ style={{ m: 1, width: 70, height: 70 }}
106
+ />
107
+ {index !== props.actionHistory.length - 1 ? (
108
+ <Box sx={{ marginTop: 11, position: "absolute" }}>|</Box>
109
+ ) : (
110
+ <></>
111
+ )}
112
+ </Box>
113
+ <Box
114
+ sx={{
115
+ display: "flex",
116
+ flex: 1,
117
+ flexDirection: "column",
118
+ alignItems: "flex-start",
119
+ justifyContent: "center",
120
+ }}
121
+ >
122
+ <Box sx={{ width: "100%" }}>
123
+ {AppLayout.appDirection === "ltr"
124
+ ? `${actionHistoryRecord?.documentActionEnName}`
125
+ : `${actionHistoryRecord?.documentActionArName}`}
126
+ {actionHistoryRecord?.actionComment
127
+ ? " - " + actionHistoryRecord.actionComment
128
+ : ""}
129
+ </Box>
130
+ <Box sx={{ width: "100%" }}>
131
+ {AppLayout.appDirection === "ltr"
132
+ ? `${actionHistoryRecord?.employeeEnName}`
133
+ : `${actionHistoryRecord?.employeeArName}`}
134
+ </Box>
135
+ </Box>
136
+ </Box>
137
+ </>
138
+ );
139
+ })}
140
+ </Box>
141
+ </Paper>
142
+ );
143
+ };
144
+
145
+ export default WorkflowDocumentTimeLine;
@@ -1,14 +1,14 @@
1
- import { useParams } from "react-router-dom";
2
- import WorkflowDocumentPanel from "./WorkflowDocumentPanel";
3
-
4
- const WorkflowRouteComponent: React.FC = () => {
5
- const { workflowDocumentCode, refDocumentId } = useParams();
6
- return (
7
- <WorkflowDocumentPanel
8
- workFlowDocumentCode={workflowDocumentCode}
9
- refDocumentId={refDocumentId}
10
- />
11
- );
12
- };
13
-
14
- export default WorkflowRouteComponent;
1
+ import { useParams } from "react-router-dom";
2
+ import WorkflowDocumentPanel from "./WorkflowDocumentPanel";
3
+
4
+ const WorkflowRouteComponent: React.FC = () => {
5
+ const { workflowDocumentCode, refDocumentId } = useParams();
6
+ return (
7
+ <WorkflowDocumentPanel
8
+ workFlowDocumentCode={workflowDocumentCode}
9
+ refDocumentId={refDocumentId}
10
+ />
11
+ );
12
+ };
13
+
14
+ export default WorkflowRouteComponent;
@@ -0,0 +1,134 @@
1
+ import { useState } from "react";
2
+ import { FormElementProps, TemplateGrid } from "../components";
3
+ import { useApiActions } from "../hooks";
4
+
5
+ const ExampleGrid: React.FC = () => {
6
+ const [data, setData] = useState([]);
7
+ const options = [
8
+ { value: 1, display: "Male" },
9
+ { value: 2, display: "Female" },
10
+ ];
11
+ const apiActions = useApiActions({
12
+ findAll: undefined,
13
+ commonStoreKey: undefined,
14
+ deleteById: undefined,
15
+ deleteByIdParamName: undefined,
16
+ findById: undefined,
17
+ findByIdParamName: undefined,
18
+ save: undefined,
19
+ setData: setData,
20
+ });
21
+ const elements: FormElementProps[] = [
22
+ {
23
+ mode: "props",
24
+ props: { fieldLabel: "ID", fieldName: "id", fieldType: "number" },
25
+ type: "field",
26
+ },
27
+ {
28
+ mode: "props",
29
+ props: {
30
+ fieldLabel: "Gender",
31
+ fieldName: "gender",
32
+ fieldType: "combobox",
33
+ options,
34
+ optionValueField: "value",
35
+ optionDisplayField: "display",
36
+ formProps: {
37
+ onValueChangeCallBack(
38
+ formValues,
39
+ value,
40
+ formManager,
41
+ formActions,
42
+ selectedRecord
43
+ ) {
44
+ if (value == 1) {
45
+ formActions.disableField("bithdate");
46
+ formManager.setValue("bithdate", new Date());
47
+ formManager.setValue("active", true);
48
+ formManager.setValue("type", value);
49
+ } else {
50
+ formActions.enableField("bithdate");
51
+ formManager.setValue("bithdate", null);
52
+ formManager.setValue("active", false);
53
+ }
54
+ formManager.setValue("type", value);
55
+ },
56
+ },
57
+ },
58
+ type: "field",
59
+ },
60
+ {
61
+ mode: "props",
62
+ props: {
63
+ fieldLabel: "Gender",
64
+ fieldName: "type",
65
+ fieldType: "combobox",
66
+ options,
67
+ optionValueField: "value",
68
+ optionDisplayField: "display",
69
+ },
70
+ type: "field",
71
+ },
72
+ {
73
+ mode: "props",
74
+ props: {
75
+ fieldLabel: "Name",
76
+ fieldName: "name",
77
+ required: true,
78
+ fieldType: "text",
79
+ gridProps: { hidden: false },
80
+ formProps: {
81
+ onValueChangeCallBack(
82
+ formValues,
83
+ value,
84
+ formManager,
85
+ formActions,
86
+ selectedRecord
87
+ ) {},
88
+ },
89
+ },
90
+ type: "field",
91
+ },
92
+ {
93
+ mode: "props",
94
+ props: {
95
+ fieldLabel: "Birthdate",
96
+ fieldName: "bithdate",
97
+ required: true,
98
+ fieldType: "date",
99
+ gridProps: { hidden: false },
100
+ },
101
+ type: "field",
102
+ },
103
+ {
104
+ mode: "props",
105
+ props: {
106
+ fieldLabel: "Active",
107
+ fieldName: "active",
108
+ required: true,
109
+ fieldType: "checkbox",
110
+ gridProps: { hidden: false },
111
+ },
112
+ type: "field",
113
+ },
114
+ ];
115
+ return (
116
+ <TemplateGrid
117
+ apiActions={apiActions}
118
+ data={data}
119
+ setData={setData}
120
+ editMode={{
121
+ editMode: "modal",
122
+ specs: {
123
+ modalTitle: "Example Modal Form",
124
+ modalIcon: "user",
125
+ },
126
+ }}
127
+ formElements={elements}
128
+ girdIcon={"user"}
129
+ gridTitle="Example Grid "
130
+ />
131
+ );
132
+ };
133
+
134
+ export default ExampleGrid;
@@ -1,54 +1,56 @@
1
- import {
2
- Button,
3
- Dialog,
4
- DialogActions,
5
- DialogContent,
6
- DialogContentText,
7
- DialogTitle,
8
- } from "@mui/material";
9
- import { useState } from "react";
10
- import { useTranslation } from "react-i18next";
11
-
12
- interface ConfirmationWindowProps {
13
- title: string;
14
- body: string;
15
- onConfirmationCallBk: () => void;
16
- }
17
-
18
- export const useConfirmationWindow = (props: ConfirmationWindowProps) => {
19
- const [open, setOpen] = useState<boolean>(false);
20
- const { t } = useTranslation();
21
- const ConfirmationWindow: React.FC = () => {
22
- return (
23
- <Dialog open={open}>
24
- <DialogTitle>{props.title}</DialogTitle>
25
- <DialogContent>
26
- <DialogContentText>{props.body}</DialogContentText>
27
- </DialogContent>
28
- <DialogActions>
29
- <Button
30
- variant="contained"
31
- color="primary"
32
- onClick={() => {
33
- setOpen(false);
34
- }}
35
- >
36
- {t("NO_LABEL")}
37
- </Button>
38
- <Button
39
- variant="contained"
40
- color="error"
41
- onClick={() => {
42
- props.onConfirmationCallBk();
43
- setOpen(false);
44
- }}
45
- autoFocus
46
- >
47
- {t("YES_LABEL")}
48
- </Button>
49
- </DialogActions>
50
- </Dialog>
51
- );
52
- };
53
- return { ConfirmationWindow, open, setOpen };
54
- };
1
+ import {
2
+ Button,
3
+ Dialog,
4
+ DialogActions,
5
+ DialogContent,
6
+ DialogContentText,
7
+ DialogTitle,
8
+ } from "@mui/material";
9
+ import { useState } from "react";
10
+ import { useTranslation } from "react-i18next";
11
+
12
+ interface ConfirmationWindowProps {
13
+ title: string;
14
+ body: string;
15
+ onConfirmationCallBk: () => void;
16
+ }
17
+
18
+ export const useConfirmationWindow = (props: ConfirmationWindowProps) => {
19
+ const [open, setOpen] = useState<boolean>(false);
20
+ const { t } = useTranslation();
21
+ const ConfirmationWindow: React.FC = () => {
22
+ return (
23
+ <Dialog open={open}>
24
+ <DialogTitle>{props.title}</DialogTitle>
25
+ <DialogContent>
26
+ <DialogContentText>{props.body}</DialogContentText>
27
+ </DialogContent>
28
+ <DialogActions>
29
+ <Button
30
+ variant="contained"
31
+ sx={{ marginRight: 2, marginLeft: 2 }}
32
+ color="secondary"
33
+ onClick={() => {
34
+ setOpen(false);
35
+ }}
36
+ >
37
+ {t("NO_LABEL")}
38
+ </Button>
39
+ <Button
40
+ variant="contained"
41
+ sx={{ marginRight: 2, marginLeft: 2 }}
42
+ color="error"
43
+ onClick={() => {
44
+ props.onConfirmationCallBk();
45
+ setOpen(false);
46
+ }}
47
+ autoFocus
48
+ >
49
+ {t("YES_LABEL")}
50
+ </Button>
51
+ </DialogActions>
52
+ </Dialog>
53
+ );
54
+ };
55
+ return { ConfirmationWindow, open, setOpen };
56
+ };
@@ -1,13 +1,13 @@
1
- import { useEffect, useState } from "react";
2
-
3
- export const useIsMobile = (breakpoint = 768) => {
4
- const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);
5
-
6
- useEffect(() => {
7
- const handleResize = () => setIsMobile(window.innerWidth < breakpoint);
8
- window.addEventListener("resize", handleResize);
9
- return () => window.removeEventListener("resize", handleResize);
10
- }, [breakpoint]);
11
-
12
- return isMobile;
13
- };
1
+ import { useEffect, useState } from "react";
2
+
3
+ export const useIsMobile = (breakpoint = 768) => {
4
+ const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);
5
+
6
+ useEffect(() => {
7
+ const handleResize = () => setIsMobile(window.innerWidth < breakpoint);
8
+ window.addEventListener("resize", handleResize);
9
+ return () => window.removeEventListener("resize", handleResize);
10
+ }, [breakpoint]);
11
+
12
+ return isMobile;
13
+ };