@argusoft/medplat-core 1.0.19 → 1.0.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.
Files changed (63) hide show
  1. package/dist/{AccessRights-Bvd5Bm5K.js → AccessRights-CupmTG3T.js} +2 -2
  2. package/dist/{AccessRights-Bvd5Bm5K.js.map → AccessRights-CupmTG3T.js.map} +1 -1
  3. package/dist/{AddEditQueryBuilder-Bcjl5mXE.js → AddEditQueryBuilder-C8ZSkOF0.js} +60 -60
  4. package/dist/AddEditQueryBuilder-C8ZSkOF0.js.map +1 -0
  5. package/dist/{AddFeatures-CE5rBxEG.js → AddFeatures-CiZZZ0GL.js} +2 -2
  6. package/dist/{AddFeatures-CE5rBxEG.js.map → AddFeatures-CiZZZ0GL.js.map} +1 -1
  7. package/dist/{AddRoleDrawer-Bc655LQU.js → AddRoleDrawer-CQdzQZLb.js} +36 -36
  8. package/dist/AddRoleDrawer-CQdzQZLb.js.map +1 -0
  9. package/dist/{ConditionConfig-D2hOAa4n.js → ConditionConfig-C3rF2wXU.js} +2 -2
  10. package/dist/{ConditionConfig-D2hOAa4n.js.map → ConditionConfig-C3rF2wXU.js.map} +1 -1
  11. package/dist/{EventConfigurations-D8juDb29.js → EventConfigurations-BGffjVC7.js} +3 -3
  12. package/dist/{EventConfigurations-D8juDb29.js.map → EventConfigurations-BGffjVC7.js.map} +1 -1
  13. package/dist/{EventsExceptionModal-DsvngLi8.js → EventsExceptionModal-D4Bf1ilS.js} +2 -2
  14. package/dist/{EventsExceptionModal-DsvngLi8.js.map → EventsExceptionModal-D4Bf1ilS.js.map} +1 -1
  15. package/dist/EventsSkeleton-8iiETGcf.js +76 -0
  16. package/dist/EventsSkeleton-8iiETGcf.js.map +1 -0
  17. package/dist/{FeatureMenu-CLX8VNZ-.js → FeatureMenu-DUZL32RI.js} +3 -3
  18. package/dist/{FeatureMenu-CLX8VNZ-.js.map → FeatureMenu-DUZL32RI.js.map} +1 -1
  19. package/dist/Features-CObdzJp_.js +13 -0
  20. package/dist/Features-CObdzJp_.js.map +1 -0
  21. package/dist/{ManageDynamicFeature-i6ARKe36.js → ManageDynamicFeature-BhONvfC_.js} +2 -2
  22. package/dist/{ManageDynamicFeature-i6ARKe36.js.map → ManageDynamicFeature-BhONvfC_.js.map} +1 -1
  23. package/dist/{ManageEventConfiguration-CHugu2vQ.js → ManageEventConfiguration-BntUc_YI.js} +5 -5
  24. package/dist/{ManageEventConfiguration-CHugu2vQ.js.map → ManageEventConfiguration-BntUc_YI.js.map} +1 -1
  25. package/dist/{ManageNotification-BUAvg5Ge.js → ManageNotification-CSl02Wq7.js} +2 -2
  26. package/dist/{ManageNotification-BUAvg5Ge.js.map → ManageNotification-CSl02Wq7.js.map} +1 -1
  27. package/dist/{ManageRole-Cbs9dUhc.js → ManageRole-tdzAiCOE.js} +222 -229
  28. package/dist/ManageRole-tdzAiCOE.js.map +1 -0
  29. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js → MobileTypeEventConfigModal-BNjZ8pnq.js} +2 -2
  30. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js.map → MobileTypeEventConfigModal-BNjZ8pnq.js.map} +1 -1
  31. package/dist/{NotificationList-CUZSWp2J.js → NotificationList-D1U1LYnz.js} +140 -139
  32. package/dist/NotificationList-D1U1LYnz.js.map +1 -0
  33. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js → OtherTypeEventConfigModal-DiVhWDpG.js} +2 -2
  34. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js.map → OtherTypeEventConfigModal-DiVhWDpG.js.map} +1 -1
  35. package/dist/{QueryBuilder-DXexUIe8.js → QueryBuilder-DI0wCJbz.js} +85 -84
  36. package/dist/QueryBuilder-DI0wCJbz.js.map +1 -0
  37. package/dist/{RoleManagement-BThAL5LO.js → RoleManagement-Cg8-EiVr.js} +83 -82
  38. package/dist/RoleManagement-Cg8-EiVr.js.map +1 -0
  39. package/dist/{ShowFlywayQuery-BkyA6QaA.js → ShowFlywayQuery-tj42YQAS.js} +33 -33
  40. package/dist/ShowFlywayQuery-tj42YQAS.js.map +1 -0
  41. package/dist/{SubMenu-BGznOP2a.js → SubMenu-CM_4wNCR.js} +2 -2
  42. package/dist/{SubMenu-BGznOP2a.js.map → SubMenu-CM_4wNCR.js.map} +1 -1
  43. package/dist/{TypeConfiguration-D-3xNcyd.js → TypeConfiguration-CupQxH9Y.js} +28 -28
  44. package/dist/TypeConfiguration-CupQxH9Y.js.map +1 -0
  45. package/dist/{UserList-D7GL7jvO.js → UserList-BzHsbYel.js} +186 -185
  46. package/dist/UserList-BzHsbYel.js.map +1 -0
  47. package/dist/{WidgetList-B3Sm9weK.js → WidgetList-B7X8Awkg.js} +2 -2
  48. package/dist/{WidgetList-B3Sm9weK.js.map → WidgetList-B7X8Awkg.js.map} +1 -1
  49. package/dist/index.js +9 -9
  50. package/package.json +1 -1
  51. package/dist/AddEditQueryBuilder-Bcjl5mXE.js.map +0 -1
  52. package/dist/AddRoleDrawer-Bc655LQU.js.map +0 -1
  53. package/dist/EventsSkeleton-DCXwwPbb.js +0 -76
  54. package/dist/EventsSkeleton-DCXwwPbb.js.map +0 -1
  55. package/dist/Features-Cpf1PDx0.js +0 -13
  56. package/dist/Features-Cpf1PDx0.js.map +0 -1
  57. package/dist/ManageRole-Cbs9dUhc.js.map +0 -1
  58. package/dist/NotificationList-CUZSWp2J.js.map +0 -1
  59. package/dist/QueryBuilder-DXexUIe8.js.map +0 -1
  60. package/dist/RoleManagement-BThAL5LO.js.map +0 -1
  61. package/dist/ShowFlywayQuery-BkyA6QaA.js.map +0 -1
  62. package/dist/TypeConfiguration-D-3xNcyd.js.map +0 -1
  63. package/dist/UserList-D7GL7jvO.js.map +0 -1
@@ -1,22 +1,23 @@
1
1
  import { jsxs as r, jsx as t, Fragment as L } from "react/jsx-runtime";
