@asaleh37/ui-base 25.12.122 → 25.12.171

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 (29) hide show
  1. package/__ODockerfile +14 -14
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +108 -108
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +112 -112
  6. package/dist/index.mjs.map +1 -1
  7. package/package-lock.json/342/200/216 +9039 -9039
  8. package/package.json +122 -122
  9. package/src/components/administration/admin/CustomPersonGrid.tsx +361 -0
  10. package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -0
  11. package/src/components/administration/admin/OrganizationMemberGrid.tsx +63 -49
  12. package/src/components/administration/admin/PersonGrid.tsx +10 -344
  13. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +2 -1
  14. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +238 -238
  15. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +427 -427
  16. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +198 -198
  17. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +1047 -1047
  18. package/src/components/templates/report/ExcelReportViewer.tsx +72 -72
  19. package/src/components/templates/report/ReportViewer.tsx +272 -272
  20. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +6 -2
  21. package/src/hooks/UseWindow.tsx +111 -111
  22. package/src/hooks/index.ts +22 -22
  23. package/src/hooks/useCommonStore.tsx +29 -29
  24. package/src/hooks/useParameterPanel.tsx +159 -159
  25. package/src/layout/NavigationTree.tsx +8 -1
  26. package/src/layout/TopBar.tsx +72 -55
  27. package/src/main.tsx +2 -1
  28. package/src/navigationItems/Administration/adminNavigationItems.tsx +1 -1
  29. package/src/redux/features/common/AppInfoSlice.ts +4 -0
