@argusoft/medplat-core 1.0.0

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 (113) hide show
  1. package/dist/AccessRights-sgIhYR30.js +1238 -0
  2. package/dist/AccessRights-sgIhYR30.js.map +1 -0
  3. package/dist/AddEditQueryBuilder-BaZxS2Cm.js +289 -0
  4. package/dist/AddEditQueryBuilder-BaZxS2Cm.js.map +1 -0
  5. package/dist/AddEditQueryBuilder.css +1 -0
  6. package/dist/AddFeatures-BxXCC6ex.js +212 -0
  7. package/dist/AddFeatures-BxXCC6ex.js.map +1 -0
  8. package/dist/AddLabelModal-DE3ploGD.js +734 -0
  9. package/dist/AddLabelModal-DE3ploGD.js.map +1 -0
  10. package/dist/AddMenuConfiguration-QWfpcnuP.js +2237 -0
  11. package/dist/AddMenuConfiguration-QWfpcnuP.js.map +1 -0
  12. package/dist/AddMenuConfiguration.css +1 -0
  13. package/dist/AddRoleDrawer-ZK1eejxI.js +453 -0
  14. package/dist/AddRoleDrawer-ZK1eejxI.js.map +1 -0
  15. package/dist/AppModal-BgZyfrd-.js +428 -0
  16. package/dist/AppModal-BgZyfrd-.js.map +1 -0
  17. package/dist/ChangePasswordModal-MV7g8tkA.js +176 -0
  18. package/dist/ChangePasswordModal-MV7g8tkA.js.map +1 -0
  19. package/dist/ConditionConfig-BqWe0NKO.js +395 -0
  20. package/dist/ConditionConfig-BqWe0NKO.js.map +1 -0
  21. package/dist/ConditionConfig.css +1 -0
  22. package/dist/EntityManagement-D-x6Qzal.js +50 -0
  23. package/dist/EntityManagement-D-x6Qzal.js.map +1 -0
  24. package/dist/EventConfigurations-jGCJ4LqP.js +384 -0
  25. package/dist/EventConfigurations-jGCJ4LqP.js.map +1 -0
  26. package/dist/EventConfigurations.css +1 -0
  27. package/dist/EventsExceptionModal-BF6E1Np7.js +200 -0
  28. package/dist/EventsExceptionModal-BF6E1Np7.js.map +1 -0
  29. package/dist/EventsSkeleton-BN7_0IGs.js +74 -0
  30. package/dist/EventsSkeleton-BN7_0IGs.js.map +1 -0
  31. package/dist/FeatureMenu-BYSRoNm0.js +249 -0
  32. package/dist/FeatureMenu-BYSRoNm0.js.map +1 -0
  33. package/dist/Features-CKMmuqcs.js +11 -0
  34. package/dist/Features-CKMmuqcs.js.map +1 -0
  35. package/dist/FlywayQuery-Cx2sly6g.js +169 -0
  36. package/dist/FlywayQuery-Cx2sly6g.js.map +1 -0
  37. package/dist/ImmunizationConfigurationBase-CdCgDaAl.js +5299 -0
  38. package/dist/ImmunizationConfigurationBase-CdCgDaAl.js.map +1 -0
  39. package/dist/ImmunizationConfigurationBase.css +1 -0
  40. package/dist/ImmunizationConfigurationsList-CQnxWa09.js +335 -0
  41. package/dist/ImmunizationConfigurationsList-CQnxWa09.js.map +1 -0
  42. package/dist/ImmunizationSkeleton-D2tdv5k-.js +186 -0
  43. package/dist/ImmunizationSkeleton-D2tdv5k-.js.map +1 -0
  44. package/dist/LanguagesModal-rk6IGQwY.js +394 -0
  45. package/dist/LanguagesModal-rk6IGQwY.js.map +1 -0
  46. package/dist/ManageDynamicFeature-CeeqiS3K.js +4189 -0
  47. package/dist/ManageDynamicFeature-CeeqiS3K.js.map +1 -0
  48. package/dist/ManageEventConfiguration-BRXh51fc.js +1017 -0
  49. package/dist/ManageEventConfiguration-BRXh51fc.js.map +1 -0
  50. package/dist/ManageEventConfiguration.css +1 -0
  51. package/dist/ManageNotification-B4prX-9Z.js +6819 -0
  52. package/dist/ManageNotification-B4prX-9Z.js.map +1 -0
  53. package/dist/ManageRole-ByqBmjuc.js +699 -0
  54. package/dist/ManageRole-ByqBmjuc.js.map +1 -0
  55. package/dist/ManageTranslation-BTxvSYKb.js +616 -0
  56. package/dist/ManageTranslation-BTxvSYKb.js.map +1 -0
  57. package/dist/ManageTranslation.css +1 -0
  58. package/dist/ManageUser-PHiTNyF8.js +2160 -0
  59. package/dist/ManageUser-PHiTNyF8.js.map +1 -0
  60. package/dist/ManageUser.css +1 -0
  61. package/dist/MobileMenuManagement-DmQU5TTo.js +108 -0
  62. package/dist/MobileMenuManagement-DmQU5TTo.js.map +1 -0
  63. package/dist/MobileTypeEventConfigModal-BCp-SF4-.js +783 -0
  64. package/dist/MobileTypeEventConfigModal-BCp-SF4-.js.map +1 -0
  65. package/dist/NewServerManagement-5YcAtF-g.js +1002 -0
  66. package/dist/NewServerManagement-5YcAtF-g.js.map +1 -0
  67. package/dist/NotificationFlywayQuery-BY8Zzml_.js +244 -0
  68. package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +1 -0
  69. package/dist/NotificationList-BkpOrCpM.js +400 -0
  70. package/dist/NotificationList-BkpOrCpM.js.map +1 -0
  71. package/dist/OtherTypeEventConfigModal-DPB8IYzj.js +2001 -0
  72. package/dist/OtherTypeEventConfigModal-DPB8IYzj.js.map +1 -0
  73. package/dist/QueryBuilder-Cus_mRwZ.js +378 -0
  74. package/dist/QueryBuilder-Cus_mRwZ.js.map +1 -0
  75. package/dist/QueryBuilder.css +1 -0
  76. package/dist/QueryManagement-DXA73N2j.js +671 -0
  77. package/dist/QueryManagement-DXA73N2j.js.map +1 -0
  78. package/dist/QueryManagement.css +1 -0
  79. package/dist/RoleManagement-CLaEJ90J.js +410 -0
  80. package/dist/RoleManagement-CLaEJ90J.js.map +1 -0
  81. package/dist/ServerSyncModal-uNjGCQJz.js +869 -0
  82. package/dist/ServerSyncModal-uNjGCQJz.js.map +1 -0
  83. package/dist/ShowFlywayQuery-DMsAbtOW.js +130 -0
  84. package/dist/ShowFlywayQuery-DMsAbtOW.js.map +1 -0
  85. package/dist/ShowFlywayQuery-DVRCd384.js +259 -0
  86. package/dist/ShowFlywayQuery-DVRCd384.js.map +1 -0
  87. package/dist/ShowQueryHistory-BDN0tzHg.js +190 -0
  88. package/dist/ShowQueryHistory-BDN0tzHg.js.map +1 -0
  89. package/dist/SubMenu-BHcSNSUF.js +187 -0
  90. package/dist/SubMenu-BHcSNSUF.js.map +1 -0
  91. package/dist/TableDetails-DzREeJkm.js +1508 -0
  92. package/dist/TableDetails-DzREeJkm.js.map +1 -0
  93. package/dist/TableList-B9hr05Hs.js +428 -0
  94. package/dist/TableList-B9hr05Hs.js.map +1 -0
  95. package/dist/TypeConfiguration-BYM8PjV9.js +117 -0
  96. package/dist/TypeConfiguration-BYM8PjV9.js.map +1 -0
  97. package/dist/UserList-BxB1tCwM.js +13042 -0
  98. package/dist/UserList-BxB1tCwM.js.map +1 -0
  99. package/dist/UserList.css +1 -0
  100. package/dist/UserListSkeleton-cglK2SaU.js +184 -0
  101. package/dist/UserListSkeleton-cglK2SaU.js.map +1 -0
  102. package/dist/WidgetList-BSApErov.js +188 -0
  103. package/dist/WidgetList-BSApErov.js.map +1 -0
  104. package/dist/_commonjsHelpers-BItOPCY9.js +29 -0
  105. package/dist/_commonjsHelpers-BItOPCY9.js.map +1 -0
  106. package/dist/i18next-CTOWN_jH.js +1394 -0
  107. package/dist/i18next-CTOWN_jH.js.map +1 -0
  108. package/dist/index.js +481 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/manageImmunization-B4swS745.js +1204 -0
  111. package/dist/manageImmunization-B4swS745.js.map +1 -0
  112. package/dist/manageImmunization.css +1 -0
  113. package/package.json +79 -0