2
- import u from "@/common/services/util/GeneralUtil";
3
- import { useState as m, useEffect as ce, Suspense as H, lazy as Q } from "react";
4
- import { Box as p, Card as T, Typography as d, Button as C, TextField as K, Switch as de, Chip as $ } from "@mui/material";
5
- import { alpha as S } from "@mui/material/styles";
6
- import { useTranslateProvider as me } from "@/common/languageTranslator/TranslationContext";
7
- import { api as h } from "@/common/interceptors/AxiosInterceptor";
2
+ import g from "@/common/services/util/GeneralUtil";
3
+ import { useState as m, useEffect as de, Suspense as H, lazy as X } from "react";
4
+ import { Box as p, Card as C, Typography as d, Button as S, TextField as K, Switch as me, Chip as $ } from "@mui/material";
5
+ import { alpha as T } from "@mui/material/styles";
6
+ import { useTranslateProvider as ue } from "@/common/languageTranslator/TranslationContext";
7
+ import V from "@/common/config/implementationConfig";
8
+ import { api as f } from "@/common/interceptors/AxiosInterceptor";
8
9
  import { getRoleList as _ } from "@/common/services/GlobalApis.js";
9
- import { getAssignedFeatures as ue } from "@/utils/feature.js";
10
+ import { getAssignedFeatures as fe } from "@/utils/feature.js";
10
11
  import { showToast as x } from "@/common/toaster/toaster";
11
- import { FontAwesomeIcon as fe } from "@fortawesome/react-fontawesome";
12
+ import { FontAwesomeIcon as pe } from "@fortawesome/react-fontawesome";
12
13
  import { faTrash as he } from "@fortawesome/free-solid-svg-icons";
13
- import pe from "@/hooks/useTrackEvent";
14
+ import ge from "@/hooks/useTrackEvent";
14
15
  import z from "prop-types";
