@asaleh37/ui-base 25.12.10 → 25.12.16
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/__ODockerfile +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +107 -107
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +112 -112
- package/dist/index.mjs.map +1 -1
- package/package-lock.json/342/200/216 +9040 -0
- package/package.json +1 -1
- package/src/components/administration/admin/CustomPersonGrid.tsx +361 -0
- package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -0
- package/src/components/administration/admin/OrganizationMemberGrid.tsx +63 -49
- package/src/components/administration/admin/PersonGrid.tsx +10 -344
- package/src/components/common/AzureLogin.tsx +2 -2
- package/src/components/common/Login.tsx +2 -2
- package/src/layout/NavigationTree.tsx +8 -1
- package/src/layout/TopBar.tsx +72 -55
- package/src/main.tsx +2 -1
- package/src/navigationItems/Administration/adminNavigationItems.tsx +1 -1
- package/src/redux/features/common/AppInfoSlice.ts +4 -0
|
@@ -5,6 +5,7 @@ import { FormElementProps } from "../../templates/DataEntryTemplates/DataEntryTy
|
|
|
5
5
|
import { useTranslation } from "react-i18next";
|
|
6
6
|
import { useSelector } from "react-redux";
|
|
7
7
|
import OrgMemberRoleForm from "./OrgMemberRoleForm";
|
|
8
|
+
import { AppInfo } from "../../../redux/features/common/AppInfoSlice";
|
|
8
9
|
|
|
9
10
|
type OrganizationMemberGridProps = {
|
|
10
11
|
selectedPerson: any;
|
|
@@ -12,6 +13,7 @@ type OrganizationMemberGridProps = {
|
|
|
12
13
|
const OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (
|
|
13
14
|
props
|
|
14
15
|
) => {
|
|
16
|
+
const appInfo: AppInfo = useSelector((state: any) => state.AppInfo.value);
|
|
15
17
|
const [selectedRecord, setSelectedRecord] = useState<any>(null);
|
|
16
18
|
const {
|
|
17
19
|
Window: OrganizationMemberRolesWindow,
|
|
@@ -65,7 +67,7 @@ const OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (
|
|
|
65
67
|
type: "field",
|
|
66
68
|
mode: "props",
|
|
67
69
|
props: {
|
|
68
|
-
fieldLabel: "
|
|
70
|
+
fieldLabel: "Organization",
|
|
69
71
|
fieldName: "organizationId",
|
|
70
72
|
required: true,
|
|
71
73
|
fieldType: "combobox",
|
|
@@ -74,57 +76,61 @@ const OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (
|
|
|
74
76
|
optionDisplayField: "organizationEnName",
|
|
75
77
|
},
|
|
76
78
|
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
if (appInfo?.isUserProfileManaged) {
|
|
82
|
+
formElements.push(
|
|
83
|
+
{
|
|
84
|
+
type: "field",
|
|
85
|
+
mode: "props",
|
|
86
|
+
props: {
|
|
87
|
+
fieldLabel: "ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID",
|
|
88
|
+
fieldName: "organizationRankId",
|
|
89
|
+
required: false,
|
|
90
|
+
fieldType: "combobox",
|
|
91
|
+
options: SystemOrganizationRanks,
|
|
92
|
+
optionValueField: "id",
|
|
93
|
+
optionDisplayField: "rankDisplay",
|
|
94
|
+
},
|
|
88
95
|
},
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
{
|
|
97
|
+
type: "field",
|
|
98
|
+
mode: "props",
|
|
99
|
+
props: {
|
|
100
|
+
fieldLabel: "ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID",
|
|
101
|
+
fieldName: "organizationUnitId",
|
|
102
|
+
required: false,
|
|
103
|
+
fieldType: "combobox",
|
|
104
|
+
options: SystemOrganizationUnits,
|
|
105
|
+
optionValueField: "id",
|
|
106
|
+
optionDisplayField: "fullPath",
|
|
107
|
+
},
|
|
101
108
|
},
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
{
|
|
110
|
+
type: "field",
|
|
111
|
+
mode: "props",
|
|
112
|
+
props: {
|
|
113
|
+
fieldLabel: "Membership number",
|
|
114
|
+
fieldName: "organizationMembershipNumber",
|
|
115
|
+
fieldType: "text",
|
|
116
|
+
},
|
|
110
117
|
},
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
props: {
|
|
116
|
-
hidden: true,
|
|
117
|
-
gridProps: {
|
|
118
|
+
{
|
|
119
|
+
type: "field",
|
|
120
|
+
mode: "props",
|
|
121
|
+
props: {
|
|
118
122
|
hidden: true,
|
|
123
|
+
gridProps: {
|
|
124
|
+
hidden: true,
|
|
125
|
+
},
|
|
126
|
+
fieldLabel: "ORGANIZATION_MEMBER_PERSON_ID",
|
|
127
|
+
fieldName: "personId",
|
|
128
|
+
required: false,
|
|
129
|
+
fieldType: "number",
|
|
119
130
|
},
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
fieldType: "number",
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
];
|
|
127
|
-
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
128
134
|
return (
|
|
129
135
|
<>
|
|
130
136
|
<OrganizationMemberRolesWindow>
|
|
@@ -152,7 +158,10 @@ const OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (
|
|
|
152
158
|
},
|
|
153
159
|
},
|
|
154
160
|
]}
|
|
155
|
-
gridLoadParametersValues={{
|
|
161
|
+
gridLoadParametersValues={{
|
|
162
|
+
personId: props.selectedPerson.id,
|
|
163
|
+
employeeNumber: props.selectedPerson.employeeNumber,
|
|
164
|
+
}}
|
|
156
165
|
keyColumnName={"id"}
|
|
157
166
|
gridTitle="ORGANIZATION_MEMBER_PLURAL"
|
|
158
167
|
girdIcon="table-cells"
|
|
@@ -160,7 +169,12 @@ const OrganizationMemberGrid: React.FC<OrganizationMemberGridProps> = (
|
|
|
160
169
|
isEnabled: true,
|
|
161
170
|
authority: "ORGANIZATION_MEMBER_EDIT",
|
|
162
171
|
preActionValidation: async (data) => {
|
|
163
|
-
|
|
172
|
+
if (appInfo?.isUserProfileManaged) {
|
|
173
|
+
data.personId = props.selectedPerson.id;
|
|
174
|
+
} else {
|
|
175
|
+
data.organizationMembershipNumber =
|
|
176
|
+
props.selectedPerson.employeeNumber;
|
|
177
|
+
}
|
|
164
178
|
return true;
|
|
165
179
|
},
|
|
166
180
|
}}
|
|
@@ -10,352 +10,18 @@ import AttachmentImageViewer from "../../templates/attachment/AttachmentImageVie
|
|
|
10
10
|
import { useSelector } from "react-redux";
|
|
11
11
|
import OrgMemberRoleForm from "./OrgMemberRoleForm";
|
|
12
12
|
import ChangePasswordPanel from "./ChangePasswordPanel";
|
|
13
|
+
import { AppInfo } from "../../../redux/features/common/AppInfoSlice";
|
|
14
|
+
import OrgProvidedPersonGrid from "./OrgProvidedPersonGrid";
|
|
15
|
+
import CustomPersonGrid from "./CustomPersonGrid";
|
|
13
16
|
|
|
14
17
|
const PersonGrid: React.FC = () => {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
);
|
|
18
|
+
const appInfo: AppInfo = useSelector((state: any) => state.AppInfo.value);
|
|
19
|
+
if (appInfo?.isUserProfileManaged) {
|
|
20
|
+
return <CustomPersonGrid />;
|
|
21
|
+
} else {
|
|
22
|
+
return <OrgProvidedPersonGrid />;
|
|
23
|
+
|
|
24
|
+
}
|
|
359
25
|
};
|
|
360
26
|
|
|
361
27
|
export default PersonGrid;
|
|
@@ -130,7 +130,7 @@ const AzureLogin: React.FC<AzureLoginProps> = ({ msalInstance }) => {
|
|
|
130
130
|
justifyContent: "center",
|
|
131
131
|
minHeight: "100vh",
|
|
132
132
|
width: "100%",
|
|
133
|
-
backgroundImage:
|
|
133
|
+
backgroundImage: `url('/${appInfo?.loginScreenStyle?.backgroundImageNameInPublicFolder}')`,
|
|
134
134
|
backgroundRepeat: "no-repeat",
|
|
135
135
|
backgroundSize: "cover",
|
|
136
136
|
backgroundPosition: "center",
|
|
@@ -141,7 +141,7 @@ const AzureLogin: React.FC<AzureLoginProps> = ({ msalInstance }) => {
|
|
|
141
141
|
left: 0,
|
|
142
142
|
right: 0,
|
|
143
143
|
bottom: 0,
|
|
144
|
-
backgroundColor:
|
|
144
|
+
backgroundColor: appInfo?.loginScreenStyle?.backgroundColor,
|
|
145
145
|
zIndex: 0,
|
|
146
146
|
},
|
|
147
147
|
}}
|
|
@@ -154,7 +154,7 @@ const Login: React.FC = () => {
|
|
|
154
154
|
justifyContent: "center",
|
|
155
155
|
minHeight: "100vh",
|
|
156
156
|
width: "100%",
|
|
157
|
-
backgroundImage:
|
|
157
|
+
backgroundImage: `url('/${appInfo?.loginScreenStyle?.backgroundImageNameInPublicFolder}')`,
|
|
158
158
|
backgroundRepeat: "no-repeat",
|
|
159
159
|
backgroundSize: "cover",
|
|
160
160
|
backgroundPosition: "center",
|
|
@@ -165,7 +165,7 @@ const Login: React.FC = () => {
|
|
|
165
165
|
left: 0,
|
|
166
166
|
right: 0,
|
|
167
167
|
bottom: 0,
|
|
168
|
-
backgroundColor:
|
|
168
|
+
backgroundColor: appInfo?.loginScreenStyle?.backgroundColor,
|
|
169
169
|
zIndex: 0,
|
|
170
170
|
},
|
|
171
171
|
}}
|
|
@@ -32,6 +32,7 @@ import useSession from "../hooks/UseSession";
|
|
|
32
32
|
import { findNavigationItemById, NavigationItems } from "../navigationItems";
|
|
33
33
|
import { DRAWER_WIDTH } from "../redux/features/common/AppLayoutSlice";
|
|
34
34
|
import { toggleSideBarState } from "../redux/features/common/SideBarSlice";
|
|
35
|
+
import { AppInfo } from "../redux/features/common/AppInfoSlice";
|
|
35
36
|
|
|
36
37
|
function DotIcon() {
|
|
37
38
|
return (
|
|
@@ -232,7 +233,7 @@ const CustomTreeItem = React.forwardRef(function CustomTreeItem(
|
|
|
232
233
|
export default function NavigationTree() {
|
|
233
234
|
const navigate = useNavigate();
|
|
234
235
|
const appLayoutState = useSelector((state: any) => state.AppLayout);
|
|
235
|
-
const AppInfo = useSelector((state: any) => state.AppInfo.value);
|
|
236
|
+
const AppInfo: AppInfo = useSelector((state: any) => state.AppInfo.value);
|
|
236
237
|
const dispatch = useDispatch();
|
|
237
238
|
const isMobile = useIsMobile();
|
|
238
239
|
const toggleSideBar = () => {
|
|
@@ -243,6 +244,12 @@ export default function NavigationTree() {
|
|
|
243
244
|
const filterData = (data) => {
|
|
244
245
|
const parentItems = [];
|
|
245
246
|
for (let parentItem of data) {
|
|
247
|
+
if (
|
|
248
|
+
parentItem.id === "development_admin.organization" &&
|
|
249
|
+
!AppInfo.isUserProfileManaged
|
|
250
|
+
) {
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
246
253
|
if (
|
|
247
254
|
(parentItem.authority === undefined ||
|
|
248
255
|
parentItem.authority == null ||
|