package/package.json CHANGED
@@ -1,122 +1,122 @@
1
- {
2
- "name": "@asaleh37/ui-base",
3
- "version": "25.12.122",
4
- "description": "",
5
- "license": "ISC",
6
- "author": "Ahmed Saleh Mohamed",
7
- "type": "commonjs",
8
- "main": "dist/index.js",
9
- "module": "dist/index.mjs",
10
- "types": "dist/index.d.ts",
11
- "scripts": {
12
- "build": "rollup -c --bundleConfigAsCjs",
13
- "dev": "vite --host"
14
- },
15
- "devDependencies": {
16
- "@emotion/cache": "^11.14.0",
17
- "@emotion/react": "^11.14.0",
18
- "@emotion/styled": "^11.14.0",
19
- "@eslint/js": "^9.19.0",
20
- "@fortawesome/fontawesome-svg-core": "^6.7.2",
21
- "@fortawesome/free-brands-svg-icons": "^6.7.2",
22
- "@fortawesome/free-regular-svg-icons": "^6.7.2",
23
- "@fortawesome/free-solid-svg-icons": "^6.7.2",
24
- "@fortawesome/react-fontawesome": "^0.2.2",
25
- "@hookform/resolvers": "^4.1.0",
26
- "@mui/icons-material": "^6.4.8",
27
- "@mui/lab": "^7.0.0-beta.13",
28
- "@mui/material": "^6.4.4",
29
- "@mui/x-charts": "^7.27.0",
30
- "@mui/x-data-grid-premium": "^8.3.0",
31
- "@mui/x-date-pickers": "^7.27.0",
32
- "@mui/x-license": "^8.3.0",
33
- "@mui/x-tree-view": "^7.26.0",
34
- "@react-spring/web": "^9.7.5",
35
- "@reduxjs/toolkit": "^2.5.1",
36
- "@rollup/plugin-commonjs": "^28.0.3",
37
- "@rollup/plugin-node-resolve": "^16.0.1",
38
- "@rollup/plugin-terser": "^0.4.4",
39
- "@rollup/plugin-typescript": "^12.1.2",
40
- "@types/react": "^19.1.8",
41
- "@types/react-dom": "^19.0.3",
42
- "@types/react-i18next": "^7.8.3",
43
- "@vitejs/plugin-react": "^4.3.4",
44
- "axios": "^1.8.1",
45
- "eslint": "^9.19.0",
46
- "eslint-plugin-react-hooks": "^5.0.0",
47
- "eslint-plugin-react-refresh": "^0.4.18",
48
- "global": "^4.4.0",
49
- "globals": "^15.14.0",
50
- "i18next": "^24.2.2",
51
- "i18next-browser-languagedetector": "^8.0.3",
52
- "i18next-http-backend": "^3.0.2",
53
- "moment": "^2.30.1",
54
- "oidc-client-ts": "^3.1.0",
55
- "react": "^19.1.0",
56
- "react-dom": "^19.0.0",
57
- "react-hook-form": "^7.54.2",
58
- "react-i18next": "^15.4.0",
59
- "react-redux": "^9.2.0",
60
- "react-router-dom": "^7.1.5",
61
- "react-toastify": "^11.0.5",
62
- "rollup": "^4.41.1",
63
- "rollup-plugin-dts": "^6.2.1",
64
- "rollup-plugin-peer-deps-external": "^2.2.4",
65
- "rollup-plugin-polyfill-node": "^0.13.0",
66
- "rollup-plugin-postcss": "^4.0.2",
67
- "stylis": "^4.3.6",
68
- "stylis-plugin-rtl": "^2.1.1",
69
- "tslib": "^2.8.1",
70
- "typescript": "~5.7.2",
71
- "typescript-eslint": "^8.22.0",
72
- "vite": "^6.1.0",
73
- "zod": "^3.24.2"
74
- },
75
- "peerDependencies": {
76
- "@emotion/cache": "^11.14.0",
77
- "@emotion/react": "^11.14.0",
78
- "@emotion/styled": "^11.14.0",
79
- "@fortawesome/fontawesome-svg-core": "^6.7.2",
80
- "@fortawesome/free-brands-svg-icons": "^6.7.2",
81
- "@fortawesome/free-regular-svg-icons": "^6.7.2",
82
- "@fortawesome/free-solid-svg-icons": "^6.7.2",
83
- "@fortawesome/react-fontawesome": "^0.2.2",
84
- "@hookform/resolvers": "^4.1.0",
85
- "@mui/icons-material": "^6.4.8",
86
- "@mui/lab": "^7.0.0-beta.13",
87
- "@mui/material": "^6.4.4",
88
- "@mui/x-charts": "^7.27.0",
89
- "@mui/x-data-grid-premium": "^8.3.0",
90
- "@mui/x-date-pickers": "^7.27.0",
91
- "@mui/x-license": "^8.3.0",
92
- "@mui/x-tree-view": "^7.26.0",
93
- "@react-spring/web": "^9.7.5",
94
- "@reduxjs/toolkit": "^2.5.1",
95
- "axios": "^1.8.1",
96
- "global": "^4.4.0",
97
- "i18next": "^24.2.2",
98
- "i18next-browser-languagedetector": "^8.0.3",
99
- "i18next-http-backend": "^3.0.2",
100
- "moment": "^2.30.1",
101
- "oidc-client-ts": "^3.1.0",
102
- "react": "^19.0.0",
103
- "react-dom": "^19.0.0",
104
- "react-hook-form": "^7.54.2",
105
- "react-i18next": "^15.4.0",
106
- "react-redux": "^9.2.0",
107
- "react-router-dom": "^7.1.5",
108
- "react-toastify": "^11.0.5",
109
- "rollup": "^4.41.1",
110
- "rollup-plugin-polyfill-node": "^0.13.0",
111
- "rollup-plugin-postcss": "^4.0.2",
112
- "stylis": "^4.3.6",
113
- "stylis-plugin-rtl": "^2.1.1",
114
- "zod": "^3.24.2"
115
- },
116
- "dependencies": {
117
- "@azure/msal-browser": "^4.21.1",
118
- "@azure/msal-react": "^3.0.19",
119
- "@rollup/plugin-json": "^6.1.0",
120
- "rollup-plugin-terser": "^7.0.2"
121
- }
122
- }
1
+ {
2
+ "name": "@asaleh37/ui-base",
3
+ "version": "25.12.171",
4
+ "description": "",
5
+ "license": "ISC",
6
+ "author": "Ahmed Saleh Mohamed",
7
+ "type": "commonjs",
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.mjs",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "build": "rollup -c --bundleConfigAsCjs",
13
+ "dev": "vite --host"
14
+ },
15
+ "devDependencies": {
16
+ "@emotion/cache": "^11.14.0",
17
+ "@emotion/react": "^11.14.0",
18
+ "@emotion/styled": "^11.14.0",
19
+ "@eslint/js": "^9.19.0",
20
+ "@fortawesome/fontawesome-svg-core": "^6.7.2",
21
+ "@fortawesome/free-brands-svg-icons": "^6.7.2",
22
+ "@fortawesome/free-regular-svg-icons": "^6.7.2",
23
+ "@fortawesome/free-solid-svg-icons": "^6.7.2",
24
+ "@fortawesome/react-fontawesome": "^0.2.2",
25
+ "@hookform/resolvers": "^4.1.0",
26
+ "@mui/icons-material": "^6.4.8",
27
+ "@mui/lab": "^7.0.0-beta.13",
28
+ "@mui/material": "^6.4.4",
29
+ "@mui/x-charts": "^7.27.0",
30
+ "@mui/x-data-grid-premium": "^8.3.0",
31
+ "@mui/x-date-pickers": "^7.27.0",
32
+ "@mui/x-license": "^8.3.0",
33
+ "@mui/x-tree-view": "^7.26.0",
34
+ "@react-spring/web": "^9.7.5",
35
+ "@reduxjs/toolkit": "^2.5.1",
36
+ "@rollup/plugin-commonjs": "^28.0.3",
37
+ "@rollup/plugin-node-resolve": "^16.0.1",
38
+ "@rollup/plugin-terser": "^0.4.4",
39
+ "@rollup/plugin-typescript": "^12.1.2",
40
+ "@types/react": "^19.1.8",
41
+ "@types/react-dom": "^19.0.3",
42
+ "@types/react-i18next": "^7.8.3",
43
+ "@vitejs/plugin-react": "^4.3.4",
44
+ "axios": "^1.8.1",
45
+ "eslint": "^9.19.0",
46
+ "eslint-plugin-react-hooks": "^5.0.0",
47
+ "eslint-plugin-react-refresh": "^0.4.18",
48
+ "global": "^4.4.0",
49
+ "globals": "^15.14.0",
50
+ "i18next": "^24.2.2",
51
+ "i18next-browser-languagedetector": "^8.0.3",
52
+ "i18next-http-backend": "^3.0.2",
53
+ "moment": "^2.30.1",
54
+ "oidc-client-ts": "^3.1.0",
55
+ "react": "^19.1.0",
56
+ "react-dom": "^19.0.0",
57
+ "react-hook-form": "^7.54.2",
58
+ "react-i18next": "^15.4.0",
59
+ "react-redux": "^9.2.0",
60
+ "react-router-dom": "^7.1.5",
61
+ "react-toastify": "^11.0.5",
62
+ "rollup": "^4.41.1",
63
+ "rollup-plugin-dts": "^6.2.1",
64
+ "rollup-plugin-peer-deps-external": "^2.2.4",
65
+ "rollup-plugin-polyfill-node": "^0.13.0",
66
+ "rollup-plugin-postcss": "^4.0.2",
67
+ "stylis": "^4.3.6",
68
+ "stylis-plugin-rtl": "^2.1.1",
69
+ "tslib": "^2.8.1",
70
+ "typescript": "~5.7.2",
71
+ "typescript-eslint": "^8.22.0",
72
+ "vite": "^6.1.0",
73
+ "zod": "^3.24.2"
74
+ },
75
+ "peerDependencies": {
76
+ "@emotion/cache": "^11.14.0",
77
+ "@emotion/react": "^11.14.0",
78
+ "@emotion/styled": "^11.14.0",
79
+ "@fortawesome/fontawesome-svg-core": "^6.7.2",
80
+ "@fortawesome/free-brands-svg-icons": "^6.7.2",
81
+ "@fortawesome/free-regular-svg-icons": "^6.7.2",
82
+ "@fortawesome/free-solid-svg-icons": "^6.7.2",
83
+ "@fortawesome/react-fontawesome": "^0.2.2",
84
+ "@hookform/resolvers": "^4.1.0",
85
+ "@mui/icons-material": "^6.4.8",
86
+ "@mui/lab": "^7.0.0-beta.13",
87
+ "@mui/material": "^6.4.4",
88
+ "@mui/x-charts": "^7.27.0",
89
+ "@mui/x-data-grid-premium": "^8.3.0",
90
+ "@mui/x-date-pickers": "^7.27.0",
91
+ "@mui/x-license": "^8.3.0",
92
+ "@mui/x-tree-view": "^7.26.0",
93
+ "@react-spring/web": "^9.7.5",
94
+ "@reduxjs/toolkit": "^2.5.1",
95
+ "axios": "^1.8.1",
96
+ "global": "^4.4.0",
97
+ "i18next": "^24.2.2",
98
+ "i18next-browser-languagedetector": "^8.0.3",
99
+ "i18next-http-backend": "^3.0.2",
100
+ "moment": "^2.30.1",
101
+ "oidc-client-ts": "^3.1.0",
102
+ "react": "^19.0.0",
103
+ "react-dom": "^19.0.0",
104
+ "react-hook-form": "^7.54.2",
105
+ "react-i18next": "^15.4.0",
106
+ "react-redux": "^9.2.0",
107
+ "react-router-dom": "^7.1.5",
108
+ "react-toastify": "^11.0.5",
109
+ "rollup": "^4.41.1",
110
+ "rollup-plugin-polyfill-node": "^0.13.0",
111
+ "rollup-plugin-postcss": "^4.0.2",
112
+ "stylis": "^4.3.6",
113
+ "stylis-plugin-rtl": "^2.1.1",
114
+ "zod": "^3.24.2"
115
+ },
116
+ "dependencies": {
117
+ "@azure/msal-browser": "^4.21.1",
118
+ "@azure/msal-react": "^3.0.19",
119
+ "@rollup/plugin-json": "^6.1.0",
120
+ "rollup-plugin-terser": "^7.0.2"
121
+ }
122
+ }
@@ -0,0 +1,361 @@
1
+ import { useState } from "react";
2
+ import TemplateGrid from "../../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid";
3
+ import { useApiActions, useSession, useWindow } from "../../../hooks";
4
+ import { FormElementProps } from "../../templates/DataEntryTemplates/DataEntryTypes";
5
+ import { useTranslation } from "react-i18next";
6
+ import { toast } from "react-toastify";
7
+ import OrganizationMemberGrid from "./OrganizationMemberGrid";
8
+ import { Box } from "@mui/material";
9
+ import AttachmentImageViewer from "../../templates/attachment/AttachmentImageViewer";
10
+ import { useSelector } from "react-redux";
11
+ import OrgMemberRoleForm from "./OrgMemberRoleForm";
12
+ import ChangePasswordPanel from "./ChangePasswordPanel";
13
+
14
+ const CustomPersonGrid: React.FC = () => {
15
+ const { t } = useTranslation();
16
+ const [selectedPerson, setSelectedPerson] = useState<any>(null);
17
+ const { UserInfo } = useSession();
18
+ const CurrentOrganizationRanks = useSelector(
19
+ (state: any) => state.commonStores.stores.CurrentOrganizationRanks.data
20
+ );
21
+ const CurrentOrganizationUnits = useSelector(
22
+ (state: any) => state.commonStores.stores.CurrentOrganizationUnits.data
23
+ );
24
+ const [data, setData] = useState([]);
25
+ const apiActions = useApiActions({
26
+ commonStoreKey: "persons",
27
+ deleteById: "api/v1/admin/person",
28
+ save: "api/v1/admin/person",
29
+ findById: "api/v1/admin/person",
30
+ setData: setData,
31
+ });
32
+ const [selectedRecord, setSelectedRecord] = useState<any>(null);
33
+ const {
34
+ Window: OrganizationMembersWindow,
35
+ setWindowState: setOrganizationMemberWindowState,
36
+ } = useWindow({
37
+ windowTitle: "Organizations Membership",
38
+ windowIcon: "globe",
39
+ });
40
+ const {
41
+ Window: OrganizationMemberRolesWindow,
42
+ setWindowState: setOrganizationMemberRolesWindowState,
43
+ } = useWindow({
44
+ windowIcon: "tag",
45
+ windowTitle: "Organization Member Roles",
46
+ width: "50%",
47
+ });
48
+ const {
49
+ Window: ChangePasswordWindow,
50
+ setWindowState: setChangePasswordWindow,
51
+ } = useWindow({
52
+ windowIcon: "key",
53
+ windowTitle: "Change Password",
54
+ width: "fit-content",
55
+ height: "fit-content",
56
+ });
57
+
58
+ const formElements: Array<FormElementProps> = [
59
+ {
60
+ type: "field",
61
+ mode: "props",
62
+ props: {
63
+ hidden: true,
64
+ fieldLabel: "id",
65
+ fieldName: "id",
66
+ gridProps: {
67
+ hidden: true,
68
+ },
69
+ required: false,
70
+ fieldType: "number",
71
+ },
72
+ },
73
+ {
74
+ type: "field",
75
+ mode: "props",
76
+ props: {
77
+ hidden: true,
78
+ fieldLabel: "organizationMemberId",
79
+ fieldName: "organizationMemberId",
80
+ gridProps: {
81
+ hidden: true,
82
+ },
83
+ required: false,
84
+ fieldType: "number",
85
+ },
86
+ },
87
+ {
88
+ type: "field",
89
+ mode: "props",
90
+ props: {
91
+ fieldLabel: "Image",
92
+ fieldName: "custom",
93
+ fieldType: "custom",
94
+ gridProps: {
95
+ muiProps: {
96
+ align: "center",
97
+ headerAlign: "center",
98
+ renderCell: (params) => {
99
+ return (
100
+ <Box
101
+ sx={{
102
+ display: "flex",
103
+ alignItems: "center",
104
+ justifyContent: "center",
105
+ height: "100%",
106
+ }}
107
+ >
108
+ <AttachmentImageViewer
109
+ showAsAvatar={true}
110
+ attachmentCode="EMPLOYEE_PHOTOS"
111
+ refKey={params.id + ""}
112
+ />
113
+ </Box>
114
+ );
115
+ },
116
+ },
117
+ },
118
+ },
119
+ },
120
+ {
121
+ type: "field",
122
+ mode: "props",
123
+ props: {
124
+ fieldLabel: "PERSON_EMPLOYEE_AR_NAME",
125
+ fieldName: "employeeArName",
126
+ required: true,
127
+ fieldType: "text",
128
+ },
129
+ },
130
+ {
131
+ type: "field",
132
+ mode: "props",
133
+ props: {
134
+ fieldLabel: "PERSON_EMPLOYEE_EN_NAME",
135
+ fieldName: "employeeEnName",
136
+ required: true,
137
+ fieldType: "text",
138
+ },
139
+ },
140
+ {
141
+ type: "field",
142
+ mode: "props",
143
+ props: {
144
+ fieldLabel: "PERSON_EMAIL",
145
+ fieldName: "email",
146
+ required: false,
147
+ fieldType: "text",
148
+ },
149
+ },
150
+ {
151
+ type: "field",
152
+ mode: "props",
153
+ props: {
154
+ fieldLabel: "PERSON_MOBILE_NUMBER",
155
+ fieldName: "mobileNumber",
156
+ required: false,
157
+ fieldType: "text",
158
+ },
159
+ },
160
+ {
161
+ type: "field",
162
+ mode: "props",
163
+ props: {
164
+ fieldLabel: "ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID",
165
+ fieldName: "organizationRankId",
166
+ required: false,
167
+ fieldType: "combobox",
168
+ options: CurrentOrganizationRanks,
169
+ optionValueField: "id",
170
+ optionDisplayField: "rankEnName",
171
+ },
172
+ },
173
+ {
174
+ type: "field",
175
+ mode: "props",
176
+ props: {
177
+ fieldLabel: "ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID",
178
+ fieldName: "organizationUnitId",
179
+ required: false,
180
+ fieldType: "combobox",
181
+ options: CurrentOrganizationUnits,
182
+ optionValueField: "id",
183
+ optionDisplayField: "organizationUnitEnName",
184
+ },
185
+ },
186
+ {
187
+ type: "field",
188
+ mode: "props",
189
+ props: {
190
+ fieldLabel: "Membership number",
191
+ fieldName: "organizationMembershipNumber",
192
+ fieldType: "text",
193
+ },
194
+ },
195
+ {
196
+ type: "field",
197
+ mode: "props",
198
+ props: {
199
+ hidden: true,
200
+ gridProps: { hidden: true },
201
+ fieldLabel: "PERSON_PASSWORD",
202
+ fieldName: "password",
203
+ required: false,
204
+ fieldType: "text",
205
+ },
206
+ },
207
+ {
208
+ type: "field",
209
+ mode: "props",
210
+ props: {
211
+ fieldLabel: "PERSON_USERNAME",
212
+ fieldName: "username",
213
+ required: false,
214
+ fieldType: "text",
215
+ },
216
+ },
217
+ {
218
+ type: "field",
219
+ mode: "props",
220
+ props: {
221
+ hidden: true,
222
+ fieldLabel: "Ref Source",
223
+ fieldName: "refSource",
224
+ required: false,
225
+ fieldType: "text",
226
+ },
227
+ },
228
+ {
229
+ type: "field",
230
+ mode: "props",
231
+ props: {
232
+ hidden: true,
233
+ fieldLabel: "PERSON_EMPLOYEE_NUMBER",
234
+ fieldName: "refSyncNumber",
235
+ required: false,
236
+ fieldType: "text",
237
+ },
238
+ },
239
+ {
240
+ type: "field",
241
+ mode: "props",
242
+ props: {
243
+ fieldLabel: "PERSON_IS_ACTIVE",
244
+ fieldName: "isActive",
245
+ required: false,
246
+ fieldType: "checkbox",
247
+ },
248
+ },
249
+ ];
250
+
251
+ return (
252
+ <>
253
+ <OrganizationMemberRolesWindow>
254
+ <OrgMemberRoleForm
255
+ selectedRecord={selectedRecord}
256
+ closeModalFn={() => {
257
+ setOrganizationMemberRolesWindowState(false);
258
+ }}
259
+ />
260
+ </OrganizationMemberRolesWindow>
261
+ <OrganizationMembersWindow>
262
+ <OrganizationMemberGrid selectedPerson={selectedPerson} />
263
+ </OrganizationMembersWindow>
264
+ <ChangePasswordWindow>
265
+ <ChangePasswordPanel
266
+ selectedPerson={selectedPerson}
267
+ isSelfService={false}
268
+ onSuccessCallBk={() => {
269
+ setChangePasswordWindow(false);
270
+ }}
271
+ />
272
+ </ChangePasswordWindow>
273
+ <TemplateGrid
274
+ attachment={{ attachmentCode: "EMPLOYEE_PHOTOS" }}
275
+ apiActions={apiActions}
276
+ data={data}
277
+ setData={setData}
278
+ editMode={{
279
+ editMode: "modal",
280
+ specs: {
281
+ modalIcon: "user",
282
+ modalTitle: "Person Profile",
283
+ modalWidth: 300,
284
+ },
285
+ }}
286
+ formElements={formElements}
287
+ keyColumnName={"id"}
288
+ gridTitle="PERSON_PLURAL"
289
+ rowActions={[
290
+ {
291
+ icon: "key",
292
+ label: "Change User Password",
293
+ actionFn: async (data) => {
294
+ setSelectedPerson(data);
295
+ setChangePasswordWindow(true);
296
+ },
297
+ },
298
+ {
299
+ icon: "tags",
300
+ label: "Current Organization User Roles",
301
+ isActionDisabledForRecord: (data) => {
302
+ return !data?.organizationMemberId;
303
+ },
304
+ actionFn: async (data) => {
305
+ setSelectedRecord({
306
+ organizationId: UserInfo?.currentOrganization?.id,
307
+ id: data?.organizationMemberId,
308
+ });
309
+ setOrganizationMemberRolesWindowState(true);
310
+ },
311
+ },
312
+ {
313
+ icon: "globe",
314
+ label: "User Organizations",
315
+ actionFn: async (data) => {
316
+ setSelectedPerson(data);
317
+ setOrganizationMemberWindowState(true);
318
+ },
319
+ },
320
+ ]}
321
+ girdIcon="users"
322
+ editAction={{
323
+ isEnabled: true,
324
+ authority: "PERSON_EDIT",
325
+ preActionValidation: (data) => {
326
+ if (
327
+ data.refSource != undefined &&
328
+ data.refSource != null &&
329
+ data.refSource != ""
330
+ ) {
331
+ toast.error(
332
+ "This Person Was synced from other system therefore you can't modify this record"
333
+ );
334
+ return false;
335
+ }
336
+ return true;
337
+ },
338
+ }}
339
+ deleteAction={{
340
+ isEnabled: true,
341
+ authority: "PERSON_DELETE",
342
+ preActionValidation: (data) => {
343
+ if (
344
+ data.refSource != undefined &&
345
+ data.refSource != null &&
346
+ data.refSource != ""
347
+ ) {
348
+ toast.error(
349
+ "This Person Was synced from other system therefore you can't modify this record"
350
+ );
351
+ return false;
352
+ }
353
+ return true;
354
+ },
355
+ }}
356
+ />
357
+ </>
358
+ );
359
+ };
360
+
361
+ export default CustomPersonGrid;