mario-core 2.0.32-release → 2.0.33-release

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 (187) hide show
  1. package/dist/Dashboard-BIhv8car.js +1 -0
  2. package/dist/Dashboard-BY5BVLIW.mjs +206 -0
  3. package/dist/Dashboard-BYXh-LYm.mjs +206 -0
  4. package/dist/Dashboard-Bp0ko4Nx.js +1 -0
  5. package/dist/Dashboard-BxX4EZkL.mjs +206 -0
  6. package/dist/Dashboard-CLvLdCvD.mjs +206 -0
  7. package/dist/Dashboard-CjDPZlwI.js +1 -0
  8. package/dist/Dashboard-D4yeROnn.mjs +206 -0
  9. package/dist/Dashboard-D6igZd4M.js +1 -0
  10. package/dist/Dashboard-D7X8bg8t.mjs +206 -0
  11. package/dist/Dashboard-DRaSlZLc.js +1 -0
  12. package/dist/Dashboard-DbI4E9od.js +1 -0
  13. package/dist/EmailTemplateDetail-B-Kab5TK.mjs +443 -0
  14. package/dist/EmailTemplateDetail-BJGaN7uh.js +1 -0
  15. package/dist/EmailTemplateDetail-BOqn4rkr.mjs +417 -0
  16. package/dist/EmailTemplateDetail-BlhCa_EF.mjs +443 -0
  17. package/dist/EmailTemplateDetail-CW0ymDWF.mjs +443 -0
  18. package/dist/EmailTemplateDetail-CZKvX-_q.js +1 -0
  19. package/dist/EmailTemplateDetail-D4EupjNO.js +1 -0
  20. package/dist/EmailTemplateDetail-DDbJbMWn.js +1 -0
  21. package/dist/EmailTemplateDetail-DP04M6QH.js +1 -0
  22. package/dist/EmailTemplateDetail-DSeAyn-F.mjs +443 -0
  23. package/dist/EmailTemplateDetail-J5R0X631.mjs +443 -0
  24. package/dist/EmailTemplateDetail-c2RcFzG5.js +1 -0
  25. package/dist/EmailTemplateList-BAVOo58z.js +1 -0
  26. package/dist/EmailTemplateList-BMCpm7sf.js +1 -0
  27. package/dist/EmailTemplateList-BQCcXdif.mjs +170 -0
  28. package/dist/EmailTemplateList-BVB1lsW7.mjs +170 -0
  29. package/dist/EmailTemplateList-BVfQCPzA.js +1 -0
  30. package/dist/EmailTemplateList-C-aj1Pl0.mjs +170 -0
  31. package/dist/EmailTemplateList-C5c2T4_M.mjs +170 -0
  32. package/dist/EmailTemplateList-D3G-A7Jo.js +1 -0
  33. package/dist/EmailTemplateList-DPQTaV4-.js +1 -0
  34. package/dist/EmailTemplateList-JRLV6pZW.mjs +170 -0
  35. package/dist/EmailTemplateList-ZTs0DmjS.js +1 -0
  36. package/dist/EmailTemplateList-gwkheOgx.mjs +168 -0
  37. package/dist/GalleryList-BU1m_MP_.js +1 -0
  38. package/dist/GalleryList-BftIdfu8.js +1 -0
  39. package/dist/GalleryList-Bl4FojYJ.mjs +329 -0
  40. package/dist/GalleryList-ByJ1_7Qx.mjs +329 -0
  41. package/dist/GalleryList-CVzc1xGW.js +1 -0
  42. package/dist/GalleryList-D5E7p3kE.mjs +329 -0
  43. package/dist/GalleryList-D5ZydfSV.js +1 -0
  44. package/dist/GalleryList-DHblERzG.js +1 -0
  45. package/dist/GalleryList-DXnU-Aou.mjs +329 -0
  46. package/dist/GalleryList-DpM906eg.mjs +329 -0
  47. package/dist/GalleryList-ZJ_mdpVZ.js +1 -0
  48. package/dist/GalleryList-oJNXivHy.mjs +329 -0
  49. package/dist/Login-A2cXwovI.mjs +1380 -0
  50. package/dist/Login-B69XhtIm.mjs +1380 -0
  51. package/dist/Login-BLyikyni.mjs +1380 -0
  52. package/dist/Login-Bwr0h4GC.js +1 -0
  53. package/dist/Login-C12Whvdx.js +1 -0
  54. package/dist/Login-CIcbHD7-.mjs +1380 -0
  55. package/dist/Login-D7gUoYyV.js +1 -0
  56. package/dist/Login-DEMe7ra6.js +1 -0
  57. package/dist/Login-Dcwb-HaZ.js +1 -0
  58. package/dist/Login-Rwbmk--s.js +1 -0
  59. package/dist/Login-h3o1lUKK.mjs +1380 -0
  60. package/dist/Login-xn2j4Jqq.mjs +1380 -0
  61. package/dist/NotificationList--DZcYUS5.js +2 -0
  62. package/dist/NotificationList-D26jJ6Wc.mjs +3969 -0
  63. package/dist/NotificationList-DZ1epO3L.mjs +3969 -0
  64. package/dist/NotificationList-D_lGCmIS.js +2 -0
  65. package/dist/NotificationList-Da-pWu35.js +2 -0
  66. package/dist/NotificationList-Dogczlgr.mjs +3969 -0
  67. package/dist/NotificationList-Dv0JIP69.js +2 -0
  68. package/dist/NotificationList-DygQSzwE.mjs +3969 -0
  69. package/dist/NotificationList-Ku1m25fI.mjs +3969 -0
  70. package/dist/NotificationList-Ml4QiyAE.mjs +3969 -0
  71. package/dist/NotificationList-_AHdv4bs.js +2 -0
  72. package/dist/NotificationList-rKx7xooX.js +2 -0
  73. package/dist/SkillList-BUDiP8Ba.mjs +386 -0
  74. package/dist/SkillList-Btum0zIE.js +1 -0
  75. package/dist/SkillList-C-dw1122.js +1 -0
  76. package/dist/SkillList-C0ZfIxCl.js +1 -0
  77. package/dist/SkillList-CZTd0oz_.mjs +386 -0
  78. package/dist/SkillList-DPU-l8aA.js +1 -0
  79. package/dist/SkillList-DTxT0Hbn.js +1 -0
  80. package/dist/SkillList-DVXAACsz.mjs +386 -0
  81. package/dist/SkillList-DX530KHp.mjs +386 -0
  82. package/dist/SkillList-DahOq8Os.mjs +386 -0
  83. package/dist/SkillList-DivkFIrP.mjs +386 -0
  84. package/dist/SkillList-yosFFVsc.js +1 -0
  85. package/dist/TeacherSelector-5UVov2Wf.mjs +30 -0
  86. package/dist/TeacherSelector-Bi582rEx.mjs +30 -0
  87. package/dist/TeacherSelector-BmmfQxU8.js +1 -0
  88. package/dist/TeacherSelector-BngXAzRe.mjs +30 -0
  89. package/dist/TeacherSelector-C7-XuXfb.mjs +30 -0
  90. package/dist/TeacherSelector-C9Z5JX-P.js +1 -0
  91. package/dist/TeacherSelector-CZ1DrLUk.js +1 -0
  92. package/dist/TeacherSelector-CbJ1kPyV.js +1 -0
  93. package/dist/TeacherSelector-CkGdl96R.js +1 -0
  94. package/dist/TeacherSelector-CxDiVyno.mjs +30 -0
  95. package/dist/TeacherSelector-DomtJIQi.js +1 -0
  96. package/dist/TeacherSelector-mjBcHGJF.mjs +30 -0
  97. package/dist/TheContent-B42qwDUV.mjs +38 -0
  98. package/dist/TheContent-BW03X6oT.mjs +38 -0
  99. package/dist/TheContent-CayaQR9C.js +1 -0
  100. package/dist/TheContent-CiU0FBTA.mjs +38 -0
  101. package/dist/TheContent-D5Qx4QXe.js +1 -0
  102. package/dist/TheContent-DHWnB8WX.js +1 -0
  103. package/dist/TheContent-DPy5BFuN.js +1 -0
  104. package/dist/TheContent-Dl7_h11H.mjs +38 -0
  105. package/dist/TheContent-DxN9-GIu.mjs +38 -0
  106. package/dist/TheContent-H-Hg7kIq.js +1 -0
  107. package/dist/TheContent-aEfXKW_H.mjs +38 -0
  108. package/dist/TheContent-xUKaH5bl.js +1 -0
  109. package/dist/UserContainer-3dOz3yZF.js +5 -0
  110. package/dist/UserContainer-B-abn6--.js +5 -0
  111. package/dist/UserContainer-BIl8c0yJ.js +5 -0
  112. package/dist/UserContainer-BjYrV0kt.mjs +2783 -0
  113. package/dist/UserContainer-BoJ73Ko9.js +5 -0
  114. package/dist/UserContainer-CFnSfW2A.js +5 -0
  115. package/dist/UserContainer-CGlDCED1.mjs +2771 -0
  116. package/dist/UserContainer-CqTUtCe6.mjs +2770 -0
  117. package/dist/UserContainer-CtYpysOo.mjs +2771 -0
  118. package/dist/UserContainer-Cu6koTiw.mjs +2771 -0
  119. package/dist/UserContainer-Dz991Fto.mjs +2770 -0
  120. package/dist/UserContainer-d3ywqdWh.js +5 -0
  121. package/dist/UserDetail-BCLssfN6.mjs +902 -0
  122. package/dist/UserDetail-BRCOabYu.mjs +902 -0
  123. package/dist/UserDetail-BsWWKLof.js +1 -0
  124. package/dist/UserDetail-CkMU6eej.js +1 -0
  125. package/dist/UserDetail-Cl6y6AtA.js +1 -0
  126. package/dist/UserDetail-CqBaMe5l.mjs +902 -0
  127. package/dist/UserDetail-D36q7Em-.mjs +902 -0
  128. package/dist/UserDetail-DFjYZZOc.js +1 -0
  129. package/dist/UserDetail-DIGlXdot.mjs +914 -0
  130. package/dist/UserDetail-DizNdqsR.mjs +902 -0
  131. package/dist/UserDetail-DwNEJ0kC.js +1 -0
  132. package/dist/UserDetail-Wn1wTs2Z.js +1 -0
  133. package/dist/UserList-4XLAsuI5.mjs +1205 -0
  134. package/dist/UserList-B9_Ok-O-.js +5 -0
  135. package/dist/UserList-BAirPxDM.js +7 -0
  136. package/dist/UserList-BFRsUwHp.js +5 -0
  137. package/dist/UserList-BgtFj_YA.mjs +1171 -0
  138. package/dist/UserList-BjEBqEMi.mjs +1205 -0
  139. package/dist/UserList-C6MCzl4Q.js +7 -0
  140. package/dist/UserList-CLDgmfZl.mjs +1171 -0
  141. package/dist/UserList-CRqA2Kvb.js +7 -0
  142. package/dist/UserList-D-5W9tzb.mjs +1205 -0
  143. package/dist/UserList-D63-z7TV.mjs +1205 -0
  144. package/dist/UserList-DX_DRp8l.js +7 -0
  145. package/dist/constants-1VW88-cg.mjs +320 -0
  146. package/dist/constants-B09dcc2W.js +1 -0
  147. package/dist/constants-BSg1aI4R.js +1 -0
  148. package/dist/constants-BXFDJA-1.js +1 -0
  149. package/dist/constants-BdoFiMvT.mjs +320 -0
  150. package/dist/constants-BrOUFw2c.js +1 -0
  151. package/dist/constants-ClfPwBI0.mjs +320 -0
  152. package/dist/constants-D3RqPPqz.mjs +320 -0
  153. package/dist/constants-D5ZWXomx.js +1 -0
  154. package/dist/constants-DiRwIQ5M.mjs +320 -0
  155. package/dist/constants-bWeajrBe.js +1 -0
  156. package/dist/constants-dgRR32rI.mjs +320 -0
  157. package/dist/containers/EmailTemplate/hooks/useEmailTemplateDetail.d.ts +1 -0
  158. package/dist/containers/User/constants/types.d.ts +1 -0
  159. package/dist/containers/User/hooks/useExportUsersCsv.d.ts +1 -0
  160. package/dist/index-B3Kqv7dj.mjs +17787 -0
  161. package/dist/index-BTWI5jDz.js +15 -0
  162. package/dist/index-C1gw45bw.mjs +17792 -0
  163. package/dist/index-CFAFmJ4F.mjs +17782 -0
  164. package/dist/index-D6pNkzlV.mjs +17787 -0
  165. package/dist/index-DDw_4X4u.js +15 -0
  166. package/dist/index-DVZt7HdB.js +15 -0
  167. package/dist/index-Di2zNE1O.mjs +17792 -0
  168. package/dist/index-DzHydV61.js +15 -0
  169. package/dist/index-Ihdym4EQ.js +15 -0
  170. package/dist/index-UpEZLqQV.js +15 -0
  171. package/dist/index-cuQPyXoT.mjs +17772 -0
  172. package/dist/index.js +1 -1
  173. package/dist/index.modern.js +1 -1
  174. package/dist/mailCategoryService-BbqIjbpT.mjs +11 -0
  175. package/dist/mailCategoryService-C1sorb9h.js +1 -0
  176. package/dist/mailCategoryService-CZ9m51K4.js +1 -0
  177. package/dist/mailCategoryService-C_Lq0Uks.mjs +11 -0
  178. package/dist/mailCategoryService-DcwLjTWD.mjs +11 -0
  179. package/dist/mailCategoryService-DexSxwen.js +1 -0
  180. package/dist/mailCategoryService-DrZXrEp2.js +1 -0
  181. package/dist/mailCategoryService-DyLMoDxP.mjs +11 -0
  182. package/dist/mailCategoryService-LumZqQLL.mjs +11 -0
  183. package/dist/mailCategoryService-MyMGdKSl.mjs +11 -0
  184. package/dist/mailCategoryService-Pl31B1JT.js +1 -0
  185. package/dist/mailCategoryService-lvLdr9b4.js +1 -0
  186. package/dist/mario-core.css +1 -1
  187. package/package.json +1 -1