15
- import { useSelector as X } from "react-redux";
16
- import { getUseSkeleton as ge } from "@/store/reducers/SkeletonReducer";
17
- const j = () => h.get("/role"), xe = (l) => h.delete(u.isTecho ? `/menuconfig/usermenuitem/delete?empMenuItemId=${l}` : `/menuconfig/usermenuitem/${l}`), ve = (l) => h.get(u.isTecho ? `/role/retrieveById?id=${l}` : `/role/${l}`), Oe = (l) => h.post("/role", { ...l }), Be = (l) => u.isTecho ? h.put("/role/update", { ...l }) : h.post("/role", { ...l }), be = (l) => h.put(`role/?is_active=${l.state === "INACTIVE" ? "true" : "false"}`, {
16
+ import { useSelector as Z } from "react-redux";
17
+ import { getUseSkeleton as xe } from "@/store/reducers/SkeletonReducer";
18
+ const j = () => f.get("/role"), ve = (l) => f.delete(V.api.useQueryParamStyle ? `/menuconfig/usermenuitem/delete?empMenuItemId=${l}` : `/menuconfig/usermenuitem/${l}`), ye = (l) => f.get(V.api.useQueryParamStyle ? `/role/retrieveById?id=${l}` : `/role/${l}`), Be = (l) => f.post("/role", { ...l }), De = (l) => V.api.useQueryParamStyle ? f.put("/role/update", { ...l }) : f.post("/role", { ...l }), be = (l) => f.put(`role/?is_active=${l.state === "INACTIVE" ? "true" : "false"}`, {
18
19
  ...l
19
- }), De = (l, n) => h.post(`/menuconfig/assignnewfeature?roleId=${n}`, { ...l }), Z = ({ children: l, isLoading: n = !0 }) => !X(ge) || !n ? l : /* @__PURE__ */ r("div", { className: "pt-6 relative h-[90vh]", children: [
20
+ }), Ue = (l, n) => f.post(`/menuconfig/assignnewfeature?roleId=${n}`, { ...l }), ee = ({ children: l, isLoading: n = !0 }) => !Z(xe) || !n ? l : /* @__PURE__ */ r("div", { className: "pt-6 relative h-[90vh]", children: [
20
21
  /* @__PURE__ */ r("div", { className: "flex flex-row h-[80vh] ", children: [
21
22
  /* @__PURE__ */ r("div", { className: "flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md", children: [
22
23
  " ",
@@ -38,64 +39,64 @@ const j = () => h.get("/role"), xe = (l) => h.delete(u.isTecho ? `/menuconfig/us
38
39
  ] }),
39
40
  /* @__PURE__ */ t("div", { className: "absolute bottom-20 right-[10px] ", children: /* @__PURE__ */ t("div", { className: "bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]" }) })
40
41
  ] });
41
- Z.propTypes = {
42
+ ee.propTypes = {
42
43
  children: z.any,
43
44
  loading: z.any,
44
45
  isLoading: z.any
45
46
  };
46
- const ye = Q(() => import("./AddFeatures-CE5rBxEG.js")), we = Q(() => import("./ManageRole-Cbs9dUhc.js"));
47
- function Ne() {
47
+ const we = X(() => import("./AddFeatures-CiZZZ0GL.js")), Ne = X(() => import("./ManageRole-tdzAiCOE.js"));
48
+ function Ie() {
48
49
  var q;
49
- const { translate: l } = me(), [n, b] = m(""), [o, y] = m(n[0]), [A, ee] = m(!1), [V, f] = m(!1), [O, B] = m(!1), [F, D] = m(0), [U, k] = m(""), [w, W] = m(""), [c, te] = m({}), Y = pe(), P = X((e) => e.Authenticate.user.roleId), [E, ae] = m([]), N = async (e = !1) => {
50
+ const { translate: l } = ue(), [n, y] = m(""), [o, b] = m(n[0]), [A, te] = m(!1), [O, u] = m(!1), [P, B] = m(!1), [F, D] = m(0), [U, k] = m(""), [w, W] = m(""), [c, ae] = m({}), Y = ge(), Q = Z((e) => e.Authenticate.user.roleId), [E, se] = m([]), N = async (e = !1) => {
50
51
  var a;
51
52
  try {
52
- f(!0);
53
+ u(!0);
53
54
  const s = A ? j() : _();
54
- let i, g = [];
55
- if (P) {
55
+ let i, h = [];
56
+ if (Q) {
56
57
  const [{ data: v }, M] = await Promise.all([
57
58
  s,
58
- ve(P)
59
+ ye(Q)
59
60
  ]);
60
- i = v, g = ((a = M == null ? void 0 : M.data) == null ? void 0 : a.roleIds) || [];
61
+ i = v, h = ((a = M == null ? void 0 : M.data) == null ? void 0 : a.roleIds) || [];
61
62
  } else {
62
63
  const { data: v } = await s;
63
64
  i = v;
64
65
  }
65
- ae(g);
66
- const R = g.length > 0 ? i.filter((v) => g.includes(v.id)) : i;
67
- b(R), !e && R.length > 0 && y(R[0]);
66
+ se(h);
67
+ const R = h.length > 0 ? i.filter((v) => h.includes(v.id)) : i;
68
+ y(R), !e && R.length > 0 && b(R[0]);
68
69
  } catch (s) {
69
70
  console.error(s), x({ message: "Error in getting role data", type: "error" });
70
71
  } finally {
71
- f(!1);
72
+ u(!1);
72
73
  }
73
74
  };
74
- ce(function() {
75
+ de(function() {
75
76
  (async () => {
76
- const { data: a } = await ue("techo.manage.role");
77
- a && te(JSON.parse(a));
77
+ const { data: a } = await fe("techo.manage.role");
78
+ a && ae(JSON.parse(a));
78
79
  })(), N();
79
80
  }, []);
80
- const se = async (e) => {
81
+ const re = async (e) => {
81
82
  let a = e.target.checked;
82
- ee(e.target.checked);
83
+ te(e.target.checked);
83
84
  try {
84
- f((i) => !i);
85
+ u((i) => !i);
85
86
  let s;
86
87
  a ? { data: s } = await j() : { data: s } = await _(), E && E.length > 0 && (s = s.filter(
87
88
  (i) => E.includes(i.id)
88
- )), b(s), y(s[0]), f((i) => !i), k("");
89
+ )), y(s), b(s[0]), u((i) => !i), k("");
89
90
  } catch (s) {
90
- console.error(s), x({ message: "Error in getting role data", type: "error" }), f((i) => !i);
91
+ console.error(s), x({ message: "Error in getting role data", type: "error" }), u((i) => !i);
91
92
  }
92
93
  }, J = n ? n == null ? void 0 : n.filter(
93
94
  (e) => e.name.toLowerCase().includes(U.toLowerCase())
94
- ) : [], re = (e) => {
95
+ ) : [], le = (e) => {
95
96
  if (!e) return "";
96
- const a = new Date(Number(e)), s = String(a.getDate()).padStart(2, "0"), i = String(a.getMonth() + 1).padStart(2, "0"), g = a.getFullYear();
97
- return `${s}/${i}/${g}`;
98
- }, le = async () => {
97
+ const a = new Date(Number(e)), s = String(a.getDate()).padStart(2, "0"), i = String(a.getMonth() + 1).padStart(2, "0"), h = a.getFullYear();
98
+ return `${s}/${i}/${h}`;
99
+ }, oe = async () => {
99
100
  try {
100
101
  const e = n == null ? void 0 : n.find((s) => s.id === o.id);
101
102
  await be(e), x({
@@ -103,9 +104,9 @@ function Ne() {
103
104
  type: "success"
104
105
  });
105
106
  let a;
106
- f((s) => !s), A ? a = await j() : a = await _(), b(a.data), y(a.data[0]), f((s) => !s);
107
+ u((s) => !s), A ? a = await j() : a = await _(), y(a.data), b(a.data[0]), u((s) => !s);
107
108
  } catch (e) {
108
- console.error(e), x({ message: "Error in handle active", type: "error" }), f((a) => !a);
109
+ console.error(e), x({ message: "Error in handle active", type: "error" }), u((a) => !a);
109
110
  }
110
111
  }, I = n ? (q = n.find((e) => e.id === o.id)) == null ? void 0 : q.assignedFeatureList.filter(
111
112
  (e) => {
@@ -115,9 +116,9 @@ function Ne() {
115
116
  ).sort((e, a) => {
116
117
  var s;
117
118
  return (s = e.featureName) == null ? void 0 : s.localeCompare(a.featureName);
118
- }) : [], oe = async (e) => {
119
+ }) : [], ne = async (e) => {
119
120
  try {
120
- await xe(e.userMenuItemId), await N(!0), W(""), x({ message: "Feature deleted successfully!", type: "success" });
121
+ await ve(e.userMenuItemId), await N(!0), W(""), x({ message: "Feature deleted successfully!", type: "success" });
121
122
  } catch (a) {
122
123
  x({ message: a, type: "error" });
123
124
  }
@@ -127,9 +128,9 @@ function Ne() {
127
128
  button_type: "navigate",
128
129
  button_id: `roles-${e === 1 ? "add" : "edit"}-button`
129
130
  });
130
- }, ne = () => {
131
+ }, ie = () => {
131
132
  N(), k("");
132
- }, ie = async () => {
133
+ }, ce = async () => {
133
134
  try {
134
135
  B(!0), await Y("button_click", {
135
136
  button_name: "add feature button",
@@ -140,15 +141,15 @@ function Ne() {
140
141
  console.error(e);
141
142
  }
142
143
  };
143
- return u.isTecho && !V && !(c != null && c["view.manage.role"]) ? /* @__PURE__ */ t(p, { className: "flex justify-center items-center w-full h-[80vh]", children: /* @__PURE__ */ t(
144
- T,
144
+ return g.isTecho && !O && !(c != null && c["view.manage.role"]) ? /* @__PURE__ */ t(p, { className: "flex justify-center items-center w-full h-[80vh]", children: /* @__PURE__ */ t(
145
+ C,
145
146
  {
146
147
  className: "h-80 w-150 flex justify-center items-center",
147
148
  children: /* @__PURE__ */ t(d, { variant: "h5", className: "text-customBlue", children: "You dont have permission to view Roles" })
148
149
  }
149
- ) }) : /* @__PURE__ */ t(Z, { isLoading: V, children: /* @__PURE__ */ r(p, { className: "flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]", children: [
150
+ ) }) : /* @__PURE__ */ t(ee, { isLoading: O, children: /* @__PURE__ */ r(p, { className: "flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]", children: [
150
151
  /* @__PURE__ */ r(
151
- T,
152
+ C,
152
153
  {
153
154
  variant: "outlined",
154
155
  className: "w-full min-[900px]:w-[300px] flex flex-col p-4",
@@ -163,8 +164,8 @@ function Ne() {
163
164
  children: "User Roles"
164
165
  }
165
166
  ),
166
- (!u.isTecho || (c == null ? void 0 : c["create.manage.role"])) && /* @__PURE__ */ t(
167
- C,
167
+ (!g.isTecho || (c == null ? void 0 : c["create.manage.role"])) && /* @__PURE__ */ t(
168
+ S,
168
169
  {
169
170
  size: "small",
170
171
  variant: "contained",
@@ -189,24 +190,24 @@ function Ne() {
189
190
  ),
190
191
  /* @__PURE__ */ r("div", { className: "flex items-center gap-2 mt-3", children: [
191
192
  /* @__PURE__ */ t(
192
- de,
193
+ me,
193
194
  {
194
195
  size: "small",
195
196
  checked: A,
196
- onChange: se
197
+ onChange: re
197
198
  }
198
199
  ),
199
200
  /* @__PURE__ */ t(d, { variant: "body2", children: "Include Inactive" })
200
201
  ] }),
201
202
  /* @__PURE__ */ t("div", { className: "flex-1 overflow-y-auto mt-4", children: J.length > 0 && /* @__PURE__ */ t(L, { children: J.map((e) => /* @__PURE__ */ r(
202
- T,
203
+ C,
203
204
  {
204
205
  variant: "outlined",
205
- onClick: () => y(e),
206
+ onClick: () => b(e),
206
207
  className: `p-3 cursor-pointer transition
207
208
  ${o.id === e.id ? "border-b-2" : "border-b-2 border-0"}`,
208
209
  sx: o.id === e.id ? {
209
- bgcolor: (a) => S(a.palette.primary.main, 0.08)
210
+ bgcolor: (a) => T(a.palette.primary.main, 0.08)
210
211
  } : {},
211
212
  children: [
212
213
  /* @__PURE__ */ r(d, { fontWeight: 600, children: [
@@ -226,7 +227,7 @@ function Ne() {
226
227
  }
227
228
  ),
228
229
  /* @__PURE__ */ r(
229
- T,
230
+ C,
230
231
  {
231
232
  variant: "outlined",
232
233
  className: "w-full min-[900px]:flex-1 flex flex-col p-5",
@@ -254,23 +255,23 @@ function Ne() {
254
255
  className: "mt-1",
255
256
  children: [
256
257
  "Created on ",
257
- re(o == null ? void 0 : o.createdOn)
258
+ le(o == null ? void 0 : o.createdOn)
258
259
  ]
259
260
  }
260
261
  )
261
262
  ] }),
262
263
  /* @__PURE__ */ r("div", { className: "flex gap-2", children: [
263
- (!u.isTecho || (c == null ? void 0 : c["update.manage.role.toggleActive"])) && /* @__PURE__ */ t(
264
- C,
264
+ (!g.isTecho || (c == null ? void 0 : c["update.manage.role.toggleActive"])) && /* @__PURE__ */ t(
265
+ S,
265
266
  {
266
267
  variant: "outlined",
267
268
  size: "small",
268
- onClick: () => le(),
269
+ onClick: () => oe(),
269
270
  children: (o == null ? void 0 : o.state) === "ACTIVE" ? "Deactivate" : "Activate"
270
271
  }
271
272
  ),
272
- (!u.isTecho || (c == null ? void 0 : c["update.manage.role"])) && /* @__PURE__ */ t(
273
- C,
273
+ (!g.isTecho || (c == null ? void 0 : c["update.manage.role"])) && /* @__PURE__ */ t(
274
+ S,
274
275
  {
275
276
  variant: "contained",
276
277
  size: "small",
@@ -312,7 +313,7 @@ function Ne() {
312
313
  className: "grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]",
313
314
  sx: {
314
315
  color: "text.secondary",
315
- bgcolor: (e) => S(e.palette.action.hover, 0.04)
316
+ bgcolor: (e) => T(e.palette.action.hover, 0.04)
316
317
  },
317
318
  children: [
318
319
  /* @__PURE__ */ t("div", { children: l("FEATURE NAME") }),
@@ -334,17 +335,17 @@ function Ne() {
334
335
  className: "grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition",
335
336
  sx: {
336
337
  "&:hover": {
337
- bgcolor: (s) => S(s.palette.action.hover, 0.04)
338
+ bgcolor: (s) => T(s.palette.action.hover, 0.04)
338
339
  }
339
340
  },
340
341
  children: [
341
342
  /* @__PURE__ */ t("div", { className: "flex flex-col", children: /* @__PURE__ */ t(d, { sx: { fontSize: "13px", fontWeight: 600 }, children: e.featureName }) }),
342
- /* @__PURE__ */ t("div", { className: "flex justify-center", children: (!u.isTecho || (c == null ? void 0 : c["view.manage.role.unassignFeature"])) && /* @__PURE__ */ t(
343
- fe,
343
+ /* @__PURE__ */ t("div", { className: "flex justify-center", children: (!g.isTecho || (c == null ? void 0 : c["view.manage.role.unassignFeature"])) && /* @__PURE__ */ t(
344
+ pe,
344
345
  {
345
346
  icon: he,
346
347
  onClick: () => {
347
- oe(e);
348
+ ne(e);
348
349
  },
349
350
  color: "error",
350
351
  className: "text-red-400 cursor-pointer",
@@ -373,29 +374,29 @@ function Ne() {
373
374
  {
374
375
  className: "border-t p-4",
375
376
  sx: {
376
- bgcolor: (e) => S(e.palette.primary.main, 0.06)
377
+ bgcolor: (e) => T(e.palette.primary.main, 0.06)
377
378
  },
378
- children: (!u.isTecho || (c == null ? void 0 : c["view.manage.role.assignFeature"])) && /* @__PURE__ */ t(C, { variant: "outlined", size: "small", onClick: ie, children: "+ Add More Features" })
379
+ children: (!g.isTecho || (c == null ? void 0 : c["view.manage.role.assignFeature"])) && /* @__PURE__ */ t(S, { variant: "outlined", size: "small", onClick: ce, children: "+ Add More Features" })
379
380
  }
380
381
  )
381
382
  ]
382
383
  }
383
384
  ),
384
385
  /* @__PURE__ */ t(H, { children: /* @__PURE__ */ t(
385
- we,
386
+ Ne,
386
387
  {
387
388
  isUpdate: F !== 1,
388
389
  selectedId: F === 2 ? o.id : null,
389
390
  "data-testid": "roles-managerole-add-button",
390
391
  open: F,
391
392
  setOpen: D,
392
- isRoleListModified: ne
393
+ isRoleListModified: ie
393
394
  }
394
395
  ) }),
395
- /* @__PURE__ */ t(H, { fallback: /* @__PURE__ */ t("div", { className: "animate-pulse w-80 h-20 " }), children: O === !0 && /* @__PURE__ */ t(
396
- ye,
396
+ /* @__PURE__ */ t(H, { fallback: /* @__PURE__ */ t("div", { className: "animate-pulse w-80 h-20 " }), children: P === !0 && /* @__PURE__ */ t(
397
+ we,
397
398
  {
398
- open: O,
399
+ open: P,
399
400
  setOpenModal: B,
400
401
  selectedId: o.id,
401
402
  setData: () => N(!0),
@@ -408,15 +409,15 @@ function Ne() {
408
409
  ) })
409
410
  ] }) });
410
411
  }
411
- const Ue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
412
+ const We = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
412
413
  __proto__: null,
413
- default: Ne
414
+ default: Ie
414
415
  }, Symbol.toStringTag, { value: "Module" }));
415
416
  export {
416
- Ue as R,
417
- Be as a,
418
- Oe as b,
419
- ve as g,
420
- De as p
417
+ We as R,
418
+ De as a,
419
+ Be as b,
420
+ ye as g,
421
+ Ue as p
421
422
  };
422
- //# sourceMappingURL=RoleManagement-BThAL5LO.js.map
423
+ //# sourceMappingURL=RoleManagement-Cg8-EiVr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleManagement-Cg8-EiVr.js","sources":["../src/services/Roles.js","../src/views/Roles/Skeletons/RoleManagementSkeleton.jsx","../src/views/Roles/RoleManagement.jsx"],"sourcesContent":["import implementationConfig from \"@/common/config/implementationConfig\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getAllRoleList = () => api.get(\"/role\");\n\nexport const deleteRoleFeature = (id) =>\n api.delete(implementationConfig.api.useQueryParamStyle ? `/menuconfig/usermenuitem/delete?empMenuItemId=${id}` : `/menuconfig/usermenuitem/${id}`);\n\nexport const getRoleById = (id) => api.get(implementationConfig.api.useQueryParamStyle ? `/role/retrieveById?id=${id}` : `/role/${id}`);\n\nexport const postRole = (params) => api.post(\"/role\", { ...params });\n\nexport const putRole = (params) => implementationConfig.api.useQueryParamStyle ? api.put(\"/role/update\", { ...params }) : api.post(\"/role\", { ...params });\n\nexport const ToggleState = (params) =>\n api.put(`role/?is_active=${params.state === \"INACTIVE\" ? \"true\" : \"false\"}`, {\n ...params,\n });\nexport const postNewFeature = (params, id) =>\n api.post(`/menuconfig/assignnewfeature?roleId=${id}`, { ...params });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst RoleManagementSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"pt-6 relative h-[90vh]\">\n {/* skleton for roles and add button */}\n\n <div className=\"flex flex-row h-[80vh] \">\n <div className=\"flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md\">\n {\" \"}\n <div className=\"flex justify-between\">\n {/* skleton for list of roles and toogle roles */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-23 h-[40px] mr-3\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n <div className=\"flex flex-col border border-gray-300 w-[80%] p-2 rounded-md\">\n <div className=\"flex justify-between\">\n {/* skleton for role name and options */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-24 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-21 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n </div>\n\n <div className=\"absolute bottom-20 right-[10px] \">\n <div className=\"bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nRoleManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport default RoleManagementSkeleton;\n","import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { Suspense, useEffect, useState, lazy } from \"react\";\nimport {\n Box,\n Card,\n Switch,\n TextField,\n Button,\n Chip,\n Typography,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getAllRoleList,\n ToggleState,\n deleteRoleFeature,\n getRoleById,\n} from \"../../services/Roles.js\";\nimport { getRoleList } from \"@/common/services/GlobalApis.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport RoleManagementSkeleton from \"./Skeletons/RoleManagementSkeleton.jsx\";\nimport { useSelector } from \"react-redux\";\nconst AddFeatures = lazy(() => import(\"./AddFeatures.jsx\"));\nconst ManageRole = lazy(() => import(\"./ManageRole.jsx\"));\n\nexport default function RoleManagement() {\n const { translate } = useTranslateProvider();\n const [Data, setData] = useState(\"\");\n const [selectedRole, setSelectedRole] = useState(Data[0]);\n const [includeInActive, setincludeInActive] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [openManageRole, setOpenManageRole] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [rights, setRights] = useState({});\n const trackEvent = useTrackEvent();\n const currentLoogedInUserRoleId = useSelector((state) => state.Authenticate.user.roleId);\n const [allowedRoleIds, setallowedRoleIds] = useState([]);\n\n const getAllData = async (isPreserveRole = false) => {\n try {\n setIsLoading(true);\n const roleListPromise = includeInActive ? getAllRoleList() : getRoleList();\n let data, userRoleIds = [];\n if (currentLoogedInUserRoleId) {\n // Run both APIs in parallel\n const [{ data: roleData }, currRoleData] = await Promise.all([\n roleListPromise,\n getRoleById(currentLoogedInUserRoleId),\n ]);\n data = roleData;\n userRoleIds = currRoleData?.data?.roleIds || [];\n } else {\n // Only fetch role list\n const { data: roleData } = await roleListPromise;\n data = roleData;\n }\n setallowedRoleIds(userRoleIds);\n // ✅ Filter logic (keep only allowed roles)\n const filteredData =\n userRoleIds.length > 0\n ? data.filter((role) => userRoleIds.includes(role.id))\n : data; // fallback: show all if no roleIds\n setData(filteredData);\n if (!isPreserveRole && filteredData.length > 0) {\n setSelectedRole(filteredData[0]);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(function () {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\"techo.manage.role\");\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n getAllData();\n }, []);\n\n const handleCheckboxChange = async (event) => {\n let isChecked = event.target.checked;\n setincludeInActive(event.target.checked);\n try {\n setIsLoading((cur) => !cur);\n let data;\n if (isChecked) {\n ({ data } = await getAllRoleList());\n } else {\n ({ data } = await getRoleList());\n }\n if (allowedRoleIds && allowedRoleIds.length > 0) {\n data = data.filter(\n (role) => allowedRoleIds.includes(role.id)\n );\n }\n setData(data);\n setSelectedRole(data[0]);\n setIsLoading((cur) => !cur);\n setSearchText(\"\");\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const filterData = Data\n ? Data?.filter((feature) =>\n feature.name.toLowerCase().includes(searchText.toLowerCase())\n )\n : [];\n\n const formatDateDDMMYYYY = (timestamp) => {\n if (!timestamp) return \"\";\n const date = new Date(Number(timestamp));\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n };\n\n const handleToggleState = async () => {\n try {\n const payload = Data?.find((data) => data.id === selectedRole.id);\n await ToggleState(payload);\n showToast({\n message: `State succesfully changed from ${payload?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${payload?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n type: \"success\",\n });\n let res;\n setIsLoading((cur) => !cur);\n if (includeInActive) {\n res = await getAllRoleList();\n } else {\n res = await getRoleList();\n }\n\n setData(res.data);\n setSelectedRole(res.data[0]);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in handle active\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const sortedFilteredFeatures = Data\n ? Data.find((obj) => obj.id === selectedRole.id)\n ?.assignedFeatureList.filter((feature) =>\n feature.featureName\n ?.toLowerCase()\n .includes(searchQuery?.toLowerCase())\n )\n .sort((a, b) => a.featureName?.localeCompare(b.featureName))\n : [];\n\n const handleDeleteRoleFeature = async (feature) => {\n try {\n await deleteRoleFeature(feature.userMenuItemId);\n await getAllData(true);\n setSearchQuery(\"\");\n showToast({ message: \"Feature deleted successfully!\", type: \"success\" });\n } catch (error) {\n showToast({ message: error, type: \"error\" });\n }\n };\n\n const handleManageRoleModel = (index) => {\n setOpenManageRole(index);\n trackEvent(\"button_click\", {\n button_name: `${index === 1 ? \"add\" : \"edit\"} role modal button`,\n button_type: \"navigate\",\n button_id: `roles-${index === 1 ? \"add\" : \"edit\"}-button`,\n });\n };\n\n const isRoleListModified = () => {\n getAllData();\n setSearchText(\"\");\n };\n\n const handleOpen = async () => {\n try {\n setOpenModal(true);\n await trackEvent(\"button_click\", {\n button_name: \"add feature button\",\n button_type: \"navigate\",\n button_id: \"roles-addfeatures-button-add\",\n });\n } catch (error) {\n console.error(error);\n }\n };\n\n return GeneralUtil.isTecho && !isLoading && !rights?.[\"view.manage.role\"] ? (\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 Roles\n </Typography>\n </Card>\n </Box>\n ) : (\n <RoleManagementSkeleton isLoading={isLoading}>\n <Box className=\"flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]\">\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:w-[300px] flex flex-col p-4\"\n >\n <div className=\"flex justify-between items-center mb-3\">\n <Typography\n variant=\"h6\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n User Roles\n </Typography>\n {(!GeneralUtil.isTecho || rights?.['create.manage.role']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => handleManageRoleModel(1)}\n data-testid=\"managerole-add-button\"\n >\n {translate(\"+ Add Role\")}\n </Button>\n )}\n </div>\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Search roles...\"\n fullWidth\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n data-testid=\"listofroles-search-input\"\n />\n <div className=\"flex items-center gap-2 mt-3\">\n <Switch\n size=\"small\"\n checked={includeInActive}\n onChange={handleCheckboxChange}\n />\n <Typography variant=\"body2\">Include Inactive</Typography>\n </div>\n <div className=\"flex-1 overflow-y-auto mt-4\">\n {filterData.length > 0 && (\n <>\n {filterData.map((role) => (\n <Card\n key={role.id}\n variant=\"outlined\"\n onClick={() => setSelectedRole(role)}\n className={`p-3 cursor-pointer transition\n ${selectedRole.id === role.id\n ? \"border-b-2\"\n : \"border-b-2 border-0\"\n }`}\n sx={\n selectedRole.id === role.id\n ? {\n bgcolor: (t) => alpha(t.palette.primary.main, 0.08),\n }\n : {}\n }\n >\n <Typography fontWeight={600}>\n {role.name}\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n {role?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {role.assignedFeatureList.length} Features\n </Typography>\n </Card>\n ))}\n </>\n )}\n </div>\n </Card>\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:flex-1 flex flex-col p-5\"\n >\n <div className=\"flex flex-col sm:flex-row justify-between items-start border-b pb-4 gap-4\">\n <div className=\"flex flex-col gap-1 w-full sm:w-auto\">\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"h5\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n {selectedRole?.name || \"Select Role\"}\n </Typography>\n {selectedRole?.state === \"ACTIVE\" && (\n <Chip label=\"ACTIVE\" color=\"success\" size=\"small\" />\n )}\n {selectedRole?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </div>\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n className=\"mt-1\"\n >\n Created on {formatDateDDMMYYYY(selectedRole?.createdOn)}\n </Typography>\n </div>\n <div className=\"flex gap-2\">\n {(!GeneralUtil.isTecho || rights?.['update.manage.role.toggleActive']) && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => handleToggleState(1)}\n >\n {selectedRole?.state === \"ACTIVE\" ? \"Deactivate\" : \"Activate\"}\n </Button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.role']) && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={() => handleManageRoleModel(2)}\n >\n ✏️ Edit Role\n </Button>\n )}\n </div>\n </div>\n {/* ASSIGNED FEATURES */}\n <div className=\"mt-5 flex flex-col flex-1 overflow-hidden\">\n <div className=\"flex flex-col sm:flex-row justify-between items-start sm:items-center mb-4 gap-4\">\n <div className=\"flex flex-row items-center gap-2 w-full sm:w-auto\">\n <Typography fontWeight={600}>{translate(\"Assigned Features\")}</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ({sortedFilteredFeatures.length} {translate(\"features active for this role\")})\n </Typography>\n </div>\n <TextField\n size=\"small\"\n sx={{ width: { xs: \"100%\", sm: \"60%\" } }}\n placeholder=\"Search Feature Name\"\n variant=\"outlined\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n data-testid=\"assignedfeatures-search-input\"\n />\n </div>\n <Box className=\"overflow-x-auto w-full\">\n <Box\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]\"\n sx={{\n color: \"text.secondary\",\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n }}\n >\n <div>{translate(\"FEATURE NAME\")}</div>\n <div className=\"text-center\">{translate(\"ACTIONS\")}</div>\n </Box>\n <Box\n className=\"h-[calc(100vh-440px)] overflow-y-auto min-w-[500px]\"\n sx={{\n bgcolor: \"background.paper\",\n }}\n >\n {sortedFilteredFeatures.length > 0 && (\n <>\n {sortedFilteredFeatures.map((feature, index) => (\n <Box\n key={feature.id}\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition\"\n sx={{\n \"&:hover\": {\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n },\n }}\n >\n <div className=\"flex flex-col\">\n <Typography sx={{ fontSize: \"13px\", fontWeight: 600 }}>\n {feature.featureName}\n </Typography>\n </div>\n <div className=\"flex justify-center\">\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.unassignFeature']) && (\n <FontAwesomeIcon\n icon={faTrash}\n onClick={() => {\n handleDeleteRoleFeature(feature);\n }}\n color=\"error\"\n className=\"text-red-400 cursor-pointer\"\n data-testid={`assignedfeatures-delete-icon-${index}`}\n />\n )}\n </div>\n </Box>\n ))}\n </>\n )}\n {sortedFilteredFeatures.length === 0 && (\n <>\n <Typography\n className=\"p-4\"\n sx={{ fontSize: \"13px\", fontStyle: \"italic\" }}\n >\n No Features assigned yet!\n </Typography>\n </>\n )}\n </Box>\n </Box>\n </div>\n <Box\n className=\"border-t p-4\"\n sx={{\n bgcolor: (t) => alpha(t.palette.primary.main, 0.06),\n }}\n >\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.assignFeature']) && (\n <Button variant=\"outlined\" size=\"small\" onClick={handleOpen}>\n + Add More Features\n </Button>\n )}\n </Box>\n </Card>\n <Suspense>\n <ManageRole\n isUpdate={openManageRole !== 1}\n selectedId={openManageRole === 2 ? selectedRole.id : null}\n data-testid=\"roles-managerole-add-button\"\n open={openManageRole}\n setOpen={setOpenManageRole}\n isRoleListModified={isRoleListModified}\n />\n </Suspense>\n <Suspense fallback={<div className=\"animate-pulse w-80 h-20 \"></div>}>\n {openModal === true && (\n <AddFeatures\n open={openModal}\n setOpenModal={setOpenModal}\n selectedId={selectedRole.id}\n setData={() => getAllData(true)}\n assignedFeatureList={\n Data\n ? (() =>\n Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n ? Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n : Data[0]?.assignedFeatureList)()\n : []\n }\n data-testid=\"roles-addfeatures-component\"\n />\n )}\n </Suspense>\n </Box>\n </RoleManagementSkeleton>\n );\n}\n"],"names":["getAllRoleList","api","deleteRoleFeature","id","implementationConfig","getRoleById","postRole","params","putRole","ToggleState","postNewFeature","RoleManagementSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddFeatures","lazy","ManageRole","RoleManagement","translate","useTranslateProvider","Data","setData","useState","selectedRole","setSelectedRole","includeInActive","setincludeInActive","setIsLoading","openModal","setOpenModal","openManageRole","setOpenManageRole","searchText","setSearchText","searchQuery","setSearchQuery","rights","setRights","trackEvent","useTrackEvent","currentLoogedInUserRoleId","state","allowedRoleIds","setallowedRoleIds","getAllData","isPreserveRole","roleListPromise","getRoleList","data","userRoleIds","roleData","currRoleData","_a","filteredData","role","error","showToast","useEffect","featureJson","getAssignedFeatures","handleCheckboxChange","event","isChecked","cur","filterData","feature","formatDateDDMMYYYY","timestamp","date","day","month","year","handleToggleState","payload","res","sortedFilteredFeatures","obj","a","b","handleDeleteRoleFeature","handleManageRoleModel","index","isRoleListModified","handleOpen","GeneralUtil","Box","Card","Typography","Button","TextField","Switch","Fragment","t","alpha","Chip","FontAwesomeIcon","faTrash","Suspense","_b","_c"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { jsxs as d, Fragment as q, jsx as a } from "react/jsx-runtime";
2
- import { useTranslateProvider as v } from "@/common/languageTranslator/TranslationContext";
3
- import { showToast as I } from "@/common/toaster/toaster";
4
- import O from "@/hooks/useTrackEvent";
5
- import S from "@/views/custom-components/CustomConfirmationModal";
6
- import { Dialog as D, DialogTitle as F, DialogContent as A, TextField as M, DialogActions as U, Button as c } from "@mui/material";
2
+ import { useTranslateProvider as R } from "@/common/languageTranslator/TranslationContext";
3
+ import { showToast as v } from "@/common/toaster/toaster";
4
+ import I from "@/hooks/useTrackEvent";
5
+ import O from "@/views/custom-components/CustomConfirmationModal";
6
+ import { Dialog as S, DialogTitle as D, DialogContent as F, TextField as A, DialogActions as B, Button as c } from "@mui/material";
7
7
  import p from "prop-types";
8
- import { useState as m, useCallback as z, useEffect as B } from "react";
9
- import b from "@/common/services/util/GeneralUtil";
10
- const N = ({ configuredQuery: t, open: _, onClose: s }) => {
11
- const [n, C] = m(""), [E, T] = m(!1), [x, r] = m(!1), $ = O(), { translate: i } = v(), y = b.isEkavach || b.isPhmp, w = z(() => {
8
+ import { useState as m, useCallback as M, useEffect as z } from "react";
9
+ import N from "@/common/config/implementationConfig";
10
+ const U = ({ configuredQuery: t, open: b, onClose: s }) => {
11
+ const [n, C] = m(""), [_, T] = m(!1), [E, r] = m(!1), x = I(), { translate: i } = R(), y = N.queryBuilder.showClickhouseOption, w = M(() => {
12
12
  const o = t.query.includes("public");
13
13
  T(o);
14
14
  let e = `DELETE FROM QUERY_MASTER WHERE CODE='${t.code}';
@@ -23,41 +23,41 @@ VALUES (
23
23
  `, e += t.description ? `'${t.description}',
24
24
  ` : `null,
25
25
  `, e += t.returnsResultSet !== void 0 ? `${t.returnsResultSet}, ` : "false, ", e += t.state ? `'${t.state}', ` : "'ACTIVE', ", e += ` ${t == null ? void 0 : t.isMobileQuery},`, e += `${t == null ? void 0 : t.isPublic}`, y && (e += `,${t.isClickhouseQuery || !1}`), e += ");", C(e);
26
- }, [t]), k = () => {
26
+ }, [t]), $ = () => {
27
27
  navigator.clipboard.writeText(n).then(() => {
28
- I({ message: "Query Copied", type: "success" }), s();
28
+ v({ message: "Query Copied", type: "success" }), s();
29
29
  });
30
- }, R = () => {
31
- h(), r((o) => !o);
32
- }, h = () => {
33
- const o = new Blob([n], { type: "text/plain" }), e = (o.size / 1024).toFixed(2), u = URL.createObjectURL(o), l = document.createElement("a");
34
- l.href = u, l.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_${t.code}.sql`, document.body.appendChild(l), l.click(), $("file_download", {
30
+ }, f = () => {
31
+ u(), r((o) => !o);
32
+ }, u = () => {
33
+ const o = new Blob([n], { type: "text/plain" }), e = (o.size / 1024).toFixed(2), h = URL.createObjectURL(o), l = document.createElement("a");
34
+ l.href = h, l.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_${t.code}.sql`, document.body.appendChild(l), l.click(), x("file_download", {
35
35
  file_type: "sql",
36
36
  file_name: l.download,
37
37
  file_size: `${e} KB`,
38
38
  download_status: "success"
39
- }), document.body.removeChild(l), URL.revokeObjectURL(u), s();
40
- }, f = () => {
41
- E ? r((o) => !o) : h();
39
+ }), document.body.removeChild(l), URL.revokeObjectURL(h), s();
40
+ }, k = () => {
41
+ _ ? r((o) => !o) : u();
42
42
  };
43
- return B(() => {
43
+ return z(() => {
44
44
  t && w();
45
45
  }, [t, w]), /* @__PURE__ */ d(q, { children: [
46
46
  /* @__PURE__ */ a(
47
- S,
47
+ O,
48
48
  {
49
49
  description: "This Flyway contains keyword 'public'. Are you sure you want to download?",
50
50
  title: "CONFIRM ACTION",
51
- handleClick: R,
52
- open: x,
51
+ handleClick: f,
52
+ open: E,
53
53
  handleClose: () => r((o) => !o),
54
54
  dataTestId: "showflywayquery-customconfirmationmodal"
55
55
  }
56
56
  ),
57
- /* @__PURE__ */ d(D, { open: _, onClose: s, fullWidth: !0, maxWidth: "md", children: [
58
- /* @__PURE__ */ a(F, { className: "p-2.5 px-5 flex border-b font-medium text-lg", children: i("Flyway Query") }),
59
- /* @__PURE__ */ a(A, { children: /* @__PURE__ */ a(
60
- M,
57
+ /* @__PURE__ */ d(S, { open: b, onClose: s, fullWidth: !0, maxWidth: "md", children: [
58
+ /* @__PURE__ */ a(D, { className: "p-2.5 px-5 flex border-b font-medium text-lg", children: i("Flyway Query") }),
59
+ /* @__PURE__ */ a(F, { children: /* @__PURE__ */ a(
60
+ A,
61
61
  {
62
62
  multiline: !0,
63
63
  rows: 10,
@@ -81,11 +81,11 @@ VALUES (
81
81
  "data-testid": "showflywayquery-textfield"
82
82
  }
83
83
  ) }),
84
- /* @__PURE__ */ d(U, { children: [
84
+ /* @__PURE__ */ d(B, { children: [
85
85
  /* @__PURE__ */ a(
86
86
  c,
87
87
  {
88
- onClick: f,
88
+ onClick: k,
89
89
  variant: "contained",
90
90
  size: "small",
91
91
  color: "primary",
@@ -96,7 +96,7 @@ VALUES (
96
96
  /* @__PURE__ */ a(
97
97
  c,
98
98
  {
99
- onClick: k,
99
+ onClick: $,
100
100
  variant: "contained",
101
101
  size: "small",
102
102
  color: "primary",
@@ -119,12 +119,12 @@ VALUES (
119
119
  ] })
120
120
  ] });
121
121
  };
122
- N.propTypes = {
122
+ U.propTypes = {
123
123
  configuredQuery: p.any,
124
124
  open: p.any,
125
125
  onClose: p.any
126
126
  };
127
127
  export {
128
- N as default
128
+ U as default
129
129
  };
130
- //# sourceMappingURL=ShowFlywayQuery-BkyA6QaA.js.map
130
+ //# sourceMappingURL=ShowFlywayQuery-tj42YQAS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShowFlywayQuery-tj42YQAS.js","sources":["../src/views/QueryBuilder/ShowFlywayQuery.jsx"],"sourcesContent":["import { useTranslateProvider } from '@/common/languageTranslator/TranslationContext';\nimport { showToast } from '@/common/toaster/toaster';\nimport useTrackEvent from '@/hooks/useTrackEvent';\nimport CustomConfirmationModal from '@/views/custom-components/CustomConfirmationModal';\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from '@mui/material';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport implementationConfig from \"@/common/config/implementationConfig\";\n\n/**\n * A React functional component that displays a configured Flyway query.\n * @mdoule ShowFlywayQuery\n * @param {Object} props - Component properties.\n * @param {Object} props.configuredQuery - The query configuration object to display.\n * @param {boolean} props.open - Boolean flag indicating if the component should be visible.\n * @param {function} props.onClose - Callback function to close the component.\n */\n\nconst ShowFlywayQuery = ({ configuredQuery, open, onClose }) => {\n const [text, setText] = useState('');\n const [isPublicKeyword, setIsPublicKeyword] = useState(false);\n const [openConfirm, setOpenConfirm] = useState(false);\n const trackEvent = useTrackEvent();\n const { translate } = useTranslateProvider();\n const isClickhouseEnabledEnv = implementationConfig.queryBuilder.showClickhouseOption;\n\n /**\n *\n * Generates a SQL query string based on the `configuredQuery` object.\n * @function generateQueryText\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query.\n * @param {string} configuredQuery.code - The unique code for the query.\n * @param {string} configuredQuery.uuid - The unique identifier for the query.\n * @param {number} configuredQuery.createdBy - The ID of the user who created the query.\n * @param {string} [configuredQuery.params] - The parameters for the query.\n * @param {string} configuredQuery.query - The actual SQL query text.\n * @param {string} [configuredQuery.description] - A description of the query.\n * @param {boolean} [configuredQuery.returnsResultSet] - Flag indicating if the query returns a result set.\n * @param {string} [configuredQuery.state] - The state of the query (e.g., 'ACTIVE').\n * @returns {void}\n */\n\n const generateQueryText = useCallback(() => {\n const publicKeyword = configuredQuery.query.includes('public');\n setIsPublicKeyword(publicKeyword);\n\n let queryText = `DELETE FROM QUERY_MASTER WHERE CODE='${configuredQuery.code}';\\n\\n`;\n queryText += `INSERT INTO QUERY_MASTER (uuid, created_by, created_on, modified_by, modified_on, code, params, query, description, returns_result_set, state, is_mobile_query, is_public ${isClickhouseEnabledEnv ? ', is_clickhouse_query' : ''}) \\nVALUES ( \\n`;\n queryText += `'${configuredQuery.uuid}', ${configuredQuery.createdBy}, current_date, ${configuredQuery.createdBy}, current_date, `;\n queryText += `'${configuredQuery.code}', \\n`;\n\n queryText += configuredQuery.params ? `'${configuredQuery.params}', \\n` : 'null, \\n';\n queryText += `'${configuredQuery.query.replace(/'/g, \"''\")}', \\n`;\n queryText += configuredQuery.description ? `'${configuredQuery.description}', \\n` : 'null, \\n';\n queryText += configuredQuery.returnsResultSet !== undefined ? `${configuredQuery.returnsResultSet}, ` : 'false, ';\n queryText += configuredQuery.state ? `'${configuredQuery.state}', ` : `'ACTIVE', `;\n queryText += ` ${configuredQuery?.isMobileQuery},`;\n queryText += `${configuredQuery?.isPublic}`;\n if (isClickhouseEnabledEnv) queryText += `,${configuredQuery.isClickhouseQuery || false}`;\n queryText += ');';\n\n setText(queryText);\n }, [configuredQuery]);\n\n /**\n *\n * Copies the generated query text to the clipboard and displays a success message.\n * @function copyQuery\n * @returns {void}\n */\n\n const copyQuery = () => {\n navigator.clipboard.writeText(text).then(() => {\n showToast({ message: 'Query Copied', type: 'success' });\n onClose();\n });\n };\n\n /**\n * Triggers a download operation and toggles the confirmation dialog visibility.\n * The function assumes that `download` and `setOpenConfirm` are available in the current scope.\n * @function askForConfirmation\n * @returns {void}\n */\n\n const askForConfirmation = () => {\n download();\n setOpenConfirm((cur) => !cur);\n };\n\n /**\n * Creates and triggers a download of a text file containing the query text.\n *\n * @function download\n * @returns {void}\n */\n\n const download = () => {\n const blob = new Blob([text], { type: 'text/plain' });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `V${new Date().getTime()}__CHANGE_IN_${configuredQuery.code}.sql`;\n document.body.appendChild(a);\n\n a.click();\n trackEvent('file_download', {\n file_type: 'sql',\n file_name: a.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: 'success',\n });\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n /**\n *\n * Handles the download process based on the presence of a public keyword in the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n if (isPublicKeyword) {\n setOpenConfirm((cur) => !cur);\n } else {\n download();\n }\n };\n\n /**\n * `useEffect` Hook to Generate Query Text\n *\n * This effect hook is used to generate the SQL query text whenever the `configuredQuery` dependency changes.\n *\n * @function useEffect\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query text.\n * @param {function} generateQueryText - A function that generates the query text based on `configuredQuery`.\n */\n\n useEffect(() => {\n if (configuredQuery) {\n generateQueryText();\n }\n }, [configuredQuery, generateQueryText]);\n return (\n <>\n <CustomConfirmationModal\n description={\"This Flyway contains keyword 'public'. Are you sure you want to download?\"}\n title={'CONFIRM ACTION'}\n handleClick={askForConfirmation}\n open={openConfirm}\n handleClose={() => setOpenConfirm((cur) => !cur)}\n dataTestId=\"showflywayquery-customconfirmationmodal\"\n />\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"md\">\n <DialogTitle className=\"p-2.5 px-5 flex border-b font-medium text-lg\">{translate('Flyway Query')}</DialogTitle>\n <DialogContent>\n <TextField\n multiline\n rows={10}\n variant=\"outlined\"\n fullWidth\n value={text}\n sx={{\n '& .MuiInputBase-input': {\n fontSize: '14px',\n },\n '& .MuiOutlinedInput-root': {\n // fontSize: '14px'\n borderRadius: '5px',\n },\n }}\n slotProps={{\n input: {\n readOnly: true,\n },\n }}\n data-testid=\"showflywayquery-textfield\"\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={handleDownload}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-download\"\n >\n {translate('Download')}\n </Button>\n <Button\n onClick={copyQuery}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-copyquery\"\n >\n {translate('Copy Query')}\n </Button>\n <Button\n onClick={onClose}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n data-testid=\"showflywayquery-button-cancel\"\n >\n {translate('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nShowFlywayQuery.propTypes = {\n configuredQuery: PropTypes.any,\n open: PropTypes.any,\n onClose: PropTypes.any,\n};\n\nexport default ShowFlywayQuery;\n"],"names":["ShowFlywayQuery","configuredQuery","open","onClose","text","setText","useState","isPublicKeyword","setIsPublicKeyword","openConfirm","setOpenConfirm","trackEvent","useTrackEvent","translate","useTranslateProvider","isClickhouseEnabledEnv","implementationConfig","generateQueryText","useCallback","publicKeyword","queryText","copyQuery","showToast","askForConfirmation","download","cur","blob","blobSizeInKB","url","a","handleDownload","useEffect","jsxs","Fragment","jsx","CustomConfirmationModal","Dialog","DialogTitle","DialogContent","TextField","DialogActions","Button","PropTypes"],"mappings":"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"}
@@ -9,7 +9,7 @@ import o from "prop-types";
9
9
  import { useNavigate as ce } from "react-router-dom";
10
10
  import { FontAwesomeIcon as f } from "@fortawesome/react-fontawesome";
11
11
  import { faArrowsRotate as de, faPen as ie, faFloppyDisk as ue } from "@fortawesome/free-solid-svg-icons";
12
- import { S as me } from "./FeatureMenu-CLX8VNZ-.js";
12
+ import { S as me } from "./FeatureMenu-DUZL32RI.js";
13
13
  import h from "@/common/services/util/GeneralUtil";
14
14
  const pe = L(() => import("./FlywayQuery-Cx2sly6g.js")), ye = L(() => import("./ServerSyncModal-D_oFpv3C.js"));
15
15
  function fe({
@@ -188,4 +188,4 @@ fe.propTypes = {
188
188
  export {
189
189
  fe as default
190
190
  };
191
- //# sourceMappingURL=SubMenu-BGznOP2a.js.map
191
+ //# sourceMappingURL=SubMenu-CM_4wNCR.js.map