@argusoft/medplat-core 1.0.14 → 1.0.15

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 (111) hide show
  1. package/dist/AccessRights-Bvd5Bm5K.js +1259 -0
  2. package/dist/AccessRights-Bvd5Bm5K.js.map +1 -0
  3. package/dist/{AddEditQueryBuilder-7JRplV5J.js → AddEditQueryBuilder-Bcjl5mXE.js} +2 -2
  4. package/dist/{AddEditQueryBuilder-7JRplV5J.js.map → AddEditQueryBuilder-Bcjl5mXE.js.map} +1 -1
  5. package/dist/{AddFeatures-CkTu7sOI.js → AddFeatures-CE5rBxEG.js} +2 -2
  6. package/dist/{AddFeatures-CkTu7sOI.js.map → AddFeatures-CE5rBxEG.js.map} +1 -1
  7. package/dist/{AddLabelModal-DE3ploGD.js → AddLabelModal-CB8E8cYG.js} +2 -2
  8. package/dist/{AddLabelModal-DE3ploGD.js.map → AddLabelModal-CB8E8cYG.js.map} +1 -1
  9. package/dist/{AddRoleDrawer-ZK1eejxI.js → AddRoleDrawer-SvntLdRu.js} +44 -43
  10. package/dist/AddRoleDrawer-SvntLdRu.js.map +1 -0
  11. package/dist/{AppModal-BgZyfrd-.js → AppModal-BKgIwe1h.js} +2 -2
  12. package/dist/{AppModal-BgZyfrd-.js.map → AppModal-BKgIwe1h.js.map} +1 -1
  13. package/dist/{ChangePasswordModalCore-DIe4rzW-.js → ChangePasswordModalCore-CTGy8Ttf.js} +2 -2
  14. package/dist/{ChangePasswordModalCore-DIe4rzW-.js.map → ChangePasswordModalCore-CTGy8Ttf.js.map} +1 -1
  15. package/dist/{ConditionConfig-GDCXIg3C.js → ConditionConfig-DB0FqwgG.js} +2 -2
  16. package/dist/{ConditionConfig-GDCXIg3C.js.map → ConditionConfig-DB0FqwgG.js.map} +1 -1
  17. package/dist/{EntityManagement-D-x6Qzal.js → EntityManagement-DQKXnEzz.js} +2 -2
  18. package/dist/{EntityManagement-D-x6Qzal.js.map → EntityManagement-DQKXnEzz.js.map} +1 -1
  19. package/dist/EventConfigurations-DZvSJ5EZ.js +395 -0
  20. package/dist/EventConfigurations-DZvSJ5EZ.js.map +1 -0
  21. package/dist/{EventsExceptionModal-BF6E1Np7.js → EventsExceptionModal-DsvngLi8.js} +2 -2
  22. package/dist/{EventsExceptionModal-BF6E1Np7.js.map → EventsExceptionModal-DsvngLi8.js.map} +1 -1
  23. package/dist/EventsSkeleton-DCXwwPbb.js +76 -0
  24. package/dist/EventsSkeleton-DCXwwPbb.js.map +1 -0
  25. package/dist/FeatureMenu-CLX8VNZ-.js +265 -0
  26. package/dist/FeatureMenu-CLX8VNZ-.js.map +1 -0
  27. package/dist/Features-Cpf1PDx0.js +13 -0
  28. package/dist/Features-Cpf1PDx0.js.map +1 -0
  29. package/dist/FileSaver.min-CN9EpL2h.js.map +1 -1
  30. package/dist/ImmunizationConfigurationsList-K2ddBpPJ.js +345 -0
  31. package/dist/ImmunizationConfigurationsList-K2ddBpPJ.js.map +1 -0
  32. package/dist/ImmunizationSkeleton-D2tdv5k-.js.map +1 -1
  33. package/dist/{LanguagesModal-rk6IGQwY.js → LanguagesModal-CX3oS8rk.js} +2 -2
  34. package/dist/{LanguagesModal-rk6IGQwY.js.map → LanguagesModal-CX3oS8rk.js.map} +1 -1
  35. package/dist/{ManageDynamicFeature-C2I7Ho7i.js → ManageDynamicFeature-CsIett5x.js} +2 -2
  36. package/dist/{ManageDynamicFeature-C2I7Ho7i.js.map → ManageDynamicFeature-CsIett5x.js.map} +1 -1
  37. package/dist/{ManageEventConfiguration-BJxS2Su0.js → ManageEventConfiguration-0YBDaxOI.js} +60 -60
  38. package/dist/ManageEventConfiguration-0YBDaxOI.js.map +1 -0
  39. package/dist/{ManageNotification-DMN2szWy.js → ManageNotification-EQgnOO0U.js} +632 -632
  40. package/dist/ManageNotification-EQgnOO0U.js.map +1 -0
  41. package/dist/{ManageRole-CuXmWQyp.js → ManageRole-Cbs9dUhc.js} +244 -191
  42. package/dist/ManageRole-Cbs9dUhc.js.map +1 -0
  43. package/dist/ManageTranslation-D9IScGhk.js +625 -0
  44. package/dist/ManageTranslation-D9IScGhk.js.map +1 -0
  45. package/dist/{ManageUser-Dr3ptCYp.js → ManageUser-C9uMe9av.js} +744 -735
  46. package/dist/ManageUser-C9uMe9av.js.map +1 -0
  47. package/dist/{MobileTypeEventConfigModal-ChhO_A4f.js → MobileTypeEventConfigModal-Ltm529jG.js} +2 -2
  48. package/dist/{MobileTypeEventConfigModal-ChhO_A4f.js.map → MobileTypeEventConfigModal-Ltm529jG.js.map} +1 -1
  49. package/dist/NotificationList-BZwvgsf6.js +402 -0
  50. package/dist/NotificationList-BZwvgsf6.js.map +1 -0
  51. package/dist/{OtherTypeEventConfigModal-ZnCGWm9v.js → OtherTypeEventConfigModal-dXt2qDg_.js} +2 -2
  52. package/dist/OtherTypeEventConfigModal-dXt2qDg_.js.map +1 -0
  53. package/dist/{QueryBuilder-BPfavHH9.js → QueryBuilder-DXexUIe8.js} +154 -148
  54. package/dist/QueryBuilder-DXexUIe8.js.map +1 -0
  55. package/dist/{QueryManagement-DXA73N2j.js → QueryManagement-BpIRH8hI.js} +228 -214
  56. package/dist/QueryManagement-BpIRH8hI.js.map +1 -0
  57. package/dist/RoleManagement-BThAL5LO.js +422 -0
  58. package/dist/RoleManagement-BThAL5LO.js.map +1 -0
  59. package/dist/SubMenu-BGznOP2a.js +191 -0
  60. package/dist/SubMenu-BGznOP2a.js.map +1 -0
  61. package/dist/TableDetails-DztbjsIA.js +2069 -0
  62. package/dist/TableDetails-DztbjsIA.js.map +1 -0
  63. package/dist/TableList-DYwotUDO.js +1425 -0
  64. package/dist/TableList-DYwotUDO.js.map +1 -0
  65. package/dist/{TypeConfiguration-C-lk8Szs.js → TypeConfiguration-DYbBG_hZ.js} +2 -2
  66. package/dist/{TypeConfiguration-C-lk8Szs.js.map → TypeConfiguration-DYbBG_hZ.js.map} +1 -1
  67. package/dist/{UserList-S5Q76wO7.js → UserList-BH6OpZvq.js} +410 -400
  68. package/dist/UserList-BH6OpZvq.js.map +1 -0
  69. package/dist/UserListSkeleton-cglK2SaU.js.map +1 -1
  70. package/dist/WidgetList-D-fIf3N2.js +200 -0
  71. package/dist/WidgetList-D-fIf3N2.js.map +1 -0
  72. package/dist/i18next-CTOWN_jH.js.map +1 -1
  73. package/dist/index.css +1 -1
  74. package/dist/index.js +13 -13
  75. package/dist/xlsx.min-D1LFqt_b.js.map +1 -1
  76. package/package.json +1 -1
  77. package/dist/AccessRights-BMRM1u9S.js +0 -1228
  78. package/dist/AccessRights-BMRM1u9S.js.map +0 -1
  79. package/dist/AddRoleDrawer-ZK1eejxI.js.map +0 -1
  80. package/dist/EventConfigurations-jGCJ4LqP.js +0 -384
  81. package/dist/EventConfigurations-jGCJ4LqP.js.map +0 -1
  82. package/dist/EventsSkeleton-BN7_0IGs.js +0 -74
  83. package/dist/EventsSkeleton-BN7_0IGs.js.map +0 -1
  84. package/dist/FeatureMenu-Ds6lFg4w.js +0 -249
  85. package/dist/FeatureMenu-Ds6lFg4w.js.map +0 -1
  86. package/dist/Features-Cshdl06N.js +0 -12
  87. package/dist/Features-Cshdl06N.js.map +0 -1
  88. package/dist/ImmunizationConfigurationsList-CQnxWa09.js +0 -335
  89. package/dist/ImmunizationConfigurationsList-CQnxWa09.js.map +0 -1
  90. package/dist/ManageEventConfiguration-BJxS2Su0.js.map +0 -1
  91. package/dist/ManageNotification-DMN2szWy.js.map +0 -1
  92. package/dist/ManageRole-CuXmWQyp.js.map +0 -1
  93. package/dist/ManageTranslation-BTxvSYKb.js +0 -616
  94. package/dist/ManageTranslation-BTxvSYKb.js.map +0 -1
  95. package/dist/ManageUser-Dr3ptCYp.js.map +0 -1
  96. package/dist/NotificationList-BqibwMaM.js +0 -400
  97. package/dist/NotificationList-BqibwMaM.js.map +0 -1
  98. package/dist/OtherTypeEventConfigModal-ZnCGWm9v.js.map +0 -1
  99. package/dist/QueryBuilder-BPfavHH9.js.map +0 -1
  100. package/dist/QueryManagement-DXA73N2j.js.map +0 -1
  101. package/dist/RoleManagement-C0feJCuq.js +0 -410
  102. package/dist/RoleManagement-C0feJCuq.js.map +0 -1
  103. package/dist/SubMenu-DAfZC9Xi.js +0 -188
  104. package/dist/SubMenu-DAfZC9Xi.js.map +0 -1
  105. package/dist/TableDetails-DzREeJkm.js +0 -1508
  106. package/dist/TableDetails-DzREeJkm.js.map +0 -1
  107. package/dist/TableList-B9hr05Hs.js +0 -428
  108. package/dist/TableList-B9hr05Hs.js.map +0 -1
  109. package/dist/UserList-S5Q76wO7.js.map +0 -1
  110. package/dist/WidgetList-BSApErov.js +0 -188
  111. package/dist/WidgetList-BSApErov.js.map +0 -1