@@ -0,0 +1,400 @@
1
+ import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
+ import { useState as l, useRef as R, useEffect as C, useCallback as re, Suspense as W, lazy as q } from "react";
3
+ import { useTranslateProvider as de } from "@/common/languageTranslator/TranslationContext";
4
+ import { api as J } from "@/common/interceptors/AxiosInterceptor";
5
+ import { getNotifications as U, getAllRoleList as ue } from "@/common/services/GlobalApis";
6
+ import me from "@/common/syncWithServer/SyncWithServerDialog";
7
+ import { showToast as T } from "@/common/toaster/toaster";
8
+ import fe from "@/views/custom-components/CustomConfirmationModal";
9
+ import { debounce as pe, Card as he, Typography as D, Box as I, FormControlLabel as Q, Checkbox as G, TextField as ge, Button as ye } from "@mui/material";
10
+ import { Grid as S } from "@mui/system";
11
+ import N from "prop-types";
12
+ import { useSelector as K } from "react-redux";
13
+ import { getUseSkeleton as X } from "@/store/reducers/SkeletonReducer";
14
+ import be from "@/hooks/useTrackEvent";
15
+ import xe from "@/views/custom-components/CustomizedTable/CustomizedTableV2";
16
+ import { faPen as Ne, faBars as ve } from "@fortawesome/free-solid-svg-icons";
17
+ import { FontAwesomeIcon as H } from "@fortawesome/react-fontawesome";
18
+ const we = ({ id: n, state: c }) => J.put(
19
+ `notificationtype/${n}?is_active=${c === "INACTIVE" ? "true" : "false"}`
20
+ ), De = (n) => J.post("notificationtype", n), Y = ({ children: n, isLoading: c }) => !K(X) || !c ? n : /* @__PURE__ */ s("div", { className: "flex flex-col gap-2", children: [
21
+ /* @__PURE__ */ s("div", { className: "flex space-between justify-between m-[0px]", children: [
22
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]" }),
23
+ /* @__PURE__ */ s("div", { className: "flex", children: [
24
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[150px] h-[40px] mx-[5px]" }),
25
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-[100px] h-[40px]" })
26
+ ] })
27
+ ] }),
28
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-100" })
29
+ ] });
30
+ Y.propTypes = {
31
+ children: N.any,
32
+ isLoading: N.any
33
+ };
34
+ const Ce = ({ children: n, isLoading: c }) => !K(X) || !c ? n : /* @__PURE__ */ s("div", { className: "flex flex-col w-full md:w-[650px] bg-white ", children: [
35
+ /* @__PURE__ */ e("div", { className: "px-2 py-2 flex items-center ", children: /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-60 h-10" }) }),
36
+ /* @__PURE__ */ e("hr", {}),
37
+ /* @__PURE__ */ s("div", { className: "flex flex-col w-full space-y-2 p-2", children: [
38
+ /* @__PURE__ */ s("div", { className: "flex flex-col space-y-2", children: [
39
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]" }),
40
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-10 " })
41
+ ] }),
42
+ /* @__PURE__ */ s("div", { className: "flex flex-col space-y-2 ", children: [
43
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]" }),
44
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-10 " })
45
+ ] }),
46
+ /* @__PURE__ */ s("div", { className: "flex flex-col space-y-2 ", children: [
47
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]" }),
48
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-10 " })
49
+ ] }),
50
+ /* @__PURE__ */ s("div", { className: "flex flex-col space-y-2 ", children: [
51
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]" }),
52
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-10 " })
53
+ ] }),
54
+ /* @__PURE__ */ s("div", { className: "flex flex-col space-y-2 ", children: [
55
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]" }),
56
+ /* @__PURE__ */ e("button", { className: "bg-gray-300 animate-pulse rounded-sm w-full h-10 " })
57
+ ] })
58
+ ] }),
59
+ /* @__PURE__ */ e("hr", {}),
60
+ /* @__PURE__ */ s("div", { className: "px-2 py-2 w-full flex space-x-3 items-center justify-end ", children: [
61
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-20 h-10" }),
62
+ /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm w-20 h-10" })
63
+ ] })
64
+ ] });
65
+ Ce.propTypes = {
66
+ children: N.any,
67
+ isLoading: N.any
68
+ };
69
+ const Te = q(() => import("./ManageNotification-B4prX-9Z.js")), Ie = q(() => import("./NotificationFlywayQuery-BY8Zzml_.js"));
70
+ function Se() {
71
+ const n = be(), [c, b] = l(""), [v, k] = l([]), [A, p] = l([]), [h, r] = l(""), [o, x] = l({}), [w, Z] = l([]), { translate: m } = de(), [E, M] = l(null), [O, f] = l(!1), ee = [
72
+ {
73
+ field: "notificationName",
74
+ label: "Name",
75
+ sortable: !0,
76
+ sortOrder: "asc",
77
+ align: "left"
78
+ },
79
+ {
80
+ field: "code",
81
+ label: "Code",
82
+ sortable: !0,
83
+ sortOrder: "asc",
84
+ align: "left"
85
+ },
86
+ {
87
+ field: "notificationType",
88
+ label: "Type",
89
+ align: "left",
90
+ render: (a) => /* @__PURE__ */ e(D, { mt: 0.5, children: a.notificationType === "WEB" ? "WEB" : "MOBILE" })
91
+ },
92
+ {
93
+ field: "state",
94
+ label: "State",
95
+ sortable: !0,
96
+ sortOrder: "asc",
97
+ align: "left"
98
+ },
99
+ { field: "Actions", label: "Actions", align: "left" }
100
+ ], [te, ae] = l(ee), [g, ie] = l(!0), [y, se] = l(!0), L = R(g), B = R(y);
101
+ C(() => {
102
+ L.current = g;
103
+ }, [g]), C(() => {
104
+ B.current = y;
105
+ }, [y]);
106
+ const oe = async () => {
107
+ try {
108
+ f((t) => !t), await we({ id: o.id, state: o.state }), r("");
109
+ const { data: a } = await U();
110
+ k(a), p(a), T({
111
+ type: "success",
112
+ message: `State succesfully changed from ${(o == null ? void 0 : o.state) === "INACTIVE" ? "inactive" : "active"} to ${(o == null ? void 0 : o.state) === "INACTIVE" ? "active" : "inactive"}`
113
+ }), f((t) => !t);
114
+ } catch (a) {
115
+ T({
116
+ type: "error",
117
+ message: `Error ${a}`
118
+ }), f((t) => !t);
119
+ }
120
+ }, ne = (a) => [
121
+ {
122
+ label: "",
123
+ icon: /* @__PURE__ */ e(
124
+ H,
125
+ {
126
+ icon: Ne,
127
+ "data-testid": "notificationlist-button-edit"
128
+ }
129
+ ),
130
+ onClick: (t) => {
131
+ r(1), x(t);
132
+ }
133
+ },
134
+ {
135
+ label: "",
136
+ icon: /* @__PURE__ */ e(
137
+ H,
138
+ {
139
+ icon: ve,
140
+ "data-testid": "notificationlist-button-menu"
141
+ }
142
+ ),
143
+ menuItems: [
144
+ {
145
+ label: m(
146
+ a.state === "ACTIVE" ? "Mark as Inactive" : "Mark as Active"
147
+ ),
148
+ onClick: (t) => {
149
+ x(t), r(2);
150
+ }
151
+ },
152
+ {
153
+ label: m("Sync With Server"),
154
+ onClick: (t) => {
155
+ if (!t.uuid) {
156
+ T({
157
+ type: "info",
158
+ message: "No configuration found. Please open the respective feature item and save it."
159
+ });
160
+ return;
161
+ }
162
+ r(4), M(t == null ? void 0 : t.uuid), x(t);
163
+ }
164
+ },
165
+ {
166
+ label: m("Show Flyway Query"),
167
+ onClick: (t) => {
168
+ r(3), x(t);
169
+ }
170
+ }
171
+ ]
172
+ }
173
+ ], _ = re(
174
+ pe((a) => {
175
+ const t = v.filter(
176
+ (i) => {
177
+ var d;
178
+ return ((d = i.notificationName) == null ? void 0 : d.toLowerCase().includes(a)) && i.state === (L.current ? "ACTIVE" : "INACTIVE") && i.notificationType === (B.current ? "MO" : "WEB");
179
+ }
180
+ );
181
+ n("search_tracking", {
182
+ searchTerm: a,
183
+ results_count: t.length,
184
+ search_type: "Page Search"
185
+ }), p(t);
186
+ }, 500),
187
+ [v, n]
188
+ ), le = (a) => {
189
+ const t = a.target.value.toLowerCase();
190
+ b(t), _(t);
191
+ }, ce = (a) => {
192
+ const t = a.sortOrder === "asc" ? "desc" : "asc";
193
+ ae(
194
+ (d) => d.map((u) => u.field === a.field ? { ...u, sortOrder: t } : u)
195
+ );
196
+ const i = [...A].sort((d, u) => {
197
+ var j, z;
198
+ const P = (j = d[a.field]) == null ? void 0 : j.toString().toLowerCase(), $ = (z = u[a.field]) == null ? void 0 : z.toString().toLowerCase();
199
+ return P < $ ? t === "asc" ? -1 : 1 : P > $ ? t === "asc" ? 1 : -1 : 0;
200
+ });
201
+ p(i);
202
+ }, V = async () => {
203
+ try {
204
+ f((i) => !i);
205
+ const { data: a } = await U();
206
+ k(a);
207
+ const t = a.filter((i) => i.notificationType === "MO" && i.state === "ACTIVE");
208
+ if (p(t), !w.length) {
209
+ const { data: i } = await ue();
210
+ Z(i);
211
+ }
212
+ f((i) => !i), b("");
213
+ } catch (a) {
214
+ console.error("error", a), f((t) => !t);
215
+ }
216
+ };
217
+ C(() => {
218
+ V();
219
+ }, []);
220
+ const F = (a, t) => {
221
+ const i = t === "status" ? a : g, d = t === "notificationType" ? a : y;
222
+ ie(i), se(d), c ? _(c) : p(
223
+ v.filter(
224
+ (u) => u.state === (i ? "ACTIVE" : "INACTIVE") && u.notificationType === (d ? "MO" : "WEB")
225
+ )
226
+ );
227
+ };
228
+ return /* @__PURE__ */ s(
229
+ he,
230
+ {
231
+ variant: "elevation",
232
+ container: !0,
233
+ className: "mt-6 p-3 flex flex-col space-y-3 shadow-xl",
234
+ children: [
235
+ /* @__PURE__ */ e(W, { children: /* @__PURE__ */ e(
236
+ Te,
237
+ {
238
+ open: h === 1 || h === 5,
239
+ handleClose: () => r(""),
240
+ data: h === 1 ? o : null,
241
+ roleData: w,
242
+ setNotifications: V,
243
+ "data-testid": "notification-list-managenotification-dialog"
244
+ }
245
+ ) }),
246
+ /* @__PURE__ */ e(W, { children: /* @__PURE__ */ e(
247
+ Ie,
248
+ {
249
+ open: h === 3,
250
+ handleClose: () => r(""),
251
+ data: o,
252
+ roleData: w
253
+ }
254
+ ) }),
255
+ /* @__PURE__ */ e(
256
+ fe,
257
+ {
258
+ title: "CONFIRM ACTION",
259
+ open: h === 2,
260
+ description: `Are you sure you want to change the state ${(o == null ? void 0 : o.state) === "INACTIVE" ? "inactive" : "active"} to ${(o == null ? void 0 : o.state) === "INACTIVE" ? "active" : "inactive"}`,
261
+ handleClick: oe,
262
+ handleClose: () => r(""),
263
+ dataTestId: "notification-list-customconfirmationmodal-dialog"
264
+ }
265
+ ),
266
+ /* @__PURE__ */ e(
267
+ me,
268
+ {
269
+ isOpen: !!E,
270
+ handleClose: () => M(() => null),
271
+ featureUUID: E,
272
+ dataTestId: "notification-list-syncwithserverdialog-dialog"
273
+ }
274
+ ),
275
+ /* @__PURE__ */ s(Y, { isLoading: O, children: [
276
+ /* @__PURE__ */ s(S, { container: !0, className: "flex justify-between", children: [
277
+ /* @__PURE__ */ e(S, { children: /* @__PURE__ */ e(
278
+ D,
279
+ {
280
+ variant: "body2",
281
+ className: "font-bold font-sans text-lg text-customBlue uppercase",
282
+ "data-testid": "notification-list-typography-title",
283
+ children: m("Notification Configuration")
284
+ }
285
+ ) }),
286
+ /* @__PURE__ */ s(I, { className: "flex flex-col sm:flex-row sm:items-center gap-3 w-full sm:w-auto", children: [
287
+ /* @__PURE__ */ s(I, { className: "flex items-center gap-3", children: [
288
+ /* @__PURE__ */ e(
289
+ Q,
290
+ {
291
+ control: /* @__PURE__ */ e(
292
+ G,
293
+ {
294
+ checked: g,
295
+ onChange: (a) => F(a.target.checked, "status"),
296
+ "data-testid": "notifications-checkbox-include-active"
297
+ }
298
+ ),
299
+ label: m("Active"),
300
+ slotProps: {
301
+ typography: {
302
+ className: "custom-label"
303
+ }
304
+ }
305
+ }
306
+ ),
307
+ /* @__PURE__ */ e(
308
+ Q,
309
+ {
310
+ control: /* @__PURE__ */ e(
311
+ G,
312
+ {
313
+ checked: y,
314
+ onChange: (a) => F(a.target.checked, "notificationType"),
315
+ "data-testid": "notifications-checkbox-include-mobile"
316
+ }
317
+ ),
318
+ label: m("Mobile"),
319
+ slotProps: {
320
+ typography: {
321
+ className: "custom-label"
322
+ }
323
+ }
324
+ }
325
+ )
326
+ ] }),
327
+ /* @__PURE__ */ s(I, { className: "flex items-center gap-3 w-full sm:w-auto", children: [
328
+ /* @__PURE__ */ e(
329
+ ge,
330
+ {
331
+ id: "searchQuery",
332
+ placeholder: "Search Text",
333
+ size: "small",
334
+ onChange: le,
335
+ className: "m-0 p-0 bg-white",
336
+ value: c,
337
+ "data-testid": "notification-list-textfield-search",
338
+ sx: {
339
+ "& .MuiInputBase-root": {
340
+ height: "2.4em",
341
+ width: { xs: "100%", sm: "190px" }
342
+ },
343
+ flex: { xs: 1, sm: 1 }
344
+ }
345
+ }
346
+ ),
347
+ /* @__PURE__ */ e(
348
+ ye,
349
+ {
350
+ size: "small",
351
+ variant: "contained",
352
+ onClick: () => {
353
+ n("button_click", {
354
+ button_name: "notification-list-add-button",
355
+ button_type: "navigate",
356
+ button_id: "notification-list-button-add"
357
+ }), r(5);
358
+ },
359
+ "data-testid": "notification-list-button-add",
360
+ sx: { whiteSpace: "nowrap" },
361
+ children: m("Add")
362
+ }
363
+ )
364
+ ] })
365
+ ] })
366
+ ] }),
367
+ /* @__PURE__ */ e(S, { size: { xs: 12 }, children: /* @__PURE__ */ e(
368
+ xe,
369
+ {
370
+ columns: te,
371
+ actions: ne,
372
+ tableData: A,
373
+ paginationConfig: {
374
+ pagination: !1
375
+ },
376
+ styleConfig: {
377
+ tableStyle: {
378
+ maxHeight: 40
379
+ }
380
+ },
381
+ handleSort: ce,
382
+ isLoading: O,
383
+ dataTestId: "notification-list-customizedtable"
384
+ }
385
+ ) })
386
+ ] })
387
+ ]
388
+ }
389
+ );
390
+ }
391
+ const Qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
392
+ __proto__: null,
393
+ default: Se
394
+ }, Symbol.toStringTag, { value: "Module" }));
395
+ export {
396
+ Ce as M,
397
+ Qe as N,
398
+ De as P
399
+ };
400
+ //# sourceMappingURL=NotificationList-BkpOrCpM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationList-BkpOrCpM.js","sources":["../src/services/Notifications.js","../src/views/Notifications/Skeletons/NotificationsSkeletons.jsx","../src/views/Notifications/NotificationList.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nexport const toggleActiveState = ({ id, state }) =>\n api.put(\n `notificationtype/${id}?is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}`\n );\nexport const PostNotification = (params) =>\n api.post(\"notificationtype\", params);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const NotificationListSkeleton = ({ children, isLoading }) => {\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=\"flex flex-col gap-2\">\n <div className=\"flex space-between justify-between m-[0px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[40px] mx-[5px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100px] h-[40px]\"></div>\n </div>\n </div>\n\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-100\"></div>\n </div>\n );\n};\n\nNotificationListSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageNotificationSkeleton = ({ children, isLoading }) => {\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=\"flex flex-col w-full md:w-[650px] bg-white \">\n <div className=\"px-2 py-2 flex items-center \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-60 h-10\"></div>\n </div>\n <hr></hr>\n <div className=\"flex flex-col w-full space-y-2 p-2\">\n <div className=\"flex flex-col space-y-2\">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n </div>\n <hr></hr>\n <div className=\"px-2 py-2 w-full flex space-x-3 items-center justify-end \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n </div>\n </div>\n );\n};\n\nManageNotificationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import {\n lazy,\n default as React,\n Suspense,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { toggleActiveState } from \"../../services/Notifications\";\nimport { getAllRoleList, getNotifications } from \"@/common/services/GlobalApis\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nconst ManageNotification = lazy(() => import(\"./ManageNotification\"));\nconst NotificationFlywayQuery = lazy(() => import(\"./NotificationFlywayQuery\"));\nimport { Box, Button, Card, Checkbox, debounce, FormControlLabel, TextField, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/system\";\nimport { NotificationListSkeleton } from \"./Skeletons/NotificationsSkeletons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { faBars, faPen } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\n/**\n *\n * @module NotificationList\n * @returns {JSX.element}\n *\n */\nexport default function NotificationList() {\n const trackEvent = useTrackEvent();\n const [search, setSearch] = useState(\"\");\n const [notifications, setNotifications] = useState([]);\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n const [openModal, setOpenModal] = useState(\"\");\n const [rowData, setRowData] = useState({});\n const [roleData, setRoleData] = useState([]);\n const { translate } = useTranslateProvider();\n const [featureUuid, setFeatureUuid] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const defaultColumns = [\n {\n field: \"notificationName\",\n label: \"Name\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"code\",\n label: \"Code\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"notificationType\",\n label: \"Type\",\n align: \"left\",\n render: (row) => {\n return <Typography mt={0.5}>{row.notificationType === 'WEB' ? 'WEB' : 'MOBILE'}</Typography>;\n }\n },\n {\n field: \"state\",\n label: \"State\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n { field: \"Actions\", label: \"Actions\", align: \"left\" },\n ];\n const [columns, setColumns] = useState(defaultColumns);\n const [isActive, setisActive] = useState(true);\n const [isMobile, setisMobile] = useState(true);\n\n const isActiveRef = useRef(isActive);\n const isMobileRef = useRef(isMobile);\n\n useEffect(() => {\n isActiveRef.current = isActive;\n }, [isActive]);\n\n useEffect(() => {\n isMobileRef.current = isMobile;\n }, [isMobile]);\n\n /**\n * Toggles the active/inactive status of a notification.\n * @async\n * @function toggleActiveStatus\n * @returns {Promise<void>} A promise that resolves when the active status has been toggled and notifications reloaded.\n */\n const toggleActiveStatus = async () => {\n try {\n setIsLoading((cur) => !cur);\n await toggleActiveState({ id: rowData.id, state: rowData.state });\n setOpenModal(\"\");\n const { data } = await getNotifications();\n setNotifications(data);\n setFilteredNotifications(data);\n showToast({\n type: \"success\",\n message: `State succesfully changed from ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n });\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error ${error}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n const actions = (row) => [\n {\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faPen}\n data-testid=\"notificationlist-button-edit\"\n />\n ),\n onClick: (e) => {\n setOpenModal(1);\n setRowData(e);\n },\n },\n {\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faBars}\n data-testid=\"notificationlist-button-menu\"\n />\n ),\n menuItems: [\n {\n label: translate(\n row.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\"\n ),\n onClick: (e) => {\n setRowData(e);\n setOpenModal(2);\n },\n },\n {\n label: translate(\"Sync With Server\"),\n onClick: (e) => {\n if (!e.uuid) {\n showToast({\n type: \"info\",\n message: `No configuration found. Please open the respective feature item and save it.`,\n });\n return;\n }\n setOpenModal(4);\n setFeatureUuid(e?.uuid);\n setRowData(e);\n },\n },\n {\n label: translate(\"Show Flyway Query\"),\n onClick: (e) => {\n setOpenModal(3);\n setRowData(e);\n },\n },\n ],\n },\n ];\n\n const debouncedFilter = useCallback(\n debounce((searchValue) => {\n const filteredData = notifications.filter(d =>\n d.notificationName?.toLowerCase().includes(searchValue) &&\n d.state === (isActiveRef.current ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (isMobileRef.current ? 'MO' : 'WEB')\n );\n trackEvent(\"search_tracking\", {\n searchTerm: searchValue,\n results_count: filteredData.length,\n search_type: \"Page Search\",\n });\n setFilteredNotifications(filteredData);\n }, 500),\n [notifications, trackEvent]\n );\n\n /**\n * Handles the search input to filter notifications by name.\n * @function handleSearch\n * @param {Object} e - The event object from the input field.\n * @param {string} e.target.value - The current value in the search input field.\n */\n const handleSearch = (e) => {\n const searchValue = e.target.value.toLowerCase();\n setSearch(searchValue);\n debouncedFilter(searchValue);\n };\n\n /**\n * Handles sorting of the notification list based on the specified column.\n * @function handleSort\n */\n const handleSort = (column) => {\n const order = column.sortOrder === \"asc\" ? \"desc\" : \"asc\";\n setColumns((prev) =>\n prev.map((col) => {\n if (col.field === column.field) {\n return { ...col, sortOrder: order };\n }\n return col;\n })\n );\n\n const sortedData = [...filteredNotifications].sort((a, b) => {\n const valA = a[column.field]?.toString().toLowerCase();\n const valB = b[column.field]?.toString().toLowerCase();\n\n if (valA < valB) {\n return order === \"asc\" ? -1 : 1;\n }\n if (valA > valB) {\n return order === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n setFilteredNotifications(sortedData);\n };\n\n /**\n * Loads initial data for notifications and roles when the component is mounted or when `openModal` changes.\n * @function useEffect\n * @param {boolean} openModal - The state that controls whether a modal is open. Triggers the hook to reload data when it changes.\n */\n\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const { data } = await getNotifications();\n setNotifications(data);\n const filteredData = data.filter(d => d.notificationType === 'MO' && d.state === 'ACTIVE');\n setFilteredNotifications(filteredData);\n if (!roleData.length) {\n const { data: roleData } = await getAllRoleList();\n setRoleData(roleData);\n }\n setIsLoading((cur) => !cur);\n setSearch('');\n } catch (error) {\n console.error(\"error\", error);\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n const handleFilter = (value, filterType) => {\n const nextIsActive =\n filterType === 'status' ? value : isActive;\n\n const nextIsMobile =\n filterType === 'notificationType' ? value : isMobile;\n\n setisActive(nextIsActive);\n setisMobile(nextIsMobile);\n\n if (search) {\n debouncedFilter(search);\n } else {\n setFilteredNotifications(\n notifications.filter(d =>\n d.state === (nextIsActive ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (nextIsMobile ? 'MO' : 'WEB')\n )\n );\n }\n };\n\n return (\n <Card\n variant=\"elevation\"\n container\n className=\"mt-6 p-3 flex flex-col space-y-3 shadow-xl\"\n >\n <Suspense>\n <ManageNotification\n open={openModal === 1 || openModal === 5}\n handleClose={() => setOpenModal(\"\")}\n data={openModal === 1 ? rowData : null}\n roleData={roleData}\n setNotifications={loadInitialData}\n data-testid=\"notification-list-managenotification-dialog\"\n />\n </Suspense>\n <Suspense>\n <NotificationFlywayQuery\n open={openModal === 3}\n handleClose={() => setOpenModal(\"\")}\n data={rowData}\n roleData={roleData}\n />\n </Suspense>\n <CustomConfirmationModal\n title={\"CONFIRM ACTION\"}\n open={openModal === 2}\n description={`Are you sure you want to change the state ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`}\n handleClick={toggleActiveStatus}\n handleClose={() => setOpenModal(\"\")}\n dataTestId=\"notification-list-customconfirmationmodal-dialog\"\n />\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={() => setFeatureUuid(() => null)}\n featureUUID={featureUuid}\n dataTestId=\"notification-list-syncwithserverdialog-dialog\"\n />\n <NotificationListSkeleton isLoading={isLoading}>\n <Grid container className=\"flex justify-between\">\n <Grid>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg text-customBlue uppercase\"\n data-testid=\"notification-list-typography-title\"\n >\n {translate(\"Notification Configuration\")}\n </Typography>\n </Grid>\n <Box className=\"flex flex-col sm:flex-row sm:items-center gap-3 w-full sm:w-auto\">\n <Box className=\"flex items-center gap-3\">\n <FormControlLabel\n control={\n <Checkbox\n checked={isActive}\n onChange={(e) =>\n handleFilter(e.target.checked, 'status')\n }\n data-testid=\"notifications-checkbox-include-active\"\n />\n }\n label={translate(\"Active\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={isMobile}\n onChange={(e) =>\n handleFilter(e.target.checked, 'notificationType')\n }\n data-testid=\"notifications-checkbox-include-mobile\"\n />\n }\n label={translate(\"Mobile\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n </Box>\n <Box className=\"flex items-center gap-3 w-full sm:w-auto\">\n <TextField\n id=\"searchQuery\"\n placeholder=\"Search Text\"\n size=\"small\"\n onChange={handleSearch}\n className=\"m-0 p-0 bg-white\"\n value={search}\n data-testid=\"notification-list-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n height: \"2.4em\",\n width: { xs: \"100%\", sm: \"190px\" },\n },\n flex: { xs: 1, sm: 1 }\n }}\n />\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"notification-list-add-button\",\n button_type: \"navigate\",\n button_id: \"notification-list-button-add\",\n });\n setOpenModal(5);\n }}\n data-testid=\"notification-list-button-add\"\n sx={{ whiteSpace: 'nowrap' }}\n >\n {translate(\"Add\")}\n </Button>\n </Box>\n </Box>\n </Grid>\n <Grid size={{ xs: 12 }}>\n <CustomizedTable\n columns={columns}\n actions={actions}\n tableData={filteredNotifications}\n paginationConfig={{\n pagination: false,\n }}\n styleConfig={{\n tableStyle: {\n maxHeight: 40,\n },\n }}\n handleSort={handleSort}\n isLoading={isLoading}\n dataTestId=\"notification-list-customizedtable\"\n />\n </Grid>\n </NotificationListSkeleton>\n </Card>\n );\n}\n"],"names":["toggleActiveState","id","state","api","PostNotification","params","NotificationListSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","ManageNotificationSkeleton","ManageNotification","lazy","NotificationFlywayQuery","NotificationList","trackEvent","useTrackEvent","search","setSearch","useState","notifications","setNotifications","filteredNotifications","setFilteredNotifications","openModal","setOpenModal","rowData","setRowData","roleData","setRoleData","translate","useTranslateProvider","featureUuid","setFeatureUuid","setIsLoading","defaultColumns","row","Typography","columns","setColumns","isActive","setisActive","isMobile","setisMobile","isActiveRef","useRef","isMobileRef","useEffect","toggleActiveStatus","cur","data","getNotifications","showToast","error","actions","FontAwesomeIcon","faPen","e","faBars","debouncedFilter","useCallback","debounce","searchValue","filteredData","_a","d","handleSearch","handleSort","column","order","prev","col","sortedData","a","b","valA","valB","_b","loadInitialData","getAllRoleList","handleFilter","value","filterType","nextIsActive","nextIsMobile","Card","Suspense","CustomConfirmationModal","SyncWithServerDialog","Grid","Box","FormControlLabel","Checkbox","TextField","Button","CustomizedTable"],"mappings":"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"}