@argusoft/medplat-core 1.0.26 → 1.0.28
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/dist/{AccessRights-CupmTG3T.js → AccessRights-CHu27ZOw.js} +220 -217
- package/dist/AccessRights-CHu27ZOw.js.map +1 -0
- package/dist/{AddEditQueryBuilder-C8ZSkOF0.js → AddEditQueryBuilder-Brdnm6rQ.js} +2 -2
- package/dist/{AddEditQueryBuilder-C8ZSkOF0.js.map → AddEditQueryBuilder-Brdnm6rQ.js.map} +1 -1
- package/dist/{AddFeatures-CqE3v0BN.js → AddFeatures-C0Z29oSd.js} +2 -2
- package/dist/{AddFeatures-CqE3v0BN.js.map → AddFeatures-C0Z29oSd.js.map} +1 -1
- package/dist/{AddLabelModal-CB8E8cYG.js → AddLabelModal-DFllBVcd.js} +2 -2
- package/dist/{AddLabelModal-CB8E8cYG.js.map → AddLabelModal-DFllBVcd.js.map} +1 -1
- package/dist/{AppModal-BKgIwe1h.js → AppModal-CtG2GjD_.js} +2 -2
- package/dist/{AppModal-BKgIwe1h.js.map → AppModal-CtG2GjD_.js.map} +1 -1
- package/dist/{ChangePasswordModalCore-DTYWRTa-.js → ChangePasswordModalCore-CDxkeIIM.js} +2 -2
- package/dist/{ChangePasswordModalCore-DTYWRTa-.js.map → ChangePasswordModalCore-CDxkeIIM.js.map} +1 -1
- package/dist/{EventConfigurations-lPcZGpLi.js → EventConfigurations-kNtAj_WM.js} +76 -76
- package/dist/EventConfigurations-kNtAj_WM.js.map +1 -0
- package/dist/{FeatureMenu-DUZL32RI.js → FeatureMenu-jl7-Tk6y.js} +49 -49
- package/dist/FeatureMenu-jl7-Tk6y.js.map +1 -0
- package/dist/{ImmunizationConfigurationBase-BevKZx_l.js → ImmunizationConfigurationBase-DZGqwda2.js} +470 -470
- package/dist/ImmunizationConfigurationBase-DZGqwda2.js.map +1 -0
- package/dist/{ImmunizationConfigurationsList-K2ddBpPJ.js → ImmunizationConfigurationsList-DdSZicTP.js} +72 -73
- package/dist/{ImmunizationConfigurationsList-K2ddBpPJ.js.map → ImmunizationConfigurationsList-DdSZicTP.js.map} +1 -1
- package/dist/{LanguagesModal-CX3oS8rk.js → LanguagesModal-D6VfaGrl.js} +2 -2
- package/dist/{LanguagesModal-CX3oS8rk.js.map → LanguagesModal-D6VfaGrl.js.map} +1 -1
- package/dist/{ManageNotification-CSl02Wq7.js → ManageNotification-CaBAOhji.js} +2 -2
- package/dist/{ManageNotification-CSl02Wq7.js.map → ManageNotification-CaBAOhji.js.map} +1 -1
- package/dist/{ManageRole-B9bs_T00.js → ManageRole-CGYfglpo.js} +2 -2
- package/dist/{ManageRole-B9bs_T00.js.map → ManageRole-CGYfglpo.js.map} +1 -1
- package/dist/{ManageTranslation-D9IScGhk.js → ManageTranslation-B4C9-lWD.js} +74 -74
- package/dist/ManageTranslation-B4C9-lWD.js.map +1 -0
- package/dist/{ManageUser-AB3_Vfp_.js → ManageUser-AY1EUDLI.js} +600 -601
- package/dist/{ManageUser-AB3_Vfp_.js.map → ManageUser-AY1EUDLI.js.map} +1 -1
- package/dist/{NotificationList-D1U1LYnz.js → NotificationList-C3Vb_jKU.js} +73 -73
- package/dist/NotificationList-C3Vb_jKU.js.map +1 -0
- package/dist/{QueryBuilder-DI0wCJbz.js → QueryBuilder-z7eqfd7D.js} +117 -119
- package/dist/QueryBuilder-z7eqfd7D.js.map +1 -0
- package/dist/{QueryManagement-CRykYGum.js → QueryManagement-BIhEDKuA.js} +114 -114
- package/dist/QueryManagement-BIhEDKuA.js.map +1 -0
- package/dist/{RoleManagement-BIiW9uTq.js → RoleManagement-BPl2cE27.js} +99 -99
- package/dist/RoleManagement-BPl2cE27.js.map +1 -0
- package/dist/{SubMenu-CM_4wNCR.js → SubMenu-DYxAPH2Z.js} +34 -34
- package/dist/SubMenu-DYxAPH2Z.js.map +1 -0
- package/dist/{UserList-2gGuDgNa.js → UserList-Bc8gYxRL.js} +397 -400
- package/dist/UserList-Bc8gYxRL.js.map +1 -0
- package/dist/{WidgetList-B7X8Awkg.js → WidgetList-Dw_FmbbE.js} +26 -26
- package/dist/WidgetList-Dw_FmbbE.js.map +1 -0
- package/dist/index.js +11 -11
- package/package.json +1 -1
- package/dist/AccessRights-CupmTG3T.js.map +0 -1
- package/dist/EventConfigurations-lPcZGpLi.js.map +0 -1
- package/dist/FeatureMenu-DUZL32RI.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-BevKZx_l.js.map +0 -1
- package/dist/ManageTranslation-D9IScGhk.js.map +0 -1
- package/dist/NotificationList-D1U1LYnz.js.map +0 -1
- package/dist/QueryBuilder-DI0wCJbz.js.map +0 -1
- package/dist/QueryManagement-CRykYGum.js.map +0 -1
- package/dist/RoleManagement-BIiW9uTq.js.map +0 -1
- package/dist/SubMenu-CM_4wNCR.js.map +0 -1
- package/dist/UserList-2gGuDgNa.js.map +0 -1
- package/dist/WidgetList-B7X8Awkg.js.map +0 -1
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { jsx as e, jsxs as n, Fragment as Z } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
2
|
+
import { useState as g, useMemo as w, useCallback as _, useEffect as D, Suspense as L, startTransition as ee, lazy as E } from "react";
|
|
3
3
|
import { useTranslateProvider as ae } from "@/common/languageTranslator/TranslationContext";
|
|
4
4
|
import { g as te } from "./Features-CObdzJp_.js";
|
|
5
5
|
import { showToast as se } from "@/common/toaster/toaster";
|
|
6
6
|
import ne from "@/hooks/useTrackEvent";
|
|
7
7
|
import { useTheme as re, Card as P, Typography as S, Tabs as le, Tab as oe, Button as $ } from "@mui/material";
|
|
8
8
|
import p from "@mui/material/Grid2";
|
|
9
|
-
import { useSelector as
|
|
10
|
-
import { useNavigate as
|
|
9
|
+
import { useSelector as m, useDispatch as ie } from "react-redux";
|
|
10
|
+
import { useNavigate as ue } from "react-router-dom";
|
|
11
11
|
import { Box as B } from "@mui/system";
|
|
12
|
-
import { FontAwesomeIcon as
|
|
12
|
+
import { FontAwesomeIcon as me } from "@fortawesome/react-fontawesome";
|
|
13
13
|
import { faGear as ce } from "@fortawesome/free-solid-svg-icons";
|
|
14
14
|
import f from "prop-types";
|
|
15
|
-
import { getUseSkeleton as
|
|
15
|
+
import { getUseSkeleton as F } from "@/store/reducers/SkeletonReducer";
|
|
16
16
|
import { setSubMenuFeatureVal as de, setSubMenuGroupName as pe, setSubMenuId as fe } from "@/store/reducers/FeatureReducer";
|
|
17
|
-
import { getAssignedFeatures as
|
|
18
|
-
import
|
|
19
|
-
const
|
|
17
|
+
import { getAssignedFeatures as he } from "@/utils/feature";
|
|
18
|
+
import k from "@/common/services/util/GeneralUtil";
|
|
19
|
+
const M = ({ children: l, isLoading: o }) => !m(F) || !o ? l : /* @__PURE__ */ e("div", { className: "flex flex-col mt-6", children: /* @__PURE__ */ n("div", { className: "w-full justify-between flex-wrap flex flex-row", children: [
|
|
20
20
|
/* @__PURE__ */ n("div", { className: "flex-wrap flex flex-row", children: [
|
|
21
21
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
|
|
22
22
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
|
|
@@ -30,128 +30,128 @@ const F = ({ children: l, isLoading: o }) => !u(k) || !o ? l : /* @__PURE__ */ e
|
|
|
30
30
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[32px] w-[100px] m-0.5" })
|
|
31
31
|
] })
|
|
32
32
|
] }) });
|
|
33
|
-
|
|
33
|
+
M.propTypes = {
|
|
34
34
|
children: f.any,
|
|
35
35
|
isLoading: f.any
|
|
36
36
|
};
|
|
37
37
|
f.any, f.any;
|
|
38
|
-
const
|
|
38
|
+
const xe = ({ children: l, isLoading: o }) => !m(F) || !o ? l : /* @__PURE__ */ n("div", { className: "w-full p-2", children: [
|
|
39
39
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[40px] w-full mb-2" }),
|
|
40
40
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[60px] w-full mb-2" }),
|
|
41
41
|
/* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[280px] w-full" })
|
|
42
42
|
] });
|
|
43
|
-
|
|
43
|
+
xe.propTypes = {
|
|
44
44
|
children: f.any,
|
|
45
45
|
isLoading: f.any
|
|
46
46
|
};
|
|
47
|
-
const
|
|
47
|
+
const ge = E(() => import("./AccessRights-CHu27ZOw.js")), be = E(() => import("./SubMenu-DYxAPH2Z.js"));
|
|
48
48
|
function Ne() {
|
|
49
|
-
const l =
|
|
49
|
+
const l = m(F), o = re(), h = ie(), [C, O] = g([]), [i, V] = g(0), c = m((a) => {
|
|
50
50
|
var t;
|
|
51
51
|
return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuId;
|
|
52
|
-
}), I =
|
|
52
|
+
}), I = m(
|
|
53
53
|
(a) => {
|
|
54
54
|
var t;
|
|
55
55
|
return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuGroupName;
|
|
56
56
|
}
|
|
57
|
-
), U =
|
|
57
|
+
), U = m(
|
|
58
58
|
(a) => {
|
|
59
59
|
var t;
|
|
60
60
|
return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuFeatureVal;
|
|
61
61
|
}
|
|
62
|
-
), N =
|
|
63
|
-
() => Object.keys(
|
|
64
|
-
[
|
|
65
|
-
),
|
|
62
|
+
), N = ue(), { user: y } = m((a) => a.Authenticate), { translate: d } = ae(), [u, v] = g(!1), T = ne(), [A, J] = g({}), [s, Y] = g(null), R = (y == null ? void 0 : y.features) || {}, r = w(
|
|
63
|
+
() => Object.keys(R).filter((a) => a !== "mch"),
|
|
64
|
+
[R]
|
|
65
|
+
), j = o.palette.mode === "dark" ? o.palette.divider : o.palette.grey[200], q = _((a, t) => {
|
|
66
66
|
V(t);
|
|
67
67
|
}, []), H = _(() => {
|
|
68
|
-
|
|
68
|
+
T("button_click", {
|
|
69
69
|
button_name: "featuremenu-add-button",
|
|
70
70
|
button_type: "navigate",
|
|
71
71
|
button_id: "featuremenu-add-button"
|
|
72
72
|
}), N("addDynamicFeature");
|
|
73
|
-
}, [N,
|
|
73
|
+
}, [N, T]);
|
|
74
74
|
D(() => {
|
|
75
75
|
async function a() {
|
|
76
|
-
const { data: t } = await
|
|
77
|
-
Y(
|
|
76
|
+
const { data: t } = await he("techo.manage.menu"), b = JSON.parse(t);
|
|
77
|
+
Y(b);
|
|
78
78
|
}
|
|
79
79
|
a();
|
|
80
80
|
}, []), D(() => {
|
|
81
81
|
(async () => {
|
|
82
|
-
var t,
|
|
82
|
+
var t, b;
|
|
83
83
|
if (!(!r.length || i >= r.length))
|
|
84
84
|
try {
|
|
85
85
|
v(!0);
|
|
86
|
-
const { data:
|
|
86
|
+
const { data: x } = await te(r[i]), z = x.sort((W, X) => {
|
|
87
87
|
var G;
|
|
88
88
|
return (G = W.name) == null ? void 0 : G.localeCompare(X.name);
|
|
89
89
|
});
|
|
90
90
|
ee(() => {
|
|
91
91
|
O(z), z.length > 0, v(!1);
|
|
92
92
|
});
|
|
93
|
-
} catch (
|
|
93
|
+
} catch (x) {
|
|
94
94
|
se({
|
|
95
|
-
message: `Error : ${(
|
|
95
|
+
message: `Error : ${(b = (t = x == null ? void 0 : x.response) == null ? void 0 : t.data) == null ? void 0 : b.message}`,
|
|
96
96
|
type: "error"
|
|
97
97
|
}), v(!1);
|
|
98
98
|
}
|
|
99
99
|
})();
|
|
100
100
|
}, [i, r]);
|
|
101
101
|
const K = w(
|
|
102
|
-
() => /* @__PURE__ */ e(L, { fallback: /* @__PURE__ */ e(
|
|
103
|
-
|
|
102
|
+
() => /* @__PURE__ */ e(L, { fallback: /* @__PURE__ */ e(M, {}), children: /* @__PURE__ */ e(
|
|
103
|
+
be,
|
|
104
104
|
{
|
|
105
105
|
"data-testid": "featuremenu-submenu",
|
|
106
|
-
data:
|
|
106
|
+
data: C,
|
|
107
107
|
subMenuId: c,
|
|
108
108
|
setSubMenuId: (a) => {
|
|
109
|
-
|
|
109
|
+
h(fe(a));
|
|
110
110
|
},
|
|
111
111
|
setSubMenuGroupName: (a) => {
|
|
112
|
-
|
|
112
|
+
h(pe(a));
|
|
113
113
|
},
|
|
114
114
|
setSubMenuFeatureVal: (a) => {
|
|
115
|
-
|
|
115
|
+
h(de(a));
|
|
116
116
|
},
|
|
117
117
|
type: r[i],
|
|
118
|
-
isLoading:
|
|
119
|
-
isNewAPI:
|
|
118
|
+
isLoading: u,
|
|
119
|
+
isNewAPI: A,
|
|
120
120
|
subMenuGroupName: I,
|
|
121
121
|
rights: s
|
|
122
122
|
}
|
|
123
123
|
) }),
|
|
124
|
-
[
|
|
124
|
+
[C, c, i, u, r, A, s]
|
|
125
125
|
), Q = w(
|
|
126
126
|
() => /* @__PURE__ */ e(
|
|
127
127
|
L,
|
|
128
128
|
{
|
|
129
129
|
fallback: /* @__PURE__ */ e("div", { className: "p-2 text-sm text-gray-500", children: "Loading Access Rights..." }),
|
|
130
130
|
children: /* @__PURE__ */ e(
|
|
131
|
-
|
|
131
|
+
ge,
|
|
132
132
|
{
|
|
133
133
|
"data-testid": "featuremenu-access-rights",
|
|
134
134
|
subMenuId: c,
|
|
135
135
|
subMenuGroupName: I,
|
|
136
136
|
subMenuFeatureVal: U,
|
|
137
137
|
selectedTab: r[i],
|
|
138
|
-
parentLoading:
|
|
138
|
+
parentLoading: u,
|
|
139
139
|
onNewAPIChange: J,
|
|
140
140
|
rights: s
|
|
141
141
|
}
|
|
142
142
|
)
|
|
143
143
|
}
|
|
144
144
|
),
|
|
145
|
-
[c,
|
|
145
|
+
[c, u, s]
|
|
146
146
|
);
|
|
147
|
-
return
|
|
147
|
+
return !u && s !== null && !k.hasCheckRights(s == null ? void 0 : s["view.manage.featurelist"]) ? /* @__PURE__ */ e(B, { className: "flex justify-center items-center w-full h-[80vh]", children: /* @__PURE__ */ e(
|
|
148
148
|
P,
|
|
149
149
|
{
|
|
150
150
|
className: "h-80 w-150 flex justify-center items-center",
|
|
151
151
|
children: /* @__PURE__ */ e(S, { variant: "h5", className: "text-customBlue", children: "You dont have permission to view Features" })
|
|
152
152
|
}
|
|
153
153
|
) }) : /* @__PURE__ */ n(P, { variant: "elevation", className: "p-3 mt-6 flex flex-col shadow-2xl", children: [
|
|
154
|
-
/* @__PURE__ */ e(
|
|
154
|
+
/* @__PURE__ */ e(M, { isLoading: u, children: /* @__PURE__ */ n(p, { className: "w-full justify-between flex-wrap flex flex-row", children: [
|
|
155
155
|
/* @__PURE__ */ e(p, { className: "flex-wrap flex flex-row", children: /* @__PURE__ */ e(
|
|
156
156
|
le,
|
|
157
157
|
{
|
|
@@ -171,7 +171,7 @@ function Ne() {
|
|
|
171
171
|
}
|
|
172
172
|
) }),
|
|
173
173
|
/* @__PURE__ */ n(p, { className: "flex gap-2 items-center ml-auto", children: [
|
|
174
|
-
|
|
174
|
+
k.hasCheckRights(s == null ? void 0 : s["update.manage.featurelist"]) && /* @__PURE__ */ n(
|
|
175
175
|
$,
|
|
176
176
|
{
|
|
177
177
|
size: "small",
|
|
@@ -190,7 +190,7 @@ function Ne() {
|
|
|
190
190
|
]
|
|
191
191
|
}
|
|
192
192
|
),
|
|
193
|
-
|
|
193
|
+
k.hasCheckRights(s == null ? void 0 : s["create.manage.featurelist"]) && /* @__PURE__ */ n(
|
|
194
194
|
$,
|
|
195
195
|
{
|
|
196
196
|
size: "small",
|
|
@@ -216,7 +216,7 @@ function Ne() {
|
|
|
216
216
|
{
|
|
217
217
|
size: { xs: 12, sm: 12, md: 3 },
|
|
218
218
|
className: "flex",
|
|
219
|
-
sx: { border: `1px solid ${
|
|
219
|
+
sx: { border: `1px solid ${j}` },
|
|
220
220
|
children: K
|
|
221
221
|
}
|
|
222
222
|
),
|
|
@@ -225,10 +225,10 @@ function Ne() {
|
|
|
225
225
|
{
|
|
226
226
|
size: { xs: 12, sm: 12, md: 9 },
|
|
227
227
|
className: "flex flex-col",
|
|
228
|
-
sx: { border: `1px solid ${
|
|
228
|
+
sx: { border: `1px solid ${j}` },
|
|
229
229
|
children: [
|
|
230
|
-
|
|
231
|
-
/* @__PURE__ */ e(
|
|
230
|
+
u && l ? /* @__PURE__ */ e("div", { className: "flex flex-col p-2", children: /* @__PURE__ */ e("div", { className: "bg-slate-200 dark:bg-slate-800 animate-pulse rounded-sm h-[30px] w-[180px]" }) }) : /* @__PURE__ */ n(B, { className: "flex items-center p-2", children: [
|
|
231
|
+
/* @__PURE__ */ e(me, { icon: ce, size: "lg", className: "mr-2" }),
|
|
232
232
|
/* @__PURE__ */ e(S, { variant: "body2", className: "font-bold font-sans pt-1", children: d("Access Rights") })
|
|
233
233
|
] }),
|
|
234
234
|
c && Q,
|
|
@@ -260,6 +260,6 @@ const Pe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
260
260
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
261
261
|
export {
|
|
262
262
|
Pe as F,
|
|
263
|
-
|
|
263
|
+
xe as S
|
|
264
264
|
};
|
|
265
|
-
//# sourceMappingURL=FeatureMenu-
|
|
265
|
+
//# sourceMappingURL=FeatureMenu-jl7-Tk6y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureMenu-jl7-Tk6y.js","sources":["../src/views/Features/Skeletons/FeatureSkeletons.jsx","../src/views/Features/FeatureMenu.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const FeatureMenuSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n return (\n <div className=\"flex flex-col mt-6\">\n <div className=\"w-full justify-between flex-wrap flex flex-row\">\n <div className=\"flex-wrap flex flex-row\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2\"></div>\n </div>\n\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[120px] m-0.5\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[130px] m-0.5\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[100px] m-0.5\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nFeatureMenuSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageFeatureSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"mt-8 ml-4\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[35px]\"></div>\n <div className=\"flex flex-col gap-4 my-3\">\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[200px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[30px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px] ml-8\"></div>\n </div>\n </div>\n <div className=\"flex justify-end gap-5 m-7\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[64px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[64px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nManageFeatureSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const SubMenuSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"w-full p-2\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[40px] w-full mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[60px] w-full mb-2\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[280px] w-full\"></div>\n </div>\n );\n};\n\nSubMenuSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import React, {\n lazy,\n Suspense,\n useEffect,\n useMemo,\n useState,\n startTransition,\n useCallback,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { getFeatureName } from \"../../services/Features\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nconst AccessRights = lazy(() => import(\"./AccessRights\"));\nconst SubMenu = lazy(() => import(\"./SubMenu\"));\nimport { Button, Card, Tab, Tabs, Typography, useTheme } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Box } from \"@mui/system\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGear } from \"@fortawesome/free-solid-svg-icons\";\nimport { FeatureMenuSkeleton } from \"./Skeletons/FeatureSkeletons\";\nimport {\n setSubMenuId,\n setSubMenuGroupName,\n setSubMenuFeatureVal,\n} from \"@/store/reducers/FeatureReducer\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\n/**\n * The `FeatureMenu` component renders a menu or list of features in the application.\n * @module FeatureMenu\n * @returns {JSX.Element} The rendered `FeatureMenu` component.\n */\n\nexport default function FeatureMenu() {\n const useSkeleton = useSelector(getUseSkeleton);\n const theme = useTheme();\n const dispatch = useDispatch();\n const [Data, setData] = useState([]);\n const [selectedId, setSelectedId] = useState(0);\n const subMenuId = useSelector((state) => {\n return state?.FeatureReducer?.subMenuId;\n });\n const subMenuGroupName = useSelector(\n (state) => state?.FeatureReducer?.subMenuGroupName,\n );\n const subMenuFeatureVal = useSelector(\n (state) => state?.FeatureReducer?.subMenuFeatureVal,\n );\n const navigate = useNavigate();\n const { user } = useSelector((state) => state.Authenticate);\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const trackEvent = useTrackEvent();\n const [isNewAPI, setIsNewAPI] = useState({});\n const [rights, setRights] = useState(null);\n const features = user?.features || {};\n const featureNames = useMemo(\n () => Object.keys(features).filter((key) => key !== \"mch\"),\n [features],\n );\n const panelBorderColor =\n theme.palette.mode === \"dark\" ? theme.palette.divider : theme.palette.grey[200];\n\n // 🧠 handle tab switch\n const handleTabChange = useCallback((e, newValue) => {\n setSelectedId(newValue);\n }, []);\n\n /**\n * Navigates to the '/ui/addfeature' route when called.\n * @function handleClick\n * @returns {void} This function does not return a value.\n */\n\n const handleFeature = useCallback(() => {\n trackEvent(\"button_click\", {\n button_name: \"featuremenu-add-button\",\n button_type: \"navigate\",\n button_id: \"featuremenu-add-button\",\n });\n navigate(\"addDynamicFeature\");\n }, [navigate, trackEvent]);\n\n // 📦 fetch feature data\n /**\n * Effect hook that runs when `selectedId` changes to load and set initial feature data.\n * @effect\n * @returns {void} This effect does not return a value.\n */\n useEffect(() => {\n async function getFeatures() {\n const { data } = await getAssignedFeatures(\"techo.manage.menu\");\n const parsedRights = JSON.parse(data);\n setRights(parsedRights);\n }\n getFeatures();\n }, []);\n\n useEffect(() => {\n const loadInitialData = async () => {\n if (!featureNames.length || selectedId >= featureNames.length) return;\n\n try {\n setIsLoading(true);\n const { data } = await getFeatureName(featureNames[selectedId]);\n const filterData = data.sort((a, b) => a.name?.localeCompare(b.name));\n startTransition(() => {\n setData(filterData);\n if (filterData.length > 0) {\n // prohibiting the feature to be selected if it is not available\n // dispatch(setSubMenuId(filterData[0].id));\n // dispatch(setSubMenuFeatureVal(filterData[0].isNewFeature));\n }\n setIsLoading(false);\n });\n } catch (error) {\n showToast({\n message: `Error : ${error?.response?.data?.message}`,\n type: \"error\",\n });\n setIsLoading(false);\n }\n };\n\n loadInitialData();\n }, [selectedId, featureNames]);\n\n // 🧠 Memoized SubMenu\n const SubMenuContent = useMemo(\n () => (\n <Suspense fallback={<FeatureMenuSkeleton />}>\n <SubMenu\n data-testid=\"featuremenu-submenu\"\n data={Data}\n subMenuId={subMenuId}\n setSubMenuId={(id) => {\n dispatch(setSubMenuId(id));\n }}\n setSubMenuGroupName={(name) => {\n dispatch(setSubMenuGroupName(name));\n }}\n setSubMenuFeatureVal={(val) => {\n dispatch(setSubMenuFeatureVal(val));\n }}\n type={featureNames[selectedId]}\n isLoading={isLoading}\n isNewAPI={isNewAPI}\n subMenuGroupName={subMenuGroupName}\n rights={rights}\n />\n </Suspense>\n ),\n [Data, subMenuId, selectedId, isLoading, featureNames, isNewAPI, rights],\n );\n\n // 🧠 Memoized AccessRights\n const AccessRightsContent = useMemo(\n () => (\n <Suspense\n fallback={\n <div className=\"p-2 text-sm text-gray-500\">\n Loading Access Rights...\n </div>\n }\n >\n <AccessRights\n data-testid=\"featuremenu-access-rights\"\n subMenuId={subMenuId}\n subMenuGroupName={subMenuGroupName}\n subMenuFeatureVal={subMenuFeatureVal}\n selectedTab={featureNames[selectedId]}\n parentLoading={isLoading}\n onNewAPIChange={setIsNewAPI}\n rights={rights}\n />\n </Suspense>\n ),\n [subMenuId, isLoading, rights],\n );\n\n return !isLoading && rights !== null && !GeneralUtil.hasCheckRights(rights?.[\"view.manage.featurelist\"]) ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Features\n </Typography>\n </Card>\n </Box>\n ) : (\n <Card variant=\"elevation\" className=\"p-3 mt-6 flex flex-col shadow-2xl\">\n <FeatureMenuSkeleton isLoading={isLoading}>\n <Grid className=\"w-full justify-between flex-wrap flex flex-row\">\n <Grid className=\"flex-wrap flex flex-row\">\n <Tabs\n value={selectedId}\n onChange={handleTabChange}\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n {featureNames.map((feat, index) => (\n <Tab\n key={feat}\n label={feat.toUpperCase()}\n data-testid={`featuremenu-button-${index}`}\n id={`feature-tab-${index}`}\n />\n ))}\n </Tabs>\n </Grid>\n <Grid className=\"flex gap-2 items-center ml-auto\">\n {GeneralUtil.hasCheckRights(rights?.['update.manage.featurelist']) && (\n <Button\n size=\"small\"\n className=\"mb-1 ml-0.5\"\n variant=\"contained\"\n onClick={() => navigate(\"/ui/medplat/report/all/groups\")}\n sx={{\n mt: { xs: \"15px\", md: \"0px\" },\n }}\n >\n {translate(\"Manage\")} {translate(\"Menu\")} {translate(\"Group\")}\n </Button>\n )}\n {GeneralUtil.hasCheckRights(rights?.['create.manage.featurelist']) && (\n <Button\n size=\"small\"\n data-testid=\"featuremenu-add-button\"\n className=\"mb-1 ml-0.5\"\n variant=\"contained\"\n onClick={handleFeature}\n sx={{\n mt: { xs: \"15px\", md: \"0px\" },\n }}\n >\n {translate(\"Add\")} {translate(\"Feature\")}\n </Button>\n )}\n </Grid>\n </Grid>\n </FeatureMenuSkeleton>\n\n <Grid container spacing={2} className=\"w-full py-3 rounded-sm\">\n <Grid\n size={{ xs: 12, sm: 12, md: 3 }}\n className=\"flex\"\n sx={{ border: `1px solid ${panelBorderColor}` }}\n >\n {SubMenuContent}\n </Grid>\n\n <Grid\n size={{ xs: 12, sm: 12, md: 9 }}\n className=\"flex flex-col\"\n sx={{ border: `1px solid ${panelBorderColor}` }}\n >\n {isLoading && useSkeleton ? (\n <div className=\"flex flex-col p-2\">\n <div className=\"bg-slate-200 dark:bg-slate-800 animate-pulse rounded-sm h-[30px] w-[180px]\" />\n </div>\n ) : (\n <Box className=\"flex items-center p-2\">\n <FontAwesomeIcon icon={faGear} size=\"lg\" className=\"mr-2\" />\n <Typography variant=\"body2\" className=\"font-bold font-sans pt-1\">\n {translate(\"Access Rights\")}\n </Typography>\n </Box>\n )}\n {subMenuId && AccessRightsContent}\n {!subMenuId && (\n <>\n <Typography\n variant=\"body2\"\n className=\"p-2\"\n data-testid=\"featuremenu-no-feature-selected\"\n sx={{\n textAlign: \"center\",\n position: \"relative\",\n top: \"10%\",\n fontSize: \"25px\",\n color: \"grey\",\n }}\n >\n Please select a feature!\n </Typography>\n </>\n )}\n </Grid>\n </Grid>\n </Card>\n );\n}\n"],"names":["FeatureMenuSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","SubMenuSkeleton","AccessRights","lazy","SubMenu","FeatureMenu","useSkeleton","theme","useTheme","dispatch","useDispatch","Data","setData","useState","selectedId","setSelectedId","subMenuId","state","_a","subMenuGroupName","subMenuFeatureVal","navigate","useNavigate","user","translate","useTranslateProvider","setIsLoading","trackEvent","useTrackEvent","isNewAPI","setIsNewAPI","rights","setRights","features","featureNames","useMemo","key","panelBorderColor","handleTabChange","useCallback","e","newValue","handleFeature","useEffect","getFeatures","data","getAssignedFeatures","parsedRights","getFeatureName","filterData","a","b","startTransition","error","showToast","_b","SubMenuContent","Suspense","id","setSubMenuId","name","setSubMenuGroupName","val","setSubMenuFeatureVal","AccessRightsContent","GeneralUtil","Box","Card","Typography","Grid","Tabs","feat","index","Tab","Button","FontAwesomeIcon","faGear","Fragment"],"mappings":"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"}
|