@@ -0,0 +1,1171 @@
1
+ import { jsxs as O, jsx as t } from "react/jsx-runtime";
2
+ import { Button as oe, Popover as Be, PopoverBody as Re, Label as K, Input as Y, FormGroup as ae, Row as ue, Col as q, Table as xe } from "reactstrap";
3
+ import { p as $e, t as pe, q as De, s as Le, v as Te, w as Fe, x as ke, y as Me, z as Pe, A as ze, B as He, C as Ve, S as V, E as je, F as Je, H as Ge, I as Ke, J as qe } from "./constants-ClfPwBI0.mjs";
4
+ import { useTranslation as ee } from "react-i18next";
5
+ import { useState as D, useCallback as L, useEffect as H, useRef as ge, useMemo as ie, Fragment as Ye } from "react";
6
+ import { useSelector as Z, useDispatch as W } from "react-redux";
7
+ import { useNavigate as We, useLocation as Qe } from "react-router-dom";
8
+ import { a5 as re, b as w, c as I, a6 as Xe, J as le, n as Ze, I as et, d as fe, N as tt, o as st, a7 as nt, G as j, s as x, a8 as be, a9 as Oe, a2 as Q, B as Ie, i as at, aa as rt, L as ct, ab as ot, O as it, P as lt, Q as dt, ac as mt } from "./index-CFAFmJ4F.mjs";
9
+ import { L as ht } from "./types-BvnbDeJF.mjs";
10
+ import { differenceInCalendarYears as ut, parseISO as pt } from "date-fns";
11
+ import ye from "papaparse";
12
+ function gt(e, n) {
13
+ $e(2, arguments);
14
+ var o = pe(e), d = pe(n);
15
+ return o.getFullYear() - d.getFullYear();
16
+ }
17
+ const ft = () => {
18
+ const [e, n] = D(De);
19
+ return { filters: e, setFilters: n, changeFilters: (d) => {
20
+ const a = {
21
+ ...e,
22
+ ...d
23
+ };
24
+ a.searchString && d.searchString && d.searchString != e.searchString && (a.currentPage = 1), n(a);
25
+ } };
26
+ }, yt = "/admin/user", St = "/admin/create-user", vt = "User list", Se = "/home", Nt = "/home", Ct = "/admin/home", _t = "/parent", bt = "/admin/schools", Ot = "/list-student", It = () => {
27
+ const e = We(), o = new URLSearchParams(location.search).get("query"), d = Z((s) => s.users.userList), a = Z((s) => s.users.totalItems), { filters: r, changeFilters: f } = ft(), v = o || "", [c, N] = D([]), R = window.location.host.includes("-district"), i = W(), { t: h } = ee(), U = (s) => {
28
+ const p = c.find((C) => C == s);
29
+ N(p ? c.filter((C) => C != s) : c.concat([s]));
30
+ }, A = L(
31
+ async () => {
32
+ if (c.length != 0) {
33
+ N([]);
34
+ return;
35
+ }
36
+ if (r.searchBy !== void 0 && r.searchByStrings !== void 0 && r.searchByStrings.length === 0) {
37
+ i(re({ userList: [], totalItems: 0 }));
38
+ return;
39
+ }
40
+ i(w(!0));
41
+ try {
42
+ const s = await Le(r);
43
+ N(s.data || []);
44
+ } catch (s) {
45
+ i(
46
+ I({
47
+ type: "danger",
48
+ message: s.response?.data?.title || s.message
49
+ })
50
+ );
51
+ }
52
+ i(w(!1));
53
+ },
54
+ [i, r, c]
55
+ ), _ = L(
56
+ async () => {
57
+ if (r.searchBy !== void 0 && r.searchByStrings !== void 0 && r.searchByStrings.length === 0) {
58
+ i(re({ userList: [], totalItems: 0 }));
59
+ return;
60
+ }
61
+ i(w(!0));
62
+ try {
63
+ const s = await Te(r), { items: p, totalItems: C } = s.data;
64
+ for (const E of p)
65
+ E.roles = E.roles.map((g) => g != Xe.EDUTEACHER ? g : "EduTeacher");
66
+ i(re({ userList: p, totalItems: C }));
67
+ } catch (s) {
68
+ i(
69
+ I({
70
+ type: "danger",
71
+ message: s.response?.data?.title || s.message
72
+ })
73
+ );
74
+ }
75
+ i(w(!1));
76
+ },
77
+ [i, r]
78
+ ), b = async () => {
79
+ i(w(!0));
80
+ try {
81
+ const s = await Me();
82
+ s.data ? (i(
83
+ I({
84
+ type: "success",
85
+ message: `${s.data} user${s.data > 1 ? "s have" : " has"} been synchronized`
86
+ })
87
+ ), _()) : i(
88
+ I({
89
+ type: "success",
90
+ message: "Users synchronized"
91
+ })
92
+ );
93
+ } catch (s) {
94
+ i(
95
+ I({
96
+ type: "danger",
97
+ message: s.response?.data?.title || s.message
98
+ })
99
+ );
100
+ }
101
+ i(w(!1));
102
+ }, l = (s) => {
103
+ if (!s) return "";
104
+ const p = [], { sourcedId: C, rosterUser: E } = s;
105
+ if (C && E && p.push(C), E) {
106
+ const { givenName: g, middleName: S, familyName: m, email: M } = E, $ = [];
107
+ m && $.push(m), S && $.push(S), g && $.push(g), p.push($.join(" ") || ""), p.push(M || "");
108
+ }
109
+ return p.join(" / ");
110
+ };
111
+ H(() => {
112
+ document.title = vt;
113
+ }, []), H(() => {
114
+ f({
115
+ ...r,
116
+ searchString: v
117
+ });
118
+ }, [v]), H(() => {
119
+ _();
120
+ }, [JSON.stringify(r)]);
121
+ const y = L(
122
+ (s) => {
123
+ i(
124
+ le({
125
+ isOpen: !0,
126
+ type: "warning",
127
+ message: h("do_you_want_to_remove_this_user"),
128
+ onConfirm: async () => {
129
+ i(w(!0));
130
+ try {
131
+ await Fe(s), i(
132
+ I({
133
+ type: "success",
134
+ message: "Remove user successfully"
135
+ })
136
+ ), r.currentPage !== 1 ? f({ currentPage: 1 }) : _();
137
+ } catch (p) {
138
+ i(
139
+ I({
140
+ type: "danger",
141
+ message: p.response?.data?.title || p.message
142
+ })
143
+ );
144
+ }
145
+ i(w(!1));
146
+ }
147
+ })
148
+ );
149
+ },
150
+ [JSON.stringify(r)]
151
+ ), T = (s) => {
152
+ const p = sessionStorage.getItem(et), {
153
+ token: C,
154
+ id: E,
155
+ firstName: g,
156
+ lastName: S,
157
+ roles: m,
158
+ email: M,
159
+ profileImageFileName: $
160
+ } = s.data;
161
+ p ? sessionStorage.setItem(fe, C) : localStorage.setItem(fe, C), m.includes("Admin") && localStorage.setItem("ROLES", "Admin"), localStorage.removeItem(tt), i(
162
+ st({
163
+ id: E,
164
+ firstName: g,
165
+ lastName: S,
166
+ roles: m,
167
+ email: M,
168
+ profileImageFileName: $
169
+ })
170
+ ), R ? e(bt) : m.includes("Admin") ? e(Ct) : m.includes("Teacher") || m.includes("Assistant") ? e(Se) : m.includes("Student") ? e(Nt) : m.includes("Parent") ? e(_t) : m.includes("EduTeacher") ? e(Ot) : (m.includes("Counselor") || m.includes("SecondaryTeacher")) && e(Se);
171
+ }, u = L(
172
+ async (s) => {
173
+ try {
174
+ const C = (await ke(s)).data;
175
+ i(
176
+ le({
177
+ isOpen: !0,
178
+ type: "warning",
179
+ message: h("do_you_want_to_impersonate_this_user"),
180
+ onConfirm: async () => {
181
+ i(w(!0));
182
+ try {
183
+ const E = {
184
+ email: C.email,
185
+ password: "default",
186
+ accessToken: C.token,
187
+ loginType: ht.Impersonate
188
+ }, g = await Ze(E);
189
+ localStorage.clear(), T(g);
190
+ } catch (E) {
191
+ I({
192
+ type: "danger",
193
+ message: E.response?.data?.title || E.message
194
+ });
195
+ }
196
+ i(w(!1));
197
+ }
198
+ })
199
+ );
200
+ } catch (p) {
201
+ i(
202
+ I({
203
+ type: "danger",
204
+ message: p.response?.data?.title || p.message
205
+ })
206
+ );
207
+ }
208
+ },
209
+ [r]
210
+ );
211
+ return {
212
+ userList: d,
213
+ totalItems: a,
214
+ filters: r,
215
+ queryName: o,
216
+ fullName: v,
217
+ getData: _,
218
+ removeData: y,
219
+ changeFilters: f,
220
+ reDirectDetailPage: (s) => {
221
+ const p = s ? `${yt}/${s}` : St;
222
+ e(p);
223
+ },
224
+ switchUser: u,
225
+ handleSyncRosterUsers: b,
226
+ rosterUserInfo: l,
227
+ userIds: c,
228
+ onSelectAllUser: A,
229
+ onSelectUser: U
230
+ };
231
+ }, wt = {
232
+ fontWeight: 500
233
+ }, At = {
234
+ height: 38,
235
+ background: "#316cd9"
236
+ }, Et = ({
237
+ text: e,
238
+ onClick: n,
239
+ className: o = ""
240
+ }) => /* @__PURE__ */ O(
241
+ oe,
242
+ {
243
+ onClick: n,
244
+ color: "primary",
245
+ style: At,
246
+ className: `d-flex align-items-center ${o} gap-2`,
247
+ children: [
248
+ /* @__PURE__ */ t(nt, {}),
249
+ /* @__PURE__ */ t("span", { style: wt, children: e })
250
+ ]
251
+ }
252
+ );
253
+ function Ut(e) {
254
+ return j({ attr: { viewBox: "0 0 24 24" }, child: [{ tag: "path", attr: { d: "M21 3H5a1 1 0 0 0-1 1v2.59c0 .523.213 1.037.583 1.407L10 13.414V21a1.001 1.001 0 0 0 1.447.895l4-2c.339-.17.553-.516.553-.895v-5.586l5.417-5.417c.37-.37.583-.884.583-1.407V4a1 1 0 0 0-1-1zm-6.707 9.293A.996.996 0 0 0 14 13v5.382l-2 1V13a.996.996 0 0 0-.293-.707L6 6.59V5h14.001l.002 1.583-5.71 5.71z" } }] })(e);
255
+ }
256
+ function Bt(e) {
257
+ return j({ attr: { viewBox: "0 0 24 24" }, child: [{ tag: "path", attr: { d: "M19.023 16.977a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.962 6.962 0 0 0 16 9c0-3.859-3.14-7-7-7S2 5.141 2 9s3.14 7 7 7c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604c-.379-.372-.885-.866-1.391-1.36zM9 14c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z" } }] })(e);
258
+ }
259
+ function Rt(e) {
260
+ return j({ attr: { viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, child: [{ tag: "path", attr: { fillRule: "evenodd", d: "M3 3a1 1 0 011-1h12a1 1 0 011 1v3a1 1 0 01-.293.707L12 11.414V15a1 1 0 01-.293.707l-2 2A1 1 0 018 17v-5.586L3.293 6.707A1 1 0 013 6V3z", clipRule: "evenodd" } }] })(e);
261
+ }
262
+ function as(e) {
263
+ return j({ attr: { viewBox: "0 0 1024 1024" }, child: [{ tag: "path", attr: { d: "M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z" } }] })(e);
264
+ }
265
+ function we(e) {
266
+ return j({ attr: { viewBox: "0 0 1024 1024" }, child: [{ tag: "path", attr: { d: "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z" } }] })(e);
267
+ }
268
+ function Ae(e) {
269
+ return j({ attr: { viewBox: "0 0 1024 1024" }, child: [{ tag: "path", attr: { d: "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z" } }] })(e);
270
+ }
271
+ const xt = (e, n) => {
272
+ H(() => {
273
+ function o(d) {
274
+ e.current && !e.current.contains(d.target) && n?.();
275
+ }
276
+ return document.addEventListener("mousedown", o), () => {
277
+ document.removeEventListener("mousedown", o);
278
+ };
279
+ }, [e.current]);
280
+ }, $t = (e) => {
281
+ const {
282
+ isOpen: n,
283
+ sortBy: o,
284
+ filters: d,
285
+ users: a,
286
+ searchBy: r,
287
+ defaultOptions: f,
288
+ selectedOptions: v,
289
+ searchKey: c,
290
+ onChangeSearchKey: N,
291
+ onOptionsChange: R,
292
+ onSearch: i,
293
+ onClose: h,
294
+ onChangeFilters: U,
295
+ getOption: A
296
+ } = e, [_, b] = D(), [l, y] = D([]), T = ge(null), u = ge(null);
297
+ xt(T, h);
298
+ const { t: B } = ee(), s = L(
299
+ () => {
300
+ if (!n) return;
301
+ const F = c?.trim?.() ?? "";
302
+ r != null && !f && i?.(F, r), r != null && f && y(f.filter((P) => P.label.toLowerCase().includes(F.toLowerCase())));
303
+ },
304
+ [r, c, JSON.stringify(f), n]
305
+ ), p = () => {
306
+ u.current && clearTimeout(u.current), u.current = setTimeout(s, 500);
307
+ }, C = (F) => {
308
+ const P = F.target.value;
309
+ N(P);
310
+ }, E = L(() => {
311
+ R?.(_, r), h?.();
312
+ }, [JSON.stringify(_)]), g = L((F) => {
313
+ const P = F.target.value ?? "";
314
+ let z = _ ?? [], G = z.indexOf(P);
315
+ G > -1 ? z.splice(G, 1) : z = [...z, P], b(z == null ? z : [...z]);
316
+ }, [JSON.stringify(_)]), S = L((F) => {
317
+ const P = F.target.checked;
318
+ b(P ? void 0 : []);
319
+ }, []), m = L(() => {
320
+ U?.({
321
+ ...d,
322
+ sortBy: o,
323
+ isDescending: !0
324
+ }), h?.();
325
+ }, [JSON.stringify(d), r]), M = L(() => {
326
+ U?.({
327
+ ...d,
328
+ sortBy: o,
329
+ isDescending: !1
330
+ }), h?.();
331
+ }, [JSON.stringify(d), r]), $ = ie(() => A ? a.map((F) => A(F, B)) : [], [JSON.stringify(a), JSON.stringify(A)]), de = d?.isDescending == !1 && d.sortBy === o, J = !!d?.isDescending && d.sortBy === o;
332
+ return H(() => {
333
+ d?.searchBy !== r ? b(void 0) : b(v);
334
+ }, [JSON.stringify(v), d?.searchBy]), H(() => {
335
+ y(f || []);
336
+ }, [JSON.stringify(f)]), H(() => {
337
+ p();
338
+ }, [c, n]), {
339
+ ref: T,
340
+ options: $,
341
+ inputRef: u,
342
+ sOptions: _,
343
+ isAscending: de,
344
+ isDescending: J,
345
+ filteredOptions: l,
346
+ searchKey: c,
347
+ handleSearch: s,
348
+ handleApplyFilter: E,
349
+ handleOptionSelected: g,
350
+ handleOptionSelectedAll: S,
351
+ handleSortDesc: m,
352
+ handleSortAsc: M,
353
+ handleChangeSearchKey: C
354
+ };
355
+ }, Dt = (e) => {
356
+ const {
357
+ defaultOptions: n,
358
+ onClose: o,
359
+ getOption: d
360
+ } = e, {
361
+ ref: a,
362
+ inputRef: r,
363
+ options: f,
364
+ sOptions: v,
365
+ isAscending: c,
366
+ isDescending: N,
367
+ filteredOptions: R,
368
+ searchKey: i,
369
+ handleChangeSearchKey: h,
370
+ handleApplyFilter: U,
371
+ handleOptionSelected: A,
372
+ handleOptionSelectedAll: _,
373
+ handleSortDesc: b,
374
+ handleSortAsc: l
375
+ } = $t(e);
376
+ return /* @__PURE__ */ t(Be, { ...e, hideArrow: !0, className: x["popover-zindex"], children: /* @__PURE__ */ t(Re, { className: "pb-3", children: /* @__PURE__ */ O("div", { ref: a, className: x.popover, children: [
377
+ /* @__PURE__ */ O(
378
+ "div",
379
+ {
380
+ className: `d-flex flex-column ${x.popover__sort}`,
381
+ children: [
382
+ /* @__PURE__ */ t(K, { className: "font-weight-bold", children: "Sort" }),
383
+ /* @__PURE__ */ O(
384
+ "div",
385
+ {
386
+ className: `px-1 ${x.popover__sort__item} ${c && x["popover__sort__item--active"]}`,
387
+ onClick: l,
388
+ children: [
389
+ /* @__PURE__ */ t(we, { className: "mr-1" }),
390
+ "Ascending"
391
+ ]
392
+ }
393
+ ),
394
+ /* @__PURE__ */ O(
395
+ "div",
396
+ {
397
+ className: `px-1 mt-1 ${x.popover__sort__item} ${N && x["popover__sort__item--active"]}`,
398
+ onClick: b,
399
+ children: [
400
+ /* @__PURE__ */ t(Ae, { className: "mr-1" }),
401
+ "Descending"
402
+ ]
403
+ }
404
+ )
405
+ ]
406
+ }
407
+ ),
408
+ (typeof d < "u" || !!n) && /* @__PURE__ */ O(Ye, { children: [
409
+ /* @__PURE__ */ t("div", { className: "border border-top-1 border-bottom-0 mx-1 my-2" }),
410
+ /* @__PURE__ */ O("div", { className: "d-flex flex-column", children: [
411
+ /* @__PURE__ */ t(K, { className: "font-weight-bold", children: "Filter" }),
412
+ /* @__PURE__ */ O("div", { className: `position-relative px-1 ${x.popover__search}`, children: [
413
+ /* @__PURE__ */ t(
414
+ Bt,
415
+ {
416
+ className: `position-absolute ${x.popover__search__icon}`
417
+ }
418
+ ),
419
+ /* @__PURE__ */ t(
420
+ Y,
421
+ {
422
+ ref: r,
423
+ className: x.popover__search__input,
424
+ value: i,
425
+ onChange: h
426
+ }
427
+ )
428
+ ] }),
429
+ /* @__PURE__ */ O(
430
+ "div",
431
+ {
432
+ className: `mx-1 mt-2 p-2 bg-light ${x.popover__options}`,
433
+ children: [
434
+ /* @__PURE__ */ O(
435
+ ae,
436
+ {
437
+ className: "d-flex align-items-center",
438
+ check: !0,
439
+ style: { gap: "8px" },
440
+ children: [
441
+ /* @__PURE__ */ t(
442
+ Y,
443
+ {
444
+ type: "checkbox",
445
+ onChange: _,
446
+ checked: v == null
447
+ }
448
+ ),
449
+ " ",
450
+ /* @__PURE__ */ t(K, { check: !0, children: "(Select all)" })
451
+ ]
452
+ }
453
+ ),
454
+ !!d && !n && f.map((y) => /* @__PURE__ */ O(
455
+ ae,
456
+ {
457
+ className: "d-flex align-items-center",
458
+ check: !0,
459
+ style: { gap: "8px" },
460
+ children: [
461
+ /* @__PURE__ */ t(
462
+ Y,
463
+ {
464
+ type: "checkbox",
465
+ value: y.value,
466
+ onChange: A,
467
+ checked: v?.includes(y.value) || v == null
468
+ }
469
+ ),
470
+ " ",
471
+ /* @__PURE__ */ t(K, { check: !0, children: y.label })
472
+ ]
473
+ },
474
+ y.value
475
+ )),
476
+ !!n && R.map((y) => /* @__PURE__ */ O(
477
+ ae,
478
+ {
479
+ className: "d-flex align-items-center",
480
+ check: !0,
481
+ style: { gap: "8px" },
482
+ children: [
483
+ /* @__PURE__ */ t(
484
+ Y,
485
+ {
486
+ type: "checkbox",
487
+ value: y.value,
488
+ onChange: A,
489
+ checked: v?.includes(y.value) || v == null
490
+ }
491
+ ),
492
+ " ",
493
+ /* @__PURE__ */ t(K, { check: !0, children: y.label })
494
+ ]
495
+ },
496
+ y.value
497
+ ))
498
+ ]
499
+ }
500
+ )
501
+ ] }),
502
+ /* @__PURE__ */ O("div", { className: "d-flex justify-content-end mt-3", style: { gap: "8px" }, children: [
503
+ /* @__PURE__ */ t(
504
+ oe,
505
+ {
506
+ color: "primary",
507
+ className: "mr-2",
508
+ size: "sm",
509
+ onClick: U,
510
+ children: "Apply Filter"
511
+ }
512
+ ),
513
+ /* @__PURE__ */ t(
514
+ oe,
515
+ {
516
+ color: "secondary",
517
+ size: "sm",
518
+ onClick: o,
519
+ children: "Cancel"
520
+ }
521
+ )
522
+ ] })
523
+ ] })
524
+ ] }) }) });
525
+ }, Lt = ({
526
+ data: e,
527
+ popoverId: n,
528
+ filters: o,
529
+ searchString: d,
530
+ users: a,
531
+ selectedOptions: r,
532
+ onOptionsChange: f,
533
+ onSearch: v,
534
+ onChangeFilters: c,
535
+ onOpenFilter: N,
536
+ onClose: R,
537
+ isCenter: i,
538
+ isActive: h = !1
539
+ }) => {
540
+ const { t: U } = ee(), [A, _] = D(""), b = ie(
541
+ () => e.sortBy != null ? Pe[e.sortBy] : "",
542
+ [e.sortBy]
543
+ ), l = ie(() => n === b, [b, n]), y = () => {
544
+ N?.(b, e.searchBy, A, e.sortBy);
545
+ }, T = (u) => {
546
+ _(u);
547
+ };
548
+ return /* @__PURE__ */ t("th", { className: e.className, children: b && e.sortBy !== void 0 ? /* @__PURE__ */ O("div", { className: `w-100 d-flex ${i ? "justify-content-center" : "justify-content-between"} align-items-center ${x["table-filter-icon"]}`, children: [
549
+ U(e.name),
550
+ /* @__PURE__ */ O(
551
+ "div",
552
+ {
553
+ className: "ml-2 p-1",
554
+ id: b,
555
+ onClick: y,
556
+ style: {
557
+ cursor: "pointer"
558
+ },
559
+ children: [
560
+ e.sortBy !== void 0 && e.sortBy === o?.sortBy && /* @__PURE__ */ t("span", { children: o.isDescending ? /* @__PURE__ */ t(Ae, {}) : /* @__PURE__ */ t(we, {}) }),
561
+ o?.searchByStrings?.length && e.searchBy === o?.searchBy ? /* @__PURE__ */ t(Rt, { color: h ? "#007bff" : "#242424" }) : /* @__PURE__ */ t(Ut, { color: h ? "#007bff" : "#242424" })
562
+ ]
563
+ }
564
+ ),
565
+ /* @__PURE__ */ t(
566
+ Dt,
567
+ {
568
+ placement: "bottom-end",
569
+ target: b,
570
+ users: a,
571
+ isOpen: l,
572
+ filters: o,
573
+ sortBy: e.sortBy,
574
+ searchKey: A,
575
+ searchBy: e.searchBy,
576
+ searchString: d,
577
+ defaultOptions: e.options,
578
+ selectedOptions: r,
579
+ onClose: R,
580
+ onSearch: v,
581
+ getOption: e.getOption,
582
+ onChangeFilters: c,
583
+ onOptionsChange: f,
584
+ onChangeSearchKey: T
585
+ }
586
+ )
587
+ ] }) : U(e.name) });
588
+ }, Tt = (e) => {
589
+ const {
590
+ filters: n,
591
+ onChangeFilters: o,
592
+ isStudentFilter: d,
593
+ teacherOptions: a,
594
+ assistantOptions: r,
595
+ counselorOptions: f,
596
+ secondaryTeacherOptions: v
597
+ } = e, [c, N] = D(), [R, i] = D([]), [h, U] = D({
598
+ ...ze,
599
+ isDescending: n.isDescending,
600
+ searchString: n.searchString
601
+ }), A = W(), _ = Qe(), b = L(
602
+ async (B) => {
603
+ try {
604
+ const p = (d ? await Ve(h) : await He({ ...h, byStudent: B })).data?.items || [];
605
+ i(p);
606
+ } catch (s) {
607
+ A(
608
+ I({
609
+ type: "danger",
610
+ message: s.response?.data?.title || s.message
611
+ })
612
+ );
613
+ }
614
+ },
615
+ [JSON.stringify(h), d]
616
+ ), l = L((B, s, p, C) => {
617
+ N(B), U({
618
+ ...h,
619
+ searchBy: s,
620
+ searchStringBy: p,
621
+ isDescending: n.sortBy === C ? n.isDescending : void 0,
622
+ searchString: n.searchString
623
+ });
624
+ }, [JSON.stringify(h), n.isDescending, n.searchString]), y = () => {
625
+ N("");
626
+ }, T = L((B, s) => {
627
+ U({
628
+ ...h,
629
+ searchBy: s,
630
+ searchStringBy: B
631
+ });
632
+ }, [JSON.stringify(h)]), u = L((B, s) => {
633
+ s && o?.({
634
+ ...n,
635
+ [V[s]]: B
636
+ });
637
+ }, [JSON.stringify(n)]);
638
+ return H(() => {
639
+ if (!_.pathname.includes("users/assign-student")) return;
640
+ const B = (p) => p.sort((C, E) => C.localeCompare(E)), s = h.searchStringBy?.toLowerCase() || "";
641
+ if (h.searchBy === V.Grade)
642
+ i(je);
643
+ else {
644
+ let p = [];
645
+ switch (h.searchBy) {
646
+ case V.Name:
647
+ b(!0);
648
+ break;
649
+ case V.Teacher:
650
+ p = a?.map((S) => S.label).filter(Boolean) || [];
651
+ break;
652
+ case V.Assistant:
653
+ p = r?.map((S) => S.label).filter(Boolean) || [];
654
+ break;
655
+ case V.Counselor:
656
+ p = f?.map((S) => S.label).filter(Boolean) || [];
657
+ break;
658
+ case V.SecondaryTeacher:
659
+ p = v?.map((S) => S.label).filter(Boolean) || [];
660
+ break;
661
+ }
662
+ const C = Array.from(new Set(p)), E = s ? C.filter(
663
+ (S) => S.toLowerCase().includes(s)
664
+ ) : C, g = B(E);
665
+ i(g);
666
+ }
667
+ }, [
668
+ JSON.stringify(h),
669
+ a,
670
+ r,
671
+ f,
672
+ v,
673
+ _.pathname
674
+ ]), H(() => {
675
+ !(_.pathname.includes("users/assign-student") && h.searchBy !== void 0) && h.searchBy !== void 0 && b();
676
+ }, [
677
+ JSON.stringify(h),
678
+ _.pathname
679
+ ]), {
680
+ popoverFilters: h,
681
+ popoverId: c,
682
+ users: R,
683
+ handleFilterIcon: l,
684
+ handleCloseFilter: y,
685
+ handleSearch: T,
686
+ handleChangeFilters: u
687
+ };
688
+ }, Ft = ({
689
+ headers: e,
690
+ filters: n,
691
+ onChangeFilters: o,
692
+ isStudentFilter: d,
693
+ teacherOptions: a = [],
694
+ assistantOptions: r = [],
695
+ counselorOptions: f = [],
696
+ secondaryTeacherOptions: v = []
697
+ }) => {
698
+ const {
699
+ popoverId: c,
700
+ users: N,
701
+ handleFilterIcon: R,
702
+ handleCloseFilter: i,
703
+ handleSearch: h,
704
+ handleChangeFilters: U
705
+ } = Tt({
706
+ filters: n,
707
+ onChangeFilters: o,
708
+ isStudentFilter: d,
709
+ teacherOptions: a,
710
+ assistantOptions: r,
711
+ counselorOptions: f,
712
+ secondaryTeacherOptions: v
713
+ }), A = Object.entries(n).filter(
714
+ ([l, y]) => y !== "" && !(Array.isArray(y) && y.length === 0) && y !== null && y !== void 0
715
+ ).map(([l]) => l), _ = Object.entries(V).filter(([l, y]) => isNaN(Number(l))), b = A.map((l) => _.find(([y]) => y === l)).filter((l) => !!l);
716
+ return /* @__PURE__ */ t("tr", { children: e.map((l) => l.onSelectAll ? /* @__PURE__ */ t("th", { className: `align-middle text-center ${l.className}`, children: /* @__PURE__ */ t(
717
+ "input",
718
+ {
719
+ type: "checkbox",
720
+ onChange: () => l.onSelectAll?.(),
721
+ checked: l.isCheckAll ?? !1
722
+ }
723
+ ) }, l.name) : /* @__PURE__ */ t(
724
+ Lt,
725
+ {
726
+ users: N,
727
+ data: l,
728
+ isCenter: l.isCenter,
729
+ filters: n,
730
+ popoverId: c,
731
+ selectedOptions: n.searchByStrings,
732
+ onSearch: h,
733
+ onClose: i,
734
+ onOpenFilter: R,
735
+ onChangeFilters: o,
736
+ onOptionsChange: U,
737
+ isActive: typeof l.searchBy == "number" && b.some(([y, T]) => T === l.searchBy)
738
+ },
739
+ l.name
740
+ )) });
741
+ }, kt = () => {
742
+ const e = W(), n = Z((r) => r?.common?.user?.schoolName) || "", o = async (r) => {
743
+ e(w(!0));
744
+ try {
745
+ const v = (await Je(r)).data, c = d(v), N = document.createElement("a");
746
+ N.href = c, N.download = `${n}_Users_Report.csv`, N.click();
747
+ } catch (f) {
748
+ e(
749
+ I({
750
+ type: "danger",
751
+ message: f.response?.data?.title || f.message
752
+ })
753
+ );
754
+ }
755
+ e(w(!1));
756
+ }, d = (r) => {
757
+ let f = `First Name,Last Name,Email,Phone,Age,Grade,Role,Active Status,Create Time,Roster Sourced Id,Roster Status,Roster Family Name,Roster Middle Name,Roster Given Name,Roster Email,Roster Role,Roster Grades,Teachers,Assistants,Counselors,SupportTeachers,EduTeachers
758
+ `;
759
+ const v = r.map((c) => {
760
+ const N = c.dateOfBirth !== be ? ut(
761
+ /* @__PURE__ */ new Date(),
762
+ pt(c.dateOfBirth)
763
+ ) : "";
764
+ return `${a(c.firstName)},${a(c.lastName)},${a(c.email)},${a(c.phoneNumber)},${N},${a(c.grade)},${a(c.roles.join(", ").replace("SecondaryTeacher", "SupportTeacher"))},${c.isActive ? "Active" : "Inactive"},${Oe(c?.createTime, "yyyy-MM-dd HH:mm")},${a(c.sourcedId)},${a(c.rosterUser?.status)},${a(c.rosterUser?.familyName)},${a(c.rosterUser?.middleName)},${a(c.rosterUser?.givenName)},${a(c.rosterUser?.email)},${a(c.rosterUser?.role)},${a(c.rosterUser?.grades)},${a(c.teachers)},${a(c.assistants)},${a(c.counselors)},${a(c.supportTeachers)},${a(c.eduTeachers)}`;
765
+ }).join(`
766
+ `);
767
+ return `${Ge}${f}${encodeURIComponent(v)}`;
768
+ }, a = (r) => r ? `"${r.replace(/"/g, '""').replaceAll(/\n/g, " ")}"` : "";
769
+ return {
770
+ exportUsers: o
771
+ };
772
+ }, Ee = `${Ie}/api/ImportCsv/csv`, te = `${Ie}/api/Teacher`, Mt = (e, n) => Q.post(`${Ee}/${n}`, e), ve = (e) => Q.post(`${Ee}/importClassReflection`, e), Pt = (e, n) => Q.post(`${te}/adminImportStudentByTeacherId/${e}`, n), zt = (e) => Q.post(`${te}/adminImport`, e), Ht = () => at.get(`${te}/download-template-file-user`), rs = (e, n) => Q.post(`${te}/validate-csv-template-student/${n}`, e);
773
+ var Ue = /* @__PURE__ */ ((e) => (e.Students = "students", e.Subjects = "subjects", e.Grades = "grades", e.Attendances = "attendances", e.ClassReflection = "classReflection", e.Others = "others", e.AllUser = "allUser", e))(Ue || {});
774
+ const ce = "csvupload", Ne = {
775
+ teacherName: "",
776
+ teacherEmail: "",
777
+ studentIds: [],
778
+ file: ""
779
+ }, Vt = () => {
780
+ const e = W(), n = Z((g) => g.common.isLoading), [o, d] = D(null), [a, r] = D(), [f, v] = D([]), [c, N] = D(
781
+ Ne
782
+ ), [R, i] = D(), h = window.location.hostname, U = h.includes("isb") || h.includes("stage"), [A, _] = D(0), [b, l] = D(""), y = async () => {
783
+ e(w(!0));
784
+ try {
785
+ const m = await Ht();
786
+ var g = new Blob([m.data.content], { type: "text/csv" });
787
+ const M = window.URL.createObjectURL(g);
788
+ var S = document.createElement("a");
789
+ S.href = M, S.setAttribute("download", m.data.nameFile), S.click(), e(
790
+ I({
791
+ type: "success",
792
+ message: "Download successfully"
793
+ })
794
+ );
795
+ } catch (m) {
796
+ e(
797
+ I({
798
+ type: "danger",
799
+ message: m.message
800
+ })
801
+ );
802
+ }
803
+ e(w(!1));
804
+ }, T = L(
805
+ async (g) => {
806
+ if (!o || !g) return;
807
+ e(w(!0));
808
+ try {
809
+ const $ = new FormData();
810
+ if ($.append("file", g, g.name), o == "allUser") {
811
+ let J = (await g.text()).trim();
812
+ const F = J.split(`
813
+ `).map((k) => k.trim()), P = F.findIndex(
814
+ (k) => k.split(",").includes("FirstName")
815
+ );
816
+ if (P === 0)
817
+ throw new Error("Invalid CSV: Missing header row.");
818
+ J = F.slice(P).join(`
819
+ `);
820
+ const z = ye.parse(J, {
821
+ header: !0,
822
+ skipEmptyLines: !0
823
+ }), G = z.meta.fields, me = z.data;
824
+ if (!G)
825
+ throw new Error("Unable to determine header from CSV file");
826
+ const he = 20, se = [];
827
+ for (let k = 0; k < me.length; k += he) {
828
+ const ne = me.slice(k, k + he), X = ye.unparse({
829
+ fields: G,
830
+ data: ne
831
+ });
832
+ se.push(X);
833
+ }
834
+ for (let k = 0; k < se.length; k++) {
835
+ const ne = new Blob([se[k]], { type: "text/csv" }), X = new FormData();
836
+ X.append(
837
+ "file",
838
+ ne,
839
+ `students_chunk${k + 1}.csv`
840
+ ), await zt(X);
841
+ }
842
+ } else
843
+ U ? o == "classReflection" && await ve($) : await Mt($, o.toString());
844
+ e(
845
+ I({
846
+ type: "success",
847
+ message: "Import CSV successfully"
848
+ })
849
+ );
850
+ } catch ($) {
851
+ e(
852
+ I({
853
+ type: "danger",
854
+ message: $.response?.data?.title || $.message
855
+ })
856
+ );
857
+ }
858
+ e(w(!1));
859
+ const S = document.getElementById(ce), m = document.getElementById("import-student"), M = document.getElementById(
860
+ "import-classReflection"
861
+ );
862
+ S && (S.value = ""), m && (m.value = ""), M && (M.value = "");
863
+ },
864
+ [o]
865
+ ), u = async (g) => {
866
+ if (!A) {
867
+ e(
868
+ I({
869
+ type: "danger",
870
+ message: "Select teacher before import csv"
871
+ })
872
+ );
873
+ return;
874
+ }
875
+ if (!o || !g) return;
876
+ e(w(!0));
877
+ try {
878
+ const m = new FormData();
879
+ m.append("file", g, g.name), await Pt(A, m), e(
880
+ I({
881
+ type: "success",
882
+ message: "Import CSV successfully"
883
+ })
884
+ );
885
+ } catch (m) {
886
+ e(
887
+ I({
888
+ type: "danger",
889
+ message: m.response?.data?.title || m.message
890
+ })
891
+ );
892
+ }
893
+ e(w(!1));
894
+ const S = document.getElementById("teacherSelector");
895
+ S && (S.value = "");
896
+ }, B = async (g) => {
897
+ if (!a || !a) return;
898
+ e(w(!0));
899
+ try {
900
+ const m = new FormData();
901
+ m.append("file", a, a.name), m.append("teacherName", g.teacherName), m.append("teacherEmail", g.teacherEmail), g.studentIds.forEach((M) => {
902
+ m.append("studentIds", M);
903
+ }), await ve(m), e(
904
+ I({
905
+ type: "success",
906
+ message: "Import CSV successfully"
907
+ })
908
+ ), N(Ne);
909
+ } catch (m) {
910
+ e(
911
+ I({
912
+ type: "danger",
913
+ message: m.response?.data?.title || m.message
914
+ })
915
+ );
916
+ }
917
+ e(w(!1));
918
+ const S = document.getElementById(ce);
919
+ S && (S.value = "");
920
+ }, s = (g) => {
921
+ _(g.value);
922
+ }, p = (g) => {
923
+ i(g), l(g?.name || "");
924
+ }, C = () => {
925
+ if (!R) {
926
+ e(
927
+ I({
928
+ type: "danger",
929
+ message: "Select CSV to import"
930
+ })
931
+ );
932
+ return;
933
+ }
934
+ u(R);
935
+ };
936
+ return {
937
+ isLoading: n,
938
+ id: ce,
939
+ setType: d,
940
+ upload: T,
941
+ initImportReflection: c,
942
+ setInitImportReflection: N,
943
+ onConfirm: B,
944
+ CSVType: Ue,
945
+ dataFile: a,
946
+ setDataFile: r,
947
+ setArrStudent: v,
948
+ arrStudent: f,
949
+ isCheckDomainIBS: U,
950
+ onChangeTeacher: s,
951
+ uploadByTeacherId: u,
952
+ setDataFileImportStudent: p,
953
+ onUpLoadStudentFile: C,
954
+ defaultTeacher: A,
955
+ fileName: b,
956
+ onStudentSubmit: () => {
957
+ e(
958
+ le({
959
+ isOpen: !0,
960
+ type: "warning",
961
+ message: "Are you sure upload this file?",
962
+ onConfirm: () => {
963
+ C();
964
+ }
965
+ })
966
+ );
967
+ },
968
+ downloadTemplateUser: y
969
+ };
970
+ }, jt = () => {
971
+ const e = W(), n = async (a) => {
972
+ e(w(!0));
973
+ try {
974
+ await Ke(a), e(
975
+ I({
976
+ type: "success",
977
+ message: "Send Successfully"
978
+ })
979
+ );
980
+ } catch (r) {
981
+ e(
982
+ I({
983
+ type: "danger",
984
+ message: r.response?.data?.title || r.message
985
+ })
986
+ );
987
+ }
988
+ e(w(!1));
989
+ };
990
+ return {
991
+ handleSendMultiUsers: (a) => {
992
+ n({ userIds: [...a] });
993
+ },
994
+ handleSendSingleUser: (a) => {
995
+ n({ userIds: [a] });
996
+ }
997
+ };
998
+ }, Ce = {
999
+ fontWeight: 500
1000
+ }, _e = {
1001
+ height: 38,
1002
+ backgroundColor: "#2eb85c",
1003
+ borderColor: "#2eb85c"
1004
+ }, Jt = "user", Gt = () => {
1005
+ const {
1006
+ queryName: e,
1007
+ userList: n,
1008
+ totalItems: o,
1009
+ filters: d,
1010
+ fullName: a,
1011
+ removeData: r,
1012
+ changeFilters: f,
1013
+ reDirectDetailPage: v,
1014
+ switchUser: c,
1015
+ handleSyncRosterUsers: N,
1016
+ rosterUserInfo: R,
1017
+ onSelectUser: i,
1018
+ userIds: h,
1019
+ onSelectAllUser: U
1020
+ } = It(), { handleSendMultiUsers: A } = jt(), { upload: _ } = Vt(), {
1021
+ exportUsers: b
1022
+ } = kt(), { t: l } = ee(), y = () => b(d), T = [
1023
+ {
1024
+ name: "",
1025
+ isCenter: !0,
1026
+ onSelectAll: () => {
1027
+ U();
1028
+ },
1029
+ isCheckAll: h.length == o && o != 0
1030
+ }
1031
+ ].concat(qe);
1032
+ return /* @__PURE__ */ O("div", { className: `fadeIn animated h-100 ${mt <= 767 ? x["p-0-12"] : ""}`, children: [
1033
+ /* @__PURE__ */ t("h5", { className: "mt-4 mb-2", children: l(`${Jt}`) }),
1034
+ /* @__PURE__ */ O(ue, { className: "my-2", children: [
1035
+ /* @__PURE__ */ t(q, { md: 8, children: /* @__PURE__ */ t(
1036
+ rt,
1037
+ {
1038
+ text: l("create_user"),
1039
+ onClick: () => v(),
1040
+ initValue: e || "",
1041
+ onSearch: (u) => f({
1042
+ searchString: u
1043
+ }),
1044
+ placeholder: l("type_something_to_search_by_user_name")
1045
+ }
1046
+ ) }),
1047
+ /* @__PURE__ */ O(
1048
+ q,
1049
+ {
1050
+ md: 4,
1051
+ className: "d-flex justify-content-end align-items-center",
1052
+ children: [
1053
+ l("total_of_users"),
1054
+ " : ",
1055
+ o
1056
+ ]
1057
+ }
1058
+ ),
1059
+ /* @__PURE__ */ O(q, { md: 12, className: "d-flex justify-content-end my-2", style: { gap: "8px" }, children: [
1060
+ /* @__PURE__ */ t(
1061
+ "button",
1062
+ {
1063
+ className: "btn btn-success d-flex align-items-center border-0",
1064
+ style: _e,
1065
+ onClick: () => A(h),
1066
+ children: /* @__PURE__ */ t("p", { className: `${x["button-content"]} mb-0`, style: Ce, children: l("welcome_email_resend") })
1067
+ }
1068
+ ),
1069
+ /* @__PURE__ */ t(
1070
+ Y,
1071
+ {
1072
+ id: "import-user",
1073
+ className: "d-none",
1074
+ type: "file",
1075
+ onChange: (u) => _(u.target.files[0]),
1076
+ accept: "text/csv"
1077
+ }
1078
+ ),
1079
+ /* @__PURE__ */ t(Et, { text: l("sync_roster_users"), onClick: N }),
1080
+ /* @__PURE__ */ O(
1081
+ "button",
1082
+ {
1083
+ className: "btn btn-success d-flex align-items-center border-0 p-0",
1084
+ style: _e,
1085
+ onClick: y,
1086
+ children: [
1087
+ /* @__PURE__ */ t("div", { className: `${x["button-icon"]}`, children: /* @__PURE__ */ t("img", { src: "images/export-icon.svg", alt: "" }) }),
1088
+ /* @__PURE__ */ t("p", { className: `${x["button-content"]} mb-0`, style: Ce, children: l("export_to_csv") })
1089
+ ]
1090
+ }
1091
+ )
1092
+ ] })
1093
+ ] }),
1094
+ /* @__PURE__ */ O(ue, { className: "mb-2", children: [
1095
+ /* @__PURE__ */ t(q, { md: 12, children: /* @__PURE__ */ t("div", { style: { overflow: "auto" }, children: /* @__PURE__ */ O(xe, { bordered: !0, hover: !0, striped: !0, size: "sm", children: [
1096
+ /* @__PURE__ */ t("thead", { children: /* @__PURE__ */ t(
1097
+ Ft,
1098
+ {
1099
+ headers: T,
1100
+ filters: d,
1101
+ fullName: a,
1102
+ onChangeFilters: f
1103
+ }
1104
+ ) }),
1105
+ /* @__PURE__ */ O("tbody", { children: [
1106
+ n && n.length > 0 && n.map((u) => /* @__PURE__ */ O("tr", { children: [
1107
+ /* @__PURE__ */ t("td", { className: "align-middle", children: /* @__PURE__ */ t(
1108
+ "input",
1109
+ {
1110
+ type: "checkbox",
1111
+ onChange: () => i(u.id),
1112
+ checked: h.includes(u.id) ?? !1
1113
+ }
1114
+ ) }),
1115
+ /* @__PURE__ */ t("td", { className: "align-middle", children: /* @__PURE__ */ t(
1116
+ ct,
1117
+ {
1118
+ label: `${u.fullName}`,
1119
+ onClick: () => v(
1120
+ u.id
1121
+ )
1122
+ }
1123
+ ) }),
1124
+ /* @__PURE__ */ t("td", { className: "align-middle", children: u.email }),
1125
+ /* @__PURE__ */ t("td", { className: "align-middle", children: u.dateOfBirth !== be && gt(
1126
+ /* @__PURE__ */ new Date(),
1127
+ new Date(u.dateOfBirth)
1128
+ ) }),
1129
+ /* @__PURE__ */ t("td", { className: "align-middle", children: !!u.roles && u.roles.map((B) => B === "SecondaryTeacher" ? "SupportTeacher" : B).join(", ") }),
1130
+ /* @__PURE__ */ t("td", { className: "align-middle", children: u.isActive ? l("active") : l("inactive") }),
1131
+ /* @__PURE__ */ t("td", { className: "align-middle", children: Oe(u?.createTime, "yyyy-MM-dd HH:mm") }),
1132
+ /* @__PURE__ */ t("td", { children: R(u) }),
1133
+ /* @__PURE__ */ t("td", { className: "align-middle", children: /* @__PURE__ */ t(
1134
+ ot,
1135
+ {
1136
+ style: { fontSize: "18px", margin: "0 10px", cursor: "pointer" },
1137
+ onClick: () => c(u.id)
1138
+ }
1139
+ ) }),
1140
+ /* @__PURE__ */ t("td", { className: "align-middle", style: { padding: "0 15px" }, children: /* @__PURE__ */ t(
1141
+ it,
1142
+ {
1143
+ onClick: () => r(u.id)
1144
+ }
1145
+ ) })
1146
+ ] }, u.id)),
1147
+ (!n || !n.length) && /* @__PURE__ */ t("tr", { children: /* @__PURE__ */ t("td", { colSpan: 12, className: "p-0", children: /* @__PURE__ */ t(lt, { className: "mb-0", label: l("user") }) }) })
1148
+ ] })
1149
+ ] }) }) }),
1150
+ /* @__PURE__ */ t(q, { md: 12, children: /* @__PURE__ */ t(
1151
+ dt,
1152
+ {
1153
+ filters: d,
1154
+ totalRecordCount: o,
1155
+ changePageSize: (u) => f({ pageSize: u }),
1156
+ changePage: (u) => f({ currentPage: u })
1157
+ }
1158
+ ) })
1159
+ ] })
1160
+ ] });
1161
+ }, cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1162
+ __proto__: null,
1163
+ default: Gt
1164
+ }, Symbol.toStringTag, { value: "Module" }));
1165
+ export {
1166
+ as as A,
1167
+ Ft as T,
1168
+ Gt as U,
1169
+ cs as a,
1170
+ rs as v
1171
+ };