ui-soxo-bootstrap-core 2.6.1-dev.2 → 2.6.1-dev.20
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/core/components/extra-info/extra-info-details.js +2 -2
- package/core/components/index.js +2 -11
- package/core/components/landing-api/landing-api.js +91 -15
- package/core/components/landing-api/landing-api.scss +22 -0
- package/core/components/license-management/license-alert.js +97 -0
- package/core/lib/Store.js +3 -3
- package/core/lib/components/global-header/animations.js +78 -4
- package/core/lib/components/global-header/global-header.js +224 -255
- package/core/lib/components/global-header/global-header.scss +162 -24
- package/core/lib/components/sidemenu/animations.js +84 -2
- package/core/lib/components/sidemenu/sidemenu.js +191 -65
- package/core/lib/components/sidemenu/sidemenu.scss +221 -14
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +14 -8
- package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +1 -1
- package/core/lib/elements/basic/menu-tree/menu-tree.js +26 -13
- package/core/lib/models/forms/components/form-creator/form-creator.scss +4 -3
- package/core/lib/models/menus/components/menu-list/menu-list.js +424 -467
- package/core/lib/models/process/components/process-dashboard/process-dashboard.js +469 -3
- package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +4 -0
- package/core/lib/pages/change-password/change-password.js +17 -24
- package/core/lib/pages/change-password/change-password.scss +45 -48
- package/core/lib/pages/login/commnication-mode-selection.js +2 -2
- package/core/lib/pages/login/login.js +47 -62
- package/core/lib/pages/login/login.scss +9 -0
- package/core/lib/pages/login/reset-password.js +17 -17
- package/core/lib/pages/login/reset-password.scss +10 -1
- package/core/lib/pages/profile/themes.json +4 -4
- package/core/lib/utils/api/api.utils.js +30 -18
- package/core/lib/utils/common/common.utils.js +49 -35
- package/core/lib/utils/http/http.utils.js +2 -1
- package/core/lib/utils/index.js +4 -1
- package/core/models/base/base.js +7 -3
- package/core/models/core-scripts/core-scripts.js +134 -126
- package/core/models/doctor/components/doctor-add/doctor-add.js +9 -4
- package/core/models/menus/components/menu-add/menu-add.js +1 -1
- package/core/models/menus/components/menu-lists/menu-lists.js +53 -54
- package/core/models/menus/menus.js +27 -2
- package/core/models/roles/components/role-add/role-add.js +92 -59
- package/core/models/roles/components/role-list/role-list.js +1 -1
- package/core/models/staff/components/staff-add/staff-add.js +20 -32
- package/core/models/users/components/assign-role/assign-role.js +145 -50
- package/core/models/users/components/assign-role/assign-role.scss +209 -45
- package/core/models/users/components/assign-role/avatar-props.js +45 -0
- package/core/models/users/components/user-add/user-add.js +46 -55
- package/core/models/users/components/user-add/user-edit.js +25 -4
- package/core/models/users/users.js +9 -1
- package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +1 -1
- package/core/modules/reporting/components/reporting-dashboard/README.md +316 -0
- package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.js +147 -0
- package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.scss +76 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.js +90 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.test.js +74 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.js +252 -0
- package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.test.js +126 -0
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +326 -436
- package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +7 -0
- package/core/modules/steps/action-buttons.js +33 -15
- package/core/modules/steps/action-buttons.scss +55 -9
- package/core/modules/steps/chat-assistant.js +141 -0
- package/core/modules/steps/openai-realtime.js +275 -0
- package/core/modules/steps/readme.md +167 -0
- package/core/modules/steps/steps.js +1078 -57
- package/core/modules/steps/steps.scss +539 -90
- package/core/modules/steps/timeline.js +21 -19
- package/core/modules/steps/voice-navigation.js +709 -0
- package/package.json +2 -1
|
@@ -1,4 +1,52 @@
|
|
|
1
1
|
.sidemenu {
|
|
2
|
+
.side-loader-shell {
|
|
3
|
+
margin: 14px 12px 10px;
|
|
4
|
+
padding: 10px;
|
|
5
|
+
border-radius: 14px;
|
|
6
|
+
border: 1px solid rgba(222, 229, 239, 0.9);
|
|
7
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(248, 250, 255, 0.95) 100%);
|
|
8
|
+
box-shadow: 0 8px 18px rgba(16, 24, 40, 0.05);
|
|
9
|
+
display: grid;
|
|
10
|
+
gap: 8px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.side-loader-chip,
|
|
14
|
+
.side-loader-row {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 10px;
|
|
18
|
+
min-height: 30px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.side-loader-dot {
|
|
22
|
+
width: 14px;
|
|
23
|
+
height: 14px;
|
|
24
|
+
border-radius: 999px;
|
|
25
|
+
background: linear-gradient(90deg, #eef1f5 0%, #f7f8fb 50%, #eef1f5 100%);
|
|
26
|
+
background-size: 220% 100%;
|
|
27
|
+
animation: side-shimmer 1.4s linear infinite;
|
|
28
|
+
flex: 0 0 auto;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.side-loader-line {
|
|
32
|
+
height: 10px;
|
|
33
|
+
border-radius: 999px;
|
|
34
|
+
width: 100%;
|
|
35
|
+
background: linear-gradient(90deg, #edf0f4 0%, #f8f9fb 50%, #edf0f4 100%);
|
|
36
|
+
background-size: 220% 100%;
|
|
37
|
+
animation: side-shimmer 1.4s linear infinite;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.side-loader-list {
|
|
41
|
+
margin: 8px;
|
|
42
|
+
padding: 8px 6px 18px;
|
|
43
|
+
border-radius: 14px;
|
|
44
|
+
border: 1px solid rgba(229, 234, 242, 0.85);
|
|
45
|
+
background: rgba(255, 255, 255, 0.88);
|
|
46
|
+
display: grid;
|
|
47
|
+
gap: 4px;
|
|
48
|
+
}
|
|
49
|
+
|
|
2
50
|
.intro {
|
|
3
51
|
.logo-wrapper {
|
|
4
52
|
border-bottom: none;
|
|
@@ -40,18 +88,26 @@
|
|
|
40
88
|
padding: 5px 16px;
|
|
41
89
|
position: fixed;
|
|
42
90
|
z-index: 1000;
|
|
43
|
-
width: 17%;
|
|
44
|
-
background:
|
|
91
|
+
// width: 17%;
|
|
92
|
+
background: rgba(255, 255, 255, 0.95);
|
|
93
|
+
backdrop-filter: blur(10px);
|
|
45
94
|
// border-bottom: 1.5px solid #24aeb8;
|
|
46
95
|
&.close {
|
|
47
96
|
width: 6% !important;
|
|
48
97
|
}
|
|
49
98
|
|
|
50
99
|
.logo-wrapper {
|
|
100
|
+
display: flex;
|
|
101
|
+
align-items: center;
|
|
102
|
+
justify-content: space-between;
|
|
103
|
+
gap: 8px;
|
|
51
104
|
// height: 15px;
|
|
52
105
|
// border-bottom: 1px solid #eaeaea;
|
|
53
106
|
|
|
54
107
|
.sidemenu-brand-logo {
|
|
108
|
+
transition:
|
|
109
|
+
transform 220ms ease,
|
|
110
|
+
filter 220ms ease;
|
|
55
111
|
// width: 50%;
|
|
56
112
|
// margin: 10px;
|
|
57
113
|
// width: 200px;
|
|
@@ -75,6 +131,11 @@
|
|
|
75
131
|
}
|
|
76
132
|
|
|
77
133
|
cursor: pointer;
|
|
134
|
+
|
|
135
|
+
&:hover {
|
|
136
|
+
transform: translateY(-1px) scale(1.01);
|
|
137
|
+
filter: saturate(1.05);
|
|
138
|
+
}
|
|
78
139
|
}
|
|
79
140
|
}
|
|
80
141
|
|
|
@@ -94,20 +155,22 @@
|
|
|
94
155
|
}
|
|
95
156
|
|
|
96
157
|
.menu-item {
|
|
97
|
-
padding-top:
|
|
158
|
+
padding-top: 8px;
|
|
98
159
|
// height: calc(100vh - 48px); /* Adjust height */
|
|
99
160
|
height: 100vh;
|
|
100
161
|
margin-top: 0px;
|
|
101
162
|
width: 256px;
|
|
102
163
|
top: 48px;
|
|
103
|
-
border-
|
|
164
|
+
border-right: 1px solid rgba(226, 231, 239, 0.9);
|
|
165
|
+
border-bottom: 1px solid rgba(240, 243, 248, 0.8);
|
|
104
166
|
position: fixed;
|
|
105
167
|
height: 100vh;
|
|
106
168
|
margin-top: 0;
|
|
107
169
|
overflow-y: scroll;
|
|
108
170
|
overflow-x: hidden;
|
|
109
171
|
width: 211px;
|
|
110
|
-
padding-bottom:
|
|
172
|
+
padding-bottom: 24px;
|
|
173
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.97) 0%, rgba(249, 250, 252, 0.98) 100%);
|
|
111
174
|
|
|
112
175
|
/* Custom Scrollbar like macOS */
|
|
113
176
|
scrollbar-width: thin; /* For Firefox */
|
|
@@ -142,18 +205,57 @@
|
|
|
142
205
|
margin: 80px;
|
|
143
206
|
}
|
|
144
207
|
|
|
208
|
+
.menu-motion-shell {
|
|
209
|
+
padding: 6px 6px 14px;
|
|
210
|
+
}
|
|
211
|
+
|
|
145
212
|
.ant-menu-inline {
|
|
146
213
|
border: none !important;
|
|
147
214
|
}
|
|
148
215
|
|
|
149
216
|
.menu-collapsed {
|
|
150
|
-
width:
|
|
217
|
+
width: 100%;
|
|
218
|
+
min-width: 0;
|
|
151
219
|
display: flex;
|
|
152
220
|
align-items: center;
|
|
153
221
|
gap: 8px;
|
|
154
222
|
cursor: pointer;
|
|
155
223
|
}
|
|
156
224
|
|
|
225
|
+
.menu-icon-wrap {
|
|
226
|
+
width: 24px;
|
|
227
|
+
height: 24px;
|
|
228
|
+
min-width: 24px;
|
|
229
|
+
border-radius: 8px;
|
|
230
|
+
display: inline-flex;
|
|
231
|
+
align-items: center;
|
|
232
|
+
justify-content: center;
|
|
233
|
+
color: inherit;
|
|
234
|
+
transition:
|
|
235
|
+
background-color 220ms ease,
|
|
236
|
+
transform 220ms ease;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.menu-image-icon {
|
|
240
|
+
width: 18px;
|
|
241
|
+
height: 18px;
|
|
242
|
+
object-fit: contain;
|
|
243
|
+
display: block;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.menu-label-wrap {
|
|
247
|
+
min-width: 0;
|
|
248
|
+
display: inline-flex;
|
|
249
|
+
align-items: center;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.caption,
|
|
253
|
+
.menu-label-wrap {
|
|
254
|
+
overflow: hidden;
|
|
255
|
+
text-overflow: ellipsis;
|
|
256
|
+
white-space: nowrap;
|
|
257
|
+
}
|
|
258
|
+
|
|
157
259
|
.menu-collapsed .anticon {
|
|
158
260
|
margin-right: 8px;
|
|
159
261
|
}
|
|
@@ -178,6 +280,102 @@
|
|
|
178
280
|
/* Style selected item */
|
|
179
281
|
.ant-menu {
|
|
180
282
|
background-color: transparent !important;
|
|
283
|
+
padding: 4px 0 28px;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.ant-menu-item,
|
|
287
|
+
.ant-menu-submenu-title {
|
|
288
|
+
width: calc(100% - 12px) !important;
|
|
289
|
+
margin: 3px 6px !important;
|
|
290
|
+
padding-right: 10px !important;
|
|
291
|
+
border-radius: 12px;
|
|
292
|
+
height: 40px !important;
|
|
293
|
+
line-height: 40px !important;
|
|
294
|
+
transition:
|
|
295
|
+
background-color 180ms ease,
|
|
296
|
+
box-shadow 180ms ease,
|
|
297
|
+
transform 180ms ease;
|
|
298
|
+
border: 1px solid transparent;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.ant-menu-item::after,
|
|
302
|
+
.ant-menu-submenu-title::after {
|
|
303
|
+
display: none !important;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.ant-menu-submenu-arrow {
|
|
307
|
+
transition:
|
|
308
|
+
transform 200ms ease,
|
|
309
|
+
opacity 200ms ease;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.ant-menu-item:hover,
|
|
313
|
+
.ant-menu-submenu-title:hover {
|
|
314
|
+
background: linear-gradient(180deg, rgba(247, 248, 251, 0.98) 0%, rgba(242, 244, 248, 0.98) 100%) !important;
|
|
315
|
+
border-color: rgba(224, 229, 238, 0.95);
|
|
316
|
+
transform: translateX(1px);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.ant-menu-item:hover .menu-icon-wrap,
|
|
320
|
+
.ant-menu-submenu-title:hover .menu-icon-wrap {
|
|
321
|
+
background: rgba(100, 116, 139, 0.1);
|
|
322
|
+
transform: scale(1.03);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.ant-menu-item-selected,
|
|
326
|
+
.ant-menu-submenu-selected > .ant-menu-submenu-title {
|
|
327
|
+
background: linear-gradient(180deg, rgba(244, 247, 251, 0.98) 0%, rgba(238, 242, 247, 0.98) 100%) !important;
|
|
328
|
+
border-color: rgba(214, 222, 233, 0.95) !important;
|
|
329
|
+
box-shadow:
|
|
330
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.7),
|
|
331
|
+
0 2px 8px rgba(71, 85, 105, 0.08);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.ant-menu-item-selected::before,
|
|
335
|
+
.ant-menu-submenu-selected > .ant-menu-submenu-title::before {
|
|
336
|
+
content: '';
|
|
337
|
+
position: absolute;
|
|
338
|
+
left: 6px;
|
|
339
|
+
top: 8px;
|
|
340
|
+
bottom: 8px;
|
|
341
|
+
width: 3px;
|
|
342
|
+
border-radius: 999px;
|
|
343
|
+
background: linear-gradient(180deg, #64748b 0%, #475569 100%);
|
|
344
|
+
opacity: 0.95;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.ant-menu-sub.ant-menu-inline {
|
|
348
|
+
background: transparent !important;
|
|
349
|
+
padding-top: 2px;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.ant-menu-sub.ant-menu-inline > .ant-menu-item {
|
|
353
|
+
height: 36px !important;
|
|
354
|
+
line-height: 36px !important;
|
|
355
|
+
border-radius: 10px;
|
|
356
|
+
margin-left: 18px !important;
|
|
357
|
+
width: calc(100% - 24px) !important;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.ant-menu-inline-collapsed > .ant-menu-item,
|
|
361
|
+
.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
|
|
362
|
+
padding-inline: calc(50% - 12px) !important;
|
|
363
|
+
width: calc(100% - 12px) !important;
|
|
364
|
+
margin: 4px 6px !important;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.ant-menu-inline-collapsed .menu-collapsed {
|
|
368
|
+
justify-content: center;
|
|
369
|
+
gap: 0;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.ant-menu-inline-collapsed .menu-label-wrap {
|
|
373
|
+
display: none !important;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.ant-menu-inline-collapsed .menu-icon-wrap,
|
|
377
|
+
.ant-menu-inline-collapsed .menu-collapsed .anticon {
|
|
378
|
+
margin-right: 0 !important;
|
|
181
379
|
}
|
|
182
380
|
// .ant-menu-inline .ant-menu-item::after{
|
|
183
381
|
// border-right: none;
|
|
@@ -232,6 +430,15 @@
|
|
|
232
430
|
}
|
|
233
431
|
}
|
|
234
432
|
}
|
|
433
|
+
|
|
434
|
+
@keyframes side-shimmer {
|
|
435
|
+
0% {
|
|
436
|
+
background-position: 200% 0;
|
|
437
|
+
}
|
|
438
|
+
100% {
|
|
439
|
+
background-position: -20% 0;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
235
442
|
@media only screen and (max-width: 768px) {
|
|
236
443
|
.sidemenu {
|
|
237
444
|
// width: 100% !important;
|
|
@@ -245,7 +452,7 @@
|
|
|
245
452
|
.intro {
|
|
246
453
|
width: 210px;
|
|
247
454
|
height: 60px;
|
|
248
|
-
padding:
|
|
455
|
+
padding: 6px 8px;
|
|
249
456
|
// width: 100% !important;
|
|
250
457
|
// padding: 10px 16px;
|
|
251
458
|
}
|
|
@@ -253,6 +460,7 @@
|
|
|
253
460
|
.menu-item {
|
|
254
461
|
width: 100% !important;
|
|
255
462
|
top: 62px;
|
|
463
|
+
border-right: none;
|
|
256
464
|
}
|
|
257
465
|
|
|
258
466
|
.sidebar-footer {
|
|
@@ -261,17 +469,16 @@
|
|
|
261
469
|
}
|
|
262
470
|
}
|
|
263
471
|
|
|
264
|
-
.ant-menu-item:hover {
|
|
265
|
-
background-color: #e6f7ff !important;
|
|
266
|
-
color: #1677ff !important;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
472
|
/* Tooltip styling if needed */
|
|
270
473
|
.ant-tooltip-inner {
|
|
271
474
|
max-width: 200px;
|
|
272
475
|
white-space: nowrap;
|
|
273
476
|
overflow: hidden;
|
|
274
477
|
text-overflow: ellipsis;
|
|
275
|
-
background-color:
|
|
276
|
-
color: #
|
|
478
|
+
background-color: rgba(255, 255, 255, 0.98) !important;
|
|
479
|
+
color: #111827 !important;
|
|
480
|
+
border: 1px solid rgba(224, 229, 238, 0.95);
|
|
481
|
+
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
|
|
482
|
+
border-radius: 10px;
|
|
483
|
+
font-weight: 500;
|
|
277
484
|
}
|
|
@@ -11,7 +11,17 @@ import 'react-phone-input-2/lib/style.css';
|
|
|
11
11
|
import PropTypes from 'prop-types';
|
|
12
12
|
import './phone-input.scss';
|
|
13
13
|
|
|
14
|
-
export default function CountryPhoneInput({
|
|
14
|
+
export default function CountryPhoneInput({
|
|
15
|
+
value,
|
|
16
|
+
onChange,
|
|
17
|
+
disabled,
|
|
18
|
+
disableCountryCode,
|
|
19
|
+
required,
|
|
20
|
+
defaultCountryCode,
|
|
21
|
+
onBlur,
|
|
22
|
+
className,
|
|
23
|
+
onKeyDown,
|
|
24
|
+
}) {
|
|
15
25
|
const inputRef = useRef();
|
|
16
26
|
const hasInitializedRef = useRef(false); // IMPORTANT
|
|
17
27
|
|
|
@@ -21,11 +31,7 @@ export default function CountryPhoneInput({ value, onChange, disabled, disableCo
|
|
|
21
31
|
* run ONLY ONCE when initial value has dial code
|
|
22
32
|
*/
|
|
23
33
|
useEffect(() => {
|
|
24
|
-
if (
|
|
25
|
-
!hasInitializedRef.current &&
|
|
26
|
-
value?.code?.dialCode &&
|
|
27
|
-
value?.value
|
|
28
|
-
) {
|
|
34
|
+
if (!hasInitializedRef.current && value?.code?.dialCode && value?.value) {
|
|
29
35
|
setPhone(value.code.dialCode + value.value);
|
|
30
36
|
hasInitializedRef.current = true; // 👈 mark as done
|
|
31
37
|
}
|
|
@@ -54,7 +60,7 @@ export default function CountryPhoneInput({ value, onChange, disabled, disableCo
|
|
|
54
60
|
// country={disableCountryCode ? false : 'in'}
|
|
55
61
|
value={phone}
|
|
56
62
|
onChange={handleInput}
|
|
57
|
-
inputProps={{ required: required }}
|
|
63
|
+
inputProps={{ required: required, onKeyDown: onKeyDown }}
|
|
58
64
|
disabled={disabled}
|
|
59
65
|
onBlur={onBlur}
|
|
60
66
|
/>
|
|
@@ -73,4 +79,4 @@ CountryPhoneInput.propTypes = {
|
|
|
73
79
|
disableCountryCode: PropTypes.bool,
|
|
74
80
|
/** A boolean indicating whether the input is required or not. This prop is optional. */
|
|
75
81
|
required: PropTypes.bool,
|
|
76
|
-
};
|
|
82
|
+
};
|
|
@@ -102,7 +102,7 @@ export default function DraggableWrapper({ id, index, movePanel, item, dragEnabl
|
|
|
102
102
|
>
|
|
103
103
|
<div style={{ flex: 1 }}>
|
|
104
104
|
{dragEnabled && <span style={{ marginRight: 8 }}>⋮⋮</span>}
|
|
105
|
-
<span>{item.
|
|
105
|
+
<span>{item.caption}</span>
|
|
106
106
|
{dragEnabled ? (
|
|
107
107
|
<span style={{ marginLeft: 8, fontSize: 11, color: '#999' }}>(Level {level})</span>
|
|
108
108
|
) : (
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React from 'react';
|
|
26
|
-
import { Checkbox, Collapse } from 'antd';
|
|
26
|
+
import { Checkbox, Collapse, Tag } from 'antd';
|
|
27
27
|
|
|
28
28
|
const { Panel } = Collapse;
|
|
29
29
|
|
|
@@ -73,11 +73,15 @@ export const MenuTree = ({ menus, selectedMenus = [], toggleMenu, parentId = nul
|
|
|
73
73
|
background: '#fff',
|
|
74
74
|
display: 'flex',
|
|
75
75
|
alignItems: 'center',
|
|
76
|
-
|
|
76
|
+
justifyContent: 'space-between',
|
|
77
77
|
}}
|
|
78
78
|
>
|
|
79
|
-
{
|
|
80
|
-
<
|
|
79
|
+
{/* Left Side */}
|
|
80
|
+
<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
|
|
81
|
+
{showCheckbox && <Checkbox checked={selectedMenus.includes(menu.id)} onChange={(e) => onParentChange(e.target.checked)} />}
|
|
82
|
+
<span>{menu.caption}</span>
|
|
83
|
+
</div>
|
|
84
|
+
<Tag color={menu.is_visible === true ? 'green' : 'blue'}>{menu.is_visible === true ? 'VISIBLE' : 'HIDDEN'}</Tag>{' '}
|
|
81
85
|
</div>
|
|
82
86
|
);
|
|
83
87
|
}
|
|
@@ -91,15 +95,24 @@ export const MenuTree = ({ menus, selectedMenus = [], toggleMenu, parentId = nul
|
|
|
91
95
|
<Panel
|
|
92
96
|
key={menu.id}
|
|
93
97
|
header={
|
|
94
|
-
<div
|
|
95
|
-
{
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
<div
|
|
99
|
+
style={{
|
|
100
|
+
display: 'flex',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
justifyContent: 'space-between',
|
|
103
|
+
}}
|
|
104
|
+
>
|
|
105
|
+
<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
|
|
106
|
+
{showCheckbox && (
|
|
107
|
+
<Checkbox
|
|
108
|
+
checked={children.every((c) => selectedMenus.includes(c.id))}
|
|
109
|
+
indeterminate={children.some((c) => selectedMenus.includes(c.id)) && !children.every((c) => selectedMenus.includes(c.id))}
|
|
110
|
+
onChange={(e) => onParentChange(e.target.checked)}
|
|
111
|
+
/>
|
|
112
|
+
)}
|
|
113
|
+
<span>{menu.caption}</span>
|
|
114
|
+
</div>
|
|
115
|
+
<Tag color={menu.is_visible === true ? 'green' : 'blue'}>{menu.is_visible === true ? 'VISIBLE' : 'HIDDEN'}</Tag>{' '}
|
|
103
116
|
</div>
|
|
104
117
|
}
|
|
105
118
|
>
|