@@ -1,249 +0,0 @@
1
- import { jsx as e, jsxs as s, Fragment as J } from "react/jsx-runtime";
2
- import { useState as b, useMemo as y, useCallback as _, useEffect as K, Suspense as j, startTransition as Q, lazy as L } from "react";
3
- import { useTranslateProvider as W } from "@/common/languageTranslator/TranslationContext";
4
- import { g as X } from "./Features-Cshdl06N.js";
5
- import { showToast as Y } from "@/common/toaster/toaster";
6
- import Z from "@/hooks/useTrackEvent";
7
- import { useTheme as ee, Card as ae, Tabs as te, Tab as se, Button as D, Typography as G } from "@mui/material";
8
- import d from "@mui/material/Grid2";
9
- import { useSelector as u, useDispatch as ne } from "react-redux";
10
- import { useNavigate as re } from "react-router-dom";
11
- import { Box as le } from "@mui/system";
12
- import { FontAwesomeIcon as oe } from "@fortawesome/react-fontawesome";
13
- import { faGear as ue } from "@fortawesome/free-solid-svg-icons";
14
- import p from "prop-types";
15
- import { getUseSkeleton as w } from "@/store/reducers/SkeletonReducer";
16
- import { setSubMenuFeatureVal as ie, setSubMenuGroupName as me, setSubMenuId as ce } from "@/store/reducers/FeatureReducer";
17
- const v = ({ children: r, isLoading: l }) => !u(w) || !l ? r : /* @__PURE__ */ e("div", { className: "flex flex-col mt-6", children: /* @__PURE__ */ s("div", { className: "w-full justify-between flex-wrap flex flex-row", children: [
18
- /* @__PURE__ */ s("div", { className: "flex-wrap flex flex-row", children: [
19
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
20
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
21
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
22
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" }),
23
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[45px] w-[85px] mr-2 mb-2" })
24
- ] }),
25
- /* @__PURE__ */ s("div", { className: "flex", children: [
26
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[32px] w-[120px] m-0.5" }),
27
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[32px] w-[130px] m-0.5" }),
28
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[32px] w-[100px] m-0.5" })
29
- ] })
30
- ] }) });
31
- v.propTypes = {
32
- children: p.any,
33
- isLoading: p.any
34
- };
35
- p.any, p.any;
36
- const de = ({ children: r, isLoading: l }) => !u(w) || !l ? r : /* @__PURE__ */ s("div", { className: "w-full p-2", children: [
37
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[40px] w-full mb-2" }),
38
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[60px] w-full mb-2" }),
39
- /* @__PURE__ */ e("div", { className: "bg-gray-300 animate-pulse rounded-sm h-[280px] w-full" })
40
- ] });
41
- de.propTypes = {
42
- children: p.any,
43
- isLoading: p.any
44
- };
45
- const pe = L(() => import("./AccessRights-BMRM1u9S.js")), fe = L(() => import("./SubMenu-DAfZC9Xi.js"));
46
- function xe() {
47
- const r = u(w), l = ee(), f = ne(), [S, P] = b([]), [o, R] = b(0), i = u((a) => {
48
- var t;
49
- return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuId;
50
- }), M = u(
51
- (a) => {
52
- var t;
53
- return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuGroupName;
54
- }
55
- ), $ = u(
56
- (a) => {
57
- var t;
58
- return (t = a == null ? void 0 : a.FeatureReducer) == null ? void 0 : t.subMenuFeatureVal;
59
- }
60
- ), g = re(), { user: h } = u((a) => a.Authenticate), { translate: m } = W(), [c, N] = b(!1), k = Z(), [F, B] = b({}), I = (h == null ? void 0 : h.features) || {}, n = y(
61
- () => Object.keys(I).filter((a) => a !== "mch"),
62
- [I]
63
- ), T = l.palette.mode === "dark" ? l.palette.divider : l.palette.grey[200], E = _((a, t) => {
64
- R(t);
65
- }, []), V = _(() => {
66
- k("button_click", {
67
- button_name: "featuremenu-add-button",
68
- button_type: "navigate",
69
- button_id: "featuremenu-add-button"
70
- }), g("addDynamicFeature");
71
- }, [g, k]);
72
- K(() => {
73
- (async () => {
74
- var t, C;
75
- if (!(!n.length || o >= n.length))
76
- try {
77
- N(!0);
78
- const { data: x } = await X(n[o]), A = x.sort((q, H) => {
79
- var z;
80
- return (z = q.name) == null ? void 0 : z.localeCompare(H.name);
81
- });
82
- Q(() => {
83
- P(A), A.length > 0, N(!1);
84
- });
85
- } catch (x) {
86
- Y({
87
- message: `Error : ${(C = (t = x == null ? void 0 : x.response) == null ? void 0 : t.data) == null ? void 0 : C.message}`,
88
- type: "error"
89
- }), N(!1);
90
- }
91
- })();
92
- }, [o, n]);
93
- const O = y(
94
- () => /* @__PURE__ */ e(j, { fallback: /* @__PURE__ */ e(v, {}), children: /* @__PURE__ */ e(
95
- fe,
96
- {
97
- "data-testid": "featuremenu-submenu",
98
- data: S,
99
- subMenuId: i,
100
- setSubMenuId: (a) => {
101
- f(ce(a));
102
- },
103
- setSubMenuGroupName: (a) => {
104
- f(me(a));
105
- },
106
- setSubMenuFeatureVal: (a) => {
107
- f(ie(a));
108
- },
109
- type: n[o],
110
- isLoading: c,
111
- isNewAPI: F,
112
- subMenuGroupName: M
113
- }
114
- ) }),
115
- [S, i, o, c, n, F]
116
- ), U = y(
117
- () => /* @__PURE__ */ e(
118
- j,
119
- {
120
- fallback: /* @__PURE__ */ e("div", { className: "p-2 text-sm text-gray-500", children: "Loading Access Rights..." }),
121
- children: /* @__PURE__ */ e(
122
- pe,
123
- {
124
- "data-testid": "featuremenu-access-rights",
125
- subMenuId: i,
126
- subMenuGroupName: M,
127
- subMenuFeatureVal: $,
128
- selectedTab: n[o],
129
- parentLoading: c,
130
- onNewAPIChange: B
131
- }
132
- )
133
- }
134
- ),
135
- [i, c]
136
- );
137
- return /* @__PURE__ */ s(ae, { variant: "elevation", className: "p-3 mt-6 flex flex-col shadow-2xl", children: [
138
- /* @__PURE__ */ e(v, { isLoading: c, children: /* @__PURE__ */ s(d, { className: "w-full justify-between flex-wrap flex flex-row", children: [
139
- /* @__PURE__ */ e(d, { className: "flex-wrap flex flex-row", children: /* @__PURE__ */ e(
140
- te,
141
- {
142
- value: o,
143
- onChange: E,
144
- variant: "scrollable",
145
- scrollButtons: "auto",
146
- children: n.map((a, t) => /* @__PURE__ */ e(
147
- se,
148
- {
149
- label: a.toUpperCase(),
150
- "data-testid": `featuremenu-button-${t}`,
151
- id: `feature-tab-${t}`
152
- },
153
- a
154
- ))
155
- }
156
- ) }),
157
- /* @__PURE__ */ s(d, { className: "flex gap-2 items-center ml-auto", children: [
158
- /* @__PURE__ */ s(
159
- D,
160
- {
161
- size: "small",
162
- className: "mb-1 ml-0.5",
163
- variant: "contained",
164
- onClick: () => g("/ui/medplat/report/all/groups"),
165
- sx: {
166
- mt: { xs: "15px", md: "0px" }
167
- },
168
- children: [
169
- m("Manage"),
170
- " ",
171
- m("Menu"),
172
- " ",
173
- m("Group")
174
- ]
175
- }
176
- ),
177
- /* @__PURE__ */ s(
178
- D,
179
- {
180
- size: "small",
181
- "data-testid": "featuremenu-add-button",
182
- className: "mb-1 ml-0.5",
183
- variant: "contained",
184
- onClick: V,
185
- sx: {
186
- mt: { xs: "15px", md: "0px" }
187
- },
188
- children: [
189
- m("Add"),
190
- " ",
191
- m("Feature")
192
- ]
193
- }
194
- )
195
- ] })
196
- ] }) }),
197
- /* @__PURE__ */ s(d, { container: !0, spacing: 2, className: "w-full py-3 rounded-sm", children: [
198
- /* @__PURE__ */ e(
199
- d,
200
- {
201
- size: { xs: 12, sm: 12, md: 3 },
202
- className: "flex",
203
- sx: { border: `1px solid ${T}` },
204
- children: O
205
- }
206
- ),
207
- /* @__PURE__ */ s(
208
- d,
209
- {
210
- size: { xs: 12, sm: 12, md: 9 },
211
- className: "flex flex-col",
212
- sx: { border: `1px solid ${T}` },
213
- children: [
214
- c && r ? /* @__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__ */ s(le, { className: "flex items-center p-2", children: [
215
- /* @__PURE__ */ e(oe, { icon: ue, size: "lg", className: "mr-2" }),
216
- /* @__PURE__ */ e(G, { variant: "body2", className: "font-bold font-sans pt-1", children: m("Access Rights") })
217
- ] }),
218
- i && U,
219
- !i && /* @__PURE__ */ e(J, { children: /* @__PURE__ */ e(
220
- G,
221
- {
222
- variant: "body2",
223
- className: "p-2",
224
- "data-testid": "featuremenu-no-feature-selected",
225
- sx: {
226
- textAlign: "center",
227
- position: "relative",
228
- top: "10%",
229
- fontSize: "25px",
230
- color: "grey"
231
- },
232
- children: "Please select a feature!"
233
- }
234
- ) })
235
- ]
236
- }
237
- )
238
- ] })
239
- ] });
240
- }
241
- const _e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
242
- __proto__: null,
243
- default: xe
244
- }, Symbol.toStringTag, { value: "Module" }));
245
- export {
246
- _e as F,
247
- de as S
248
- };
249
- //# sourceMappingURL=FeatureMenu-Ds6lFg4w.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureMenu-Ds6lFg4w.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\";\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 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 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 />\n </Suspense>\n ),\n [Data, subMenuId, selectedId, isLoading, featureNames, isNewAPI],\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 />\n </Suspense>\n ),\n [subMenuId, isLoading],\n );\n\n return (\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 <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 <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 </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","features","featureNames","useMemo","key","panelBorderColor","handleTabChange","useCallback","e","newValue","handleFeature","useEffect","data","getFeatureName","filterData","a","b","startTransition","error","showToast","_b","SubMenuContent","Suspense","id","setSubMenuId","name","setSubMenuGroupName","val","setSubMenuFeatureVal","AccessRightsContent","Card","Grid","Tabs","feat","index","Tab","Button","Box","FontAwesomeIcon","faGear","Typography","Fragment"],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { api as t } from "@/common/interceptors/AxiosInterceptor";
2
- const u = (e) => t.get(`menuconfig/configtypes/${e}`), o = (e) => t.get(`menuconfig/configtypesV2/${e}`), m = (e) => t.get(`/menuconfig/${e}`), a = (e) => t.delete(`/menuconfig/usermenuitem/${e}`), g = (e) => t.post("/menuconfig/updateusermenuitem", { ...e, showLoader: !1 }), c = (e, n) => t.post(`/menuconfig/updateusermenuitems?menuConfigId=${e}`, n), i = (e, n) => t.post(`/menuconfig/menuitem?menuConfigId=${e}`, { ...n });
3
- export {
4
- o as a,
5
- u as b,
6
- g as c,
7
- a as d,
8
- m as g,
9
- i as p,
10
- c as u
11
- };
12
- //# sourceMappingURL=Features-Cshdl06N.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Features-Cshdl06N.js","sources":["../src/services/Features.js"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getFeatureData = (id) => api.get(`menuconfig/configtypes/${id}`);\n\nexport const getFeatureDataV2 = (id) =>\n api.get(`menuconfig/configtypesV2/${id}`);\n\nexport const postFeature = (params) =>\n api.post(\"/resource/getdata\", { ...params });\n\nexport const getFeatureName = (params) => api.get(`/menuconfig/${params}`);\n\nexport const deleteUserMenuItem = (id) =>\n api.delete(`/menuconfig/usermenuitem/${id}`);\n\nexport const updateUserMenuItem = (params) =>\n api.post(`/menuconfig/updateusermenuitem`, { ...params, showLoader: false });\n\nexport const updateUserMenuItems = (id, params) =>\n api.post(`/menuconfig/updateusermenuitems?menuConfigId=${id}`, params);\n\nexport const postMenuItem = (id, params) =>\n api.post(`/menuconfig/menuitem?menuConfigId=${id}`, { ...params });\n"],"names":["getFeatureData","id","api","getFeatureDataV2","getFeatureName","params","deleteUserMenuItem","updateUserMenuItem","updateUserMenuItems","postMenuItem"],"mappings":";AAEY,MAACA,IAAiB,CAACC,MAAOC,EAAI,IAAI,0BAA0BD,CAAE,EAAE,GAE/DE,IAAmB,CAACF,MAC/BC,EAAI,IAAI,4BAA4BD,CAAE,EAAE,GAK7BG,IAAiB,CAACC,MAAWH,EAAI,IAAI,eAAeG,CAAM,EAAE,GAE5DC,IAAqB,CAACL,MACjCC,EAAI,OAAO,4BAA4BD,CAAE,EAAE,GAEhCM,IAAqB,CAACF,MACjCH,EAAI,KAAK,kCAAkC,EAAE,GAAGG,GAAQ,YAAY,GAAK,CAAE,GAEhEG,IAAsB,CAACP,GAAII,MACtCH,EAAI,KAAK,gDAAgDD,CAAE,IAAII,CAAM,GAE1DI,IAAe,CAACR,GAAII,MAC/BH,EAAI,KAAK,qCAAqCD,CAAE,IAAI,EAAE,GAAGI,EAAM,CAAE;"}
@@ -1,335 +0,0 @@
1
- import { jsxs as C, Fragment as Z, jsx as o } from "react/jsx-runtime";
2
- import { useState as s, useCallback as ee, useEffect as x } from "react";
3
- import { Dialog as te, DialogTitle as ae, DialogContent as ne, TextField as P, DialogActions as oe, Button as N } from "@mui/material";
4
- import { showToast as f } from "@/common/toaster/toaster";
5
- import { execute as U } from "@/common/services/GlobalApis";
6
- import M from "@mui/material/Grid2";
7
- import { useNavigate as ie } from "react-router";
8
- import { u as se, I as re } from "./ImmunizationSkeleton-D2tdv5k-.js";
9
- import A from "prop-types";
10
- import Q from "@/views/custom-components/CustomConfirmationModal";
11
- import le from "@/hooks/useTrackEvent";
12
- import { useTranslateProvider as ce } from "@/common/languageTranslator/TranslationContext";
13
- import de from "@/views/custom-components/CustomizedTable/CustomizedTableV2";
14
- import { FontAwesomeIcon as B } from "@fortawesome/react-fontawesome";
15
- import { faPen as ue, faTrash as me } from "@fortawesome/free-solid-svg-icons";
16
- import { getAssignedFeatures as ye } from "@/utils/feature";
17
- const H = ({ configuredQuery: p, open: b, onClose: g, dataTestId: O }) => {
18
- const [w, I] = s(""), { translate: m } = ce(), [F, y] = s(!1), L = ee(() => {
19
- let a = JSON.parse(JSON.stringify(p));
20
- if (a.forEach((i) => {
21
- delete i.id, delete i.created_at, delete i.updated_at;
22
- }), !Array.isArray(a) || a.length === 0) {
23
- f({ message: "No data to generate", type: "error" });
24
- return;
25
- }
26
- const c = Object.keys(a[0]), h = a.map((i) => `(${c.map(($) => {
27
- const l = i[$];
28
- return typeof l == "string" ? `'${l.replace(/'/g, "''")}'` : l == null ? "NULL" : typeof l == "boolean" ? l ? "TRUE" : "FALSE" : l;
29
- }).join(", ")})`).join(`,
30
- `), _ = `${c.filter((i) => i !== "code").map((i) => `${i} = EXCLUDED.${i}`).join(", ")}, updated_at = CURRENT_TIMESTAMP`, k = `INSERT INTO rch_immunization_configuration (${c.join(", ")})
31
- VALUES
32
- ${h}
33
- ON CONFLICT (code) DO UPDATE SET
34
- ${_};
35
- `;
36
- I(k);
37
- }, [p]), v = () => {
38
- var a;
39
- (a = navigator == null ? void 0 : navigator.clipboard) == null || a.writeText(w).then(() => {
40
- f({ message: "Query Copied", type: "success" }), g();
41
- });
42
- }, E = () => {
43
- S(), y((a) => !a);
44
- }, T = le(), S = () => {
45
- const a = new Blob([w], { type: "text/plain" }), c = (a.size / 1024).toFixed(2), h = URL.createObjectURL(a), d = document.createElement("a");
46
- d.href = h, d.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_IMMUNIZATION_TABLE}.sql`, document.body.appendChild(d), d.click(), T("file_download", {
47
- file_type: "sql",
48
- file_name: d.download,
49
- file_size: `${c} KB`,
50
- download_status: "success"
51
- }), document.body.removeChild(d), URL.revokeObjectURL(h), f({ message: "Query Downloaded SuccessFully", type: "success" }), g();
52
- }, D = () => {
53
- S();
54
- };
55
- return x(() => {
56
- p && L();
57
- }, [p]), /* @__PURE__ */ C(Z, { children: [
58
- /* @__PURE__ */ o(
59
- Q,
60
- {
61
- description: "This Flyway contains keyword 'public'. Are you sure you want to download?",
62
- title: "CONFIRM ACTION",
63
- handleClick: E,
64
- open: F,
65
- handleClose: () => y((a) => !a),
66
- dataTestId: "showflywayquery-customconfirmationmodal-confirmation-modal"
67
- }
68
- ),
69
- /* @__PURE__ */ C(te, { open: b, onClose: g, fullWidth: !0, maxWidth: "md", "data-testid": O, children: [
70
- /* @__PURE__ */ o(ae, { className: "p-2.5 px-5 flex border-b font-medium text-lg", children: m("Flyway Query") }),
71
- /* @__PURE__ */ o(ne, { children: /* @__PURE__ */ o(
72
- P,
73
- {
74
- multiline: !0,
75
- rows: 10,
76
- variant: "outlined",
77
- fullWidth: !0,
78
- value: w,
79
- sx: {
80
- "& .MuiInputBase-input": {
81
- fontSize: "14px"
82
- },
83
- "& .MuiOutlinedInput-root": {
84
- borderRadius: "5px"
85
- }
86
- },
87
- slotProps: {
88
- input: {
89
- readOnly: !0
90
- }
91
- },
92
- "data-testid": "showflywayquery-textfield-query-display"
93
- }
94
- ) }),
95
- /* @__PURE__ */ C(oe, { children: [
96
- /* @__PURE__ */ o(
97
- N,
98
- {
99
- onClick: D,
100
- variant: "contained",
101
- size: "small",
102
- color: "primary",
103
- "data-testid": "showflywayquery-button-download-action",
104
- children: m("Download")
105
- }
106
- ),
107
- /* @__PURE__ */ o(
108
- N,
109
- {
110
- onClick: v,
111
- variant: "contained",
112
- size: "small",
113
- color: "primary",
114
- "data-testid": "showflywayquery-button-copyquery-action",
115
- children: m("Copy Query")
116
- }
117
- ),
118
- /* @__PURE__ */ o(
119
- N,
120
- {
121
- onClick: g,
122
- variant: "contained",
123
- color: "secondary",
124
- size: "small",
125
- "data-testid": "showflywayquery-button-cancel-action",
126
- children: m("Cancel")
127
- }
128
- )
129
- ] })
130
- ] })
131
- ] });
132
- };
133
- H.propTypes = {
134
- configuredQuery: A.any,
135
- open: A.any,
136
- onClose: A.any,
137
- dataTestId: A.any
138
- };
139
- const xe = () => {
140
- const p = ie(), { t: b } = se(), [g, O] = s([]), [w, I] = s([]), [m, F] = s([]), [y, L] = s(""), [v, E] = s(!1), [T, S] = s(!1), [D, a] = s([]), [c, h] = s([]), [d, _] = s(!1), [k, i] = s(!1), [R, $] = s({}), [l, J] = s({});
141
- x(() => {
142
- h(() => g.filter(
143
- (t) => D.some((r) => r.id === t.id)
144
- ));
145
- }, [D]);
146
- const G = [
147
- { field: "Sr. No.", label: "#", align: "left" },
148
- // { field: 'code', label: 'Code', align: 'left', isBold: true },
149
- { field: "name", label: "Name", align: "left" },
150
- { field: "fromAgeDays", label: "Eligible From" },
151
- { field: "toAgeDays", label: "Eligible To" },
152
- { field: "base_date", label: "Base Date" },
153
- { field: "Actions", label: "Actions" }
154
- ], V = [
155
- {
156
- label: "Fill Form",
157
- icon: /* @__PURE__ */ o(B, { icon: ue }),
158
- onClick: (e) => {
159
- p(`/ui/medplat/manage/manageImmunization/${e == null ? void 0 : e.id}`);
160
- }
161
- },
162
- {
163
- label: "",
164
- icon: /* @__PURE__ */ o(B, { icon: me }),
165
- onClick: (e) => {
166
- i(!0), $(e);
167
- }
168
- }
169
- ];
170
- x(() => {
171
- j();
172
- }, []);
173
- const W = (e) => {
174
- const t = JSON.parse(e);
175
- return t.dependencies && t.dependencies.length > 0 ? t.dependencies[0].message : "NA";
176
- }, q = (e) => {
177
- if (typeof e != "number" || e <= 0) return "-";
178
- const t = Math.floor(e / 365), r = e % 365, u = Math.floor(r / 30), z = r % 30, n = [];
179
- return t > 0 && n.push(`${t} ${t === 1 ? "year" : "years"}`), u > 0 && n.push(`${u} ${u === 1 ? "month" : "months"}`), (z > 0 || t === 0 && u === 0) && n.push(`${z} ${z === 1 ? "day" : "days"}`), n.join(" ") || "0 days";
180
- }, j = async () => {
181
- var e, t;
182
- try {
183
- _((n) => !n);
184
- const r = await U({
185
- code: "get_immunization_detail",
186
- parameters: {}
187
- });
188
- O((e = r == null ? void 0 : r.data) == null ? void 0 : e.result);
189
- const u = (t = r == null ? void 0 : r.data) == null ? void 0 : t.result.filter((n) => n.is_active === !0).map((n) => ({
190
- ...n,
191
- fromAgeDays: q(n.from_age_days),
192
- toAgeDays: q(n.to_age_days),
193
- validationMessage: n.validations ? W(n.validations) : "NA"
194
- })), { data: z } = await ye(
195
- "techo.manage.immunizationConfiguratorList"
196
- );
197
- J(JSON.parse(z)), I(u), F(u), _((n) => !n);
198
- } catch (r) {
199
- console.error(r), f({ message: "Error in loading immunization", type: "error" }), _((u) => !u);
200
- }
201
- }, K = (e) => {
202
- L(e.target.value);
203
- };
204
- x(() => {
205
- if (!y) {
206
- I(m);
207
- return;
208
- }
209
- const e = m.filter(
210
- (t) => t.code.toLowerCase().includes(y.toLowerCase()) || t.name.toLowerCase().includes(y.toLowerCase())
211
- );
212
- I(e);
213
- }, [y, m]);
214
- const X = () => {
215
- (c == null ? void 0 : c.length) > 0 ? S(!0) : f({ message: "Select atleast one row", type: "info" });
216
- }, Y = async (e) => {
217
- try {
218
- let t = {
219
- id: parseInt(e.id),
220
- code: e.code,
221
- name: e.name,
222
- isrecursive: e.is_recursive || !1,
223
- fromAgeDays: e.from_age_days,
224
- toAgeDays: e.to_age_days,
225
- basedate: e.base_date,
226
- validations: e.validations,
227
- recursiveobject: e.recursive_object,
228
- locations: e.locations || "[]",
229
- active: !1
230
- };
231
- i(!1), await U({
232
- code: "update_immunization",
233
- parameters: { ...t }
234
- }), j(), f({
235
- message: "Immunization status changed Successfully!",
236
- type: "success"
237
- });
238
- } catch (t) {
239
- console.error(t), f({ type: "error", message: "error toggling status" });
240
- }
241
- };
242
- return /* @__PURE__ */ C(M, { container: !0, justifyContent: "flex-end", className: "mt-5 mr-5", children: [
243
- T && /* @__PURE__ */ o(
244
- H,
245
- {
246
- configuredQuery: c,
247
- open: T,
248
- onClose: () => {
249
- S((e) => !e);
250
- },
251
- dataTestId: "eventconfiguration-query-showflywayquery"
252
- }
253
- ),
254
- /* @__PURE__ */ C(re, { isLoading: d, children: [
255
- /* @__PURE__ */ C(M, { item: !0, children: [
256
- /* @__PURE__ */ o(
257
- P,
258
- {
259
- className: "bg-white p-0 m-0",
260
- placeholder: "Search code",
261
- sx: {
262
- "& .MuiInputBase-root": { height: "35px" },
263
- // Controls the overall input height
264
- "& .MuiInputBase-input": { padding: "6px 12px" }
265
- // Adjust text padding inside input
266
- },
267
- value: y,
268
- onChange: K
269
- }
270
- ),
271
- (l == null ? void 0 : l.canGenerateFlyway) && /* @__PURE__ */ o(
272
- N,
273
- {
274
- className: "mb-4 ml-4",
275
- variant: "contained",
276
- onClick: () => {
277
- E((e) => !e);
278
- },
279
- size: "small",
280
- "data-testid": "immunizationList-button-add",
281
- children: b(v ? "Hide Selection" : "Select Immunization")
282
- }
283
- ),
284
- v && !T && /* @__PURE__ */ o(
285
- N,
286
- {
287
- className: "mb-4 ml-4",
288
- variant: "contained",
289
- onClick: () => {
290
- X();
291
- },
292
- size: "small",
293
- "data-testid": "immunizationList-button-add",
294
- children: b("Show Flyway")
295
- }
296
- )
297
- ] }),
298
- /* @__PURE__ */ o(M, { size: { xs: 12 }, children: /* @__PURE__ */ o(
299
- de,
300
- {
301
- dataTestId: "Immunization-configurator-customizedtable",
302
- columns: G,
303
- tableData: w,
304
- paginationConfig: {
305
- pagination: !0,
306
- rowsPerPageInTable: 20
307
- },
308
- actions: V,
309
- rowSelectionConfig: {
310
- rowSelectionEnabled: v,
311
- selectedRows: D,
312
- setSelectedRows: a
313
- },
314
- styleConfig: { tableStyle: { maxHeight: 45 } },
315
- isLoading: d,
316
- strip: !0
317
- }
318
- ) })
319
- ] }),
320
- /* @__PURE__ */ o(
321
- Q,
322
- {
323
- open: k,
324
- description: "Are you sure you want to change the state of this Immunization ?",
325
- title: "CONFIRM ACTION",
326
- handleClick: () => Y(R),
327
- handleClose: () => i(!1)
328
- }
329
- )
330
- ] });
331
- };
332
- export {
333
- xe as default
334
- };
335
- //# sourceMappingURL=ImmunizationConfigurationsList-CQnxWa09.js.map