@materialui-reactjs/admin 1.0.6 → 2.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.
- package/CHANGELOG.md +292 -0
- package/LICENSE +21 -0
- package/README.md +584 -453
- package/dist/Common-1GAoFU4L.js +261 -0
- package/dist/Common-BBYXssMH.cjs +11 -0
- package/dist/Env-DoS-iQjs.cjs +1 -0
- package/dist/Env-SHztUA3s.js +16 -0
- package/dist/HeaderUpdate-DIwc8EAA.cjs +1 -0
- package/dist/{chunks/HeaderUpdate-DuS-gHNR.js → HeaderUpdate-UXncZcAD.js} +8 -4
- package/dist/SortableItem-C3KzO8Xh.cjs +1 -0
- package/dist/SpinnerLoader-BujLjvC3.cjs +1 -0
- package/dist/{chunks/SpinnerLoader-h8RDIarB.js → SpinnerLoader-CyhOQC6d.js} +2 -2
- package/dist/UDragFile-BqGt1-gK.js +96 -0
- package/dist/UDragFile-oJ05zNLR.cjs +1 -0
- package/dist/Validator-BcydBvOg.cjs +1 -0
- package/dist/{chunks/Validator-CXYkI7vJ.js → Validator-aKlMgoxl.js} +50 -42
- package/dist/assets/css/form.css +1 -1
- package/dist/assets/css/index.css +1 -1
- package/dist/common-CHDJQ2Ca.cjs +1 -0
- package/dist/common-DVWX6AUQ.js +19 -0
- package/dist/components/echarts/index.cjs +1 -0
- package/dist/components/echarts/index.js +1 -1
- package/dist/components/form/AdvancedMultiSelect.d.ts +6 -3
- package/dist/components/form/AsxhUImages.d.ts +1 -1
- package/dist/components/form/BoxAddRow.d.ts +11 -1
- package/dist/components/form/CheckTreeBox.d.ts +12 -3
- package/dist/components/form/DateInput.d.ts +2 -1
- package/dist/components/form/EfFile.d.ts +2 -1
- package/dist/components/form/EfImage.d.ts +1 -1
- package/dist/components/form/EfImages.d.ts +1 -1
- package/dist/components/form/PImage.d.ts +1 -1
- package/dist/components/form/SelectAddRowBox.d.ts +9 -5
- package/dist/components/form/UDragFile.d.ts +1 -1
- package/dist/components/form/UFile.d.ts +1 -1
- package/dist/components/form/UFiles.d.ts +1 -1
- package/dist/components/form/UImages.d.ts +1 -1
- package/dist/components/form/index.cjs +1 -0
- package/dist/components/form/index.js +2 -2
- package/dist/components/loader/SpinnerLoader.d.ts +5 -1
- package/dist/components/loader/index.cjs +1 -0
- package/dist/components/loader/index.js +1 -2
- package/dist/components/meta/CardTable.d.ts +7 -3
- package/dist/components/meta/CardTable.types.d.ts +51 -0
- package/dist/components/meta/CusTooltip.d.ts +1 -1
- package/dist/components/meta/Head.d.ts +1 -1
- package/dist/components/meta/HeaderUpdate.d.ts +5 -1
- package/dist/components/meta/ModalForm.d.ts +41 -11
- package/dist/components/meta/Navtabs.d.ts +1 -1
- package/dist/components/meta/SearchBox.d.ts +6 -4
- package/dist/components/meta/SortableItem.d.ts +1 -1
- package/dist/components/meta/index.cjs +1 -0
- package/dist/components/meta/index.d.ts +1 -0
- package/dist/components/meta/index.js +3 -3
- package/dist/components/sidebar/Sidebar.types.d.ts +9 -7
- package/dist/components/sidebar/index.cjs +1 -0
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/single/Detail.d.ts +8 -3
- package/dist/components/single/Fields.d.ts +10 -4
- package/dist/components/single/Import.d.ts +8 -3
- package/dist/components/single/List.d.ts +18 -3
- package/dist/components/single/Update.d.ts +8 -3
- package/dist/components/single/UpdateDetail.d.ts +3 -2
- package/dist/components/single/UpdateTableDetail.d.ts +3 -3
- package/dist/components/single/index.cjs +1 -0
- package/dist/components/single/index.js +1 -1
- package/dist/components/top-navbar/index.cjs +1 -0
- package/dist/components/top-navbar/index.js +78 -2
- package/dist/echarts-Dla22xas.cjs +1 -0
- package/dist/{chunks/form-CPkpL5eA.js → form-BNAbGCXe.js} +6860 -6794
- package/dist/form-DUL_O4IY.cjs +65 -0
- package/dist/hook/common.d.ts +65 -0
- package/dist/hook/detail.cjs +1 -0
- package/dist/hook/detail.d.ts +9 -15
- package/dist/hook/detail.js +1 -11
- package/dist/hook/fields.cjs +1 -0
- package/dist/hook/fields.d.ts +6 -14
- package/dist/hook/fields.js +1 -11
- package/dist/hook/import.d.ts +6 -11
- package/dist/hook/index.cjs +1 -0
- package/dist/hook/index.d.ts +28 -20
- package/dist/hook/index.js +13 -10
- package/dist/hook/update.cjs +1 -0
- package/dist/hook/update.d.ts +9 -17
- package/dist/hook/update.js +2 -2
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +14 -11
- package/dist/meta-CXHXSPbq.cjs +1 -0
- package/dist/{chunks/meta-4qPWijBT.js → meta-Dhll5zt9.js} +45 -39
- package/dist/rolldown-runtime-BocRIvOZ.cjs +1 -0
- package/dist/{chunks/sidebar-Dj4Xr9du.js → sidebar-CVORMKBY.js} +9 -12
- package/dist/sidebar-G5Ody16K.cjs +1 -0
- package/dist/{chunks/single-CRF61o_U.js → single-CqD5cgNi.js} +353 -259
- package/dist/single-CsUaxEjQ.cjs +1 -0
- package/dist/style.cjs +0 -0
- package/dist/style.d.ts +0 -0
- package/dist/style.js +0 -0
- package/dist/types/Menu.d.ts +25 -0
- package/dist/utils/Common.d.ts +124 -16
- package/dist/utils/CusRoute.d.ts +21 -1
- package/dist/utils/Env.d.ts +23 -2
- package/dist/utils/Group.d.ts +12 -1
- package/dist/utils/Validator.d.ts +34 -12
- package/dist/utils/index.cjs +11 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +181 -149
- package/package.json +190 -163
- package/dist/chunks/Common-BURf0rBN.js +0 -222
- package/dist/chunks/Env-DRXhvUcb.js +0 -16
- package/dist/chunks/UDragFile-BnUR3riq.js +0 -92
- package/dist/chunks/loader-BUiOnhOH.js +0 -1
- package/dist/chunks/top-navbar-Bob0gMUh.js +0 -78
- package/scripts/postinstall.cjs +0 -80
- /package/dist/{chunks/SortableItem-B4-Zsso3.js → SortableItem-B4-Zsso3.js} +0 -0
- /package/dist/{chunks/echarts-CRmndsxC.js → echarts-CRmndsxC.js} +0 -0
- /package/dist/{components/meta/Pdfviewer.d.ts → hook/import.cjs} +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { n as e, t } from "./Env-SHztUA3s.js";
|
|
2
|
+
import n from "sweetalert2";
|
|
3
|
+
import r from "sweetalert2-react-content";
|
|
4
|
+
import { Modal as i } from "bootstrap";
|
|
5
|
+
import "date-fns";
|
|
6
|
+
import "decimal.js";
|
|
7
|
+
//#region src/utils/Common.ts
|
|
8
|
+
e();
|
|
9
|
+
var a = (e) => t()[e] ?? "", o = (e, t = !0) => {
|
|
10
|
+
let n = typeof e == "string" ? document.querySelector(e) : e;
|
|
11
|
+
if (n) {
|
|
12
|
+
if (t) n.querySelector(".boxSpinner") || n.insertAdjacentHTML("afterbegin", "<div class=\"boxSpinner rounded\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n <div class=\"rect6\"></div>\n <div class=\"rect7\"></div>\n </div>\n </div>");
|
|
13
|
+
else {
|
|
14
|
+
let e = n.querySelector(".boxSpinner");
|
|
15
|
+
e && e.remove();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}, s = (e) => {
|
|
19
|
+
let t = new FormData();
|
|
20
|
+
return Object.entries(e).forEach(([e, n]) => {
|
|
21
|
+
if (n != null) {
|
|
22
|
+
if (n instanceof FileList) {
|
|
23
|
+
Array.from(n).forEach((n) => t.append(e, n));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (n instanceof File) {
|
|
27
|
+
t.append(e, n);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(n) && n.every((e) => e instanceof File)) {
|
|
31
|
+
n.forEach((n) => t.append(e, n));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(n) && n.every((e) => [
|
|
35
|
+
"string",
|
|
36
|
+
"number",
|
|
37
|
+
"boolean"
|
|
38
|
+
].includes(typeof e))) {
|
|
39
|
+
n.forEach((n) => t.append(e, n.toString()));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (typeof n == "object") {
|
|
43
|
+
t.append(e, JSON.stringify(n));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
t.append(e, n);
|
|
47
|
+
}
|
|
48
|
+
}), t;
|
|
49
|
+
}, c = class extends Error {
|
|
50
|
+
errorCode;
|
|
51
|
+
constructor(e, t) {
|
|
52
|
+
super(e), this.name = "ApiError", this.errorCode = t;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
async function l(e, t = {}, n = "POST", r = "application/json", i = !0) {
|
|
56
|
+
let o = { "Secret-Key": a("SECRET_KEY") };
|
|
57
|
+
r !== "multipart/form-data" && (o["Content-Type"] = r);
|
|
58
|
+
let l = {
|
|
59
|
+
method: n,
|
|
60
|
+
headers: o,
|
|
61
|
+
credentials: "include"
|
|
62
|
+
};
|
|
63
|
+
if (n == "POST" && (l.body = r === "multipart/form-data" ? s(t) : JSON.stringify(t)), n === "GET" && Object.keys(t).length > 0) {
|
|
64
|
+
let n = new URLSearchParams();
|
|
65
|
+
Object.entries(t).forEach(([e, t]) => {
|
|
66
|
+
Array.isArray(t) ? t.forEach((t) => n.append(e, String(t))) : n.append(e, String(t));
|
|
67
|
+
});
|
|
68
|
+
let r = n.toString();
|
|
69
|
+
e += (e.includes("?") ? "&" : "?") + r;
|
|
70
|
+
}
|
|
71
|
+
let u = await (await fetch(e, l)).text(), d = null;
|
|
72
|
+
if (u) try {
|
|
73
|
+
d = JSON.parse(u);
|
|
74
|
+
} catch {
|
|
75
|
+
d = u;
|
|
76
|
+
}
|
|
77
|
+
if (d && typeof d != "string" && d.status == 200) return d;
|
|
78
|
+
if (d && typeof d != "string" && d.msg && i) throw new c(d.msg, d.errorCode ?? "unknown");
|
|
79
|
+
if (i) throw Error("invalid_response");
|
|
80
|
+
return !1;
|
|
81
|
+
}
|
|
82
|
+
var u = (e = "Bạn có chắc muốn thực hiện thao tác này ?", t = "Đồng ý") => r(n).fire({
|
|
83
|
+
title: "Xác nhận",
|
|
84
|
+
text: e,
|
|
85
|
+
icon: "warning",
|
|
86
|
+
showCancelButton: !0,
|
|
87
|
+
confirmButtonColor: "#4CAF50",
|
|
88
|
+
cancelButtonColor: "#F44336",
|
|
89
|
+
confirmButtonText: t,
|
|
90
|
+
cancelButtonText: "Hủy",
|
|
91
|
+
position: "top"
|
|
92
|
+
}), d = (e, t = "top", i = !1) => {
|
|
93
|
+
r(n).fire({
|
|
94
|
+
toast: i,
|
|
95
|
+
icon: "success",
|
|
96
|
+
position: t,
|
|
97
|
+
title: e,
|
|
98
|
+
showConfirmButton: !1,
|
|
99
|
+
timer: 1500
|
|
100
|
+
});
|
|
101
|
+
}, f = (e) => {
|
|
102
|
+
r(n).fire({
|
|
103
|
+
icon: "error",
|
|
104
|
+
position: "top",
|
|
105
|
+
title: e,
|
|
106
|
+
showConfirmButton: !1
|
|
107
|
+
});
|
|
108
|
+
}, p = (e) => {
|
|
109
|
+
if (!e) return null;
|
|
110
|
+
let t = new Date(e);
|
|
111
|
+
return isNaN(t.getTime()) ? null : {
|
|
112
|
+
dd: String(t.getDate()).padStart(2, "0"),
|
|
113
|
+
MM: String(t.getMonth() + 1).padStart(2, "0"),
|
|
114
|
+
yyyy: t.getFullYear(),
|
|
115
|
+
hh: String(t.getHours()).padStart(2, "0"),
|
|
116
|
+
mm: String(t.getMinutes()).padStart(2, "0"),
|
|
117
|
+
ss: String(t.getSeconds()).padStart(2, "0")
|
|
118
|
+
};
|
|
119
|
+
}, m = (e) => {
|
|
120
|
+
let t = p(e);
|
|
121
|
+
return t ? `${t.dd}/${t.MM}/${t.yyyy}` : e ? "Invalid Date" : "";
|
|
122
|
+
}, h = (e) => {
|
|
123
|
+
let t = new URLSearchParams();
|
|
124
|
+
return Object.entries(e).forEach(([e, n]) => {
|
|
125
|
+
Array.isArray(n) ? n.forEach((n) => {
|
|
126
|
+
n != null && t.append(e, String(n));
|
|
127
|
+
}) : n != null && t.set(e, String(n));
|
|
128
|
+
}), t.toString();
|
|
129
|
+
}, g = (e = typeof window < "u" ? window.location.pathname : "", t = /\/(?:edit|detail|update)\/(\d+)(?=\/|$)/i) => {
|
|
130
|
+
let n = new RegExp(t.source, t.flags.includes("g") ? t.flags : t.flags + "g"), r = null, i;
|
|
131
|
+
for (; (i = n.exec(e)) !== null;) r = i;
|
|
132
|
+
if (!r) return null;
|
|
133
|
+
let a = Number(r[1]);
|
|
134
|
+
return Number.isFinite(a) ? a : null;
|
|
135
|
+
}, _ = (e, t = "/styles/default.jpg") => e ? a("STATIC_URL") + ("/" + e).replaceAll("//", "/") : t, v = (e) => e ? a("STATIC_URL") + ("/" + e).replaceAll("//", "/") : "", y = (e, t = "/styles/default.jpg") => e ? a("API_URL") + ("/" + e).replaceAll("//", "/") : t, b = (e, t = "/styles/default.jpg") => e ? a("UPLOADS_URL") + "/" + e : t;
|
|
136
|
+
function x(e) {
|
|
137
|
+
let t = "";
|
|
138
|
+
for (let n = 0; n < e; n++) {
|
|
139
|
+
let e = Math.floor(Math.random() * 62);
|
|
140
|
+
t += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"[e];
|
|
141
|
+
}
|
|
142
|
+
return t;
|
|
143
|
+
}
|
|
144
|
+
var S = /\.(jpg|jpeg|png|jfif|doc|docx|xls|xlsx|pdf)$/i, C = (e, t) => {
|
|
145
|
+
if (!e) return t;
|
|
146
|
+
let n = e.split(",").map((e) => {
|
|
147
|
+
let t = e.trim();
|
|
148
|
+
return (t.includes("/") ? t.slice(t.indexOf("/") + 1) : t).replace(/^\./, "");
|
|
149
|
+
}).filter(Boolean);
|
|
150
|
+
if (n.length === 0) return t;
|
|
151
|
+
let r = n.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
152
|
+
return RegExp(`\\.(${r.join("|")})$`, "i");
|
|
153
|
+
}, w = (e, t = 20, n = S) => new Promise((r, i) => {
|
|
154
|
+
let a = Array.from(e ?? []);
|
|
155
|
+
if (a.length === 0) return i(/* @__PURE__ */ Error("Tập tin không tồn tại"));
|
|
156
|
+
for (let e of a) {
|
|
157
|
+
if (!n.test(e.name)) return f("Tập tin không hợp lệ"), i(/* @__PURE__ */ Error("Tập tin không hợp lệ"));
|
|
158
|
+
if (e.size > t * 1024 * 1024) return f(`Tập tin tải lên không quá ${t}M`), i(/* @__PURE__ */ Error(`Tập tin tải lên không quá ${t}M`));
|
|
159
|
+
}
|
|
160
|
+
r();
|
|
161
|
+
}), T = {
|
|
162
|
+
"&": "&",
|
|
163
|
+
"<": "<",
|
|
164
|
+
">": ">",
|
|
165
|
+
"\"": """,
|
|
166
|
+
"'": "'"
|
|
167
|
+
}, E = (e) => String(e ?? "").replace(/[&<>"']/g, (e) => T[e]), D = /* @__PURE__ */ new Set([
|
|
168
|
+
"danger",
|
|
169
|
+
"success",
|
|
170
|
+
"warning",
|
|
171
|
+
"info",
|
|
172
|
+
"primary",
|
|
173
|
+
"secondary",
|
|
174
|
+
"light",
|
|
175
|
+
"dark"
|
|
176
|
+
]), O = (e = "", t = "danger", n = {}) => {
|
|
177
|
+
let r = D.has(t) ? t : "danger", i = (e) => n.raw ? e : E(e);
|
|
178
|
+
return typeof e == "string" ? e.trim() === "" ? "" : `<div class="alert alert-${r}">${i(e)}</div>` : !e || typeof e != "object" ? "" : Object.values(e).filter((e) => e != null && String(e).trim() !== "").map((e) => `<div class="alert alert-${r}">${i(String(e))}</div>`).join("");
|
|
179
|
+
}, k = (e, t = {}) => new Promise((n, r) => {
|
|
180
|
+
try {
|
|
181
|
+
let r = window.jQuery, i = r(e);
|
|
182
|
+
if (!i.length) throw Error("invalid_elfinder");
|
|
183
|
+
let o = {
|
|
184
|
+
url: a("API_URL") + "/elfinder/connector",
|
|
185
|
+
height: 500,
|
|
186
|
+
resizable: !0,
|
|
187
|
+
baseUrl: "/assets/plugins/elFinder/",
|
|
188
|
+
defaultView: "list",
|
|
189
|
+
useBrowserHistory: !1,
|
|
190
|
+
getFileCallback: (e) => {
|
|
191
|
+
n(e);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
i.elfinder("destroy").elfinder({
|
|
195
|
+
...o,
|
|
196
|
+
...t
|
|
197
|
+
});
|
|
198
|
+
} catch (e) {
|
|
199
|
+
r(e);
|
|
200
|
+
}
|
|
201
|
+
}), A = (e) => new Promise((t, n) => {
|
|
202
|
+
try {
|
|
203
|
+
let n = typeof e == "string" ? document.querySelector(e) : e;
|
|
204
|
+
if (!n) throw Error("invalid_modalEl_btnEl");
|
|
205
|
+
n.querySelectorAll(".btn-md-close")?.forEach((e) => {
|
|
206
|
+
e?.addEventListener("click", () => {
|
|
207
|
+
r.hide();
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
let r = i.getOrCreateInstance(n, {
|
|
211
|
+
backdrop: "static",
|
|
212
|
+
keyboard: !1
|
|
213
|
+
});
|
|
214
|
+
t({
|
|
215
|
+
md: r,
|
|
216
|
+
modalEl: n
|
|
217
|
+
});
|
|
218
|
+
} catch (e) {
|
|
219
|
+
console.log(e), n(e);
|
|
220
|
+
}
|
|
221
|
+
}), j = (e, t, n = !1, r = !1) => {
|
|
222
|
+
if (!e) throw Error("invalid_btnEl");
|
|
223
|
+
e.addEventListener("click", (i) => {
|
|
224
|
+
i.preventDefault(), A(t).then((t) => {
|
|
225
|
+
let { modalEl: i, md: a } = t;
|
|
226
|
+
k("#elfinderStatic").then((t) => {
|
|
227
|
+
n && n({
|
|
228
|
+
data: t,
|
|
229
|
+
btnEl: e,
|
|
230
|
+
md: a
|
|
231
|
+
});
|
|
232
|
+
}), i.addEventListener("hidden.bs.modal", () => {
|
|
233
|
+
r && r();
|
|
234
|
+
}), a.show();
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
}, M = (e, t, n = !1, r = !1) => {
|
|
238
|
+
if (!e) throw Error("invalid_btnEl");
|
|
239
|
+
e.addEventListener("click", (i) => {
|
|
240
|
+
i.preventDefault(), A(t).then((t) => {
|
|
241
|
+
let { modalEl: i, md: o } = t;
|
|
242
|
+
k("#elfinderStatic", { url: a("API_URL") + "/elfinder/connectorFiles" }).then((t) => {
|
|
243
|
+
n && n({
|
|
244
|
+
data: t,
|
|
245
|
+
btnEl: e,
|
|
246
|
+
md: o
|
|
247
|
+
});
|
|
248
|
+
}), i.addEventListener("hidden.bs.modal", () => {
|
|
249
|
+
r && r();
|
|
250
|
+
}), o.show();
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
}, N = (e = !1) => {
|
|
254
|
+
let t = [{
|
|
255
|
+
id: 1,
|
|
256
|
+
name: "Tiếng Việt"
|
|
257
|
+
}];
|
|
258
|
+
return e === !1 ? t : t.find((t) => t.id === e)?.name || "";
|
|
259
|
+
};
|
|
260
|
+
//#endregion
|
|
261
|
+
export { O as _, h as a, d as b, v as c, N as d, y as f, j as g, M as h, A as i, g as l, x as m, l as n, k as o, b as p, w as r, m as s, C as t, _ as u, u as v, o as x, f as y };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./Env-DoS-iQjs.cjs");let n=require("sweetalert2");n=e.t(n,1);let r=require("sweetalert2-react-content");r=e.t(r,1);let i=require("bootstrap");require("date-fns");let a=require("decimal.js");a=e.t(a,1),t.n();var o=e=>t.t()[e]??``,s=(e,t=!0)=>{let n=typeof e==`string`?document.querySelector(e):e;if(n){if(t)n.querySelector(`.boxSpinner`)||n.insertAdjacentHTML(`afterbegin`,`<div class="boxSpinner rounded">
|
|
2
|
+
<div class="spinner">
|
|
3
|
+
<div class="rect1"></div>
|
|
4
|
+
<div class="rect2"></div>
|
|
5
|
+
<div class="rect3"></div>
|
|
6
|
+
<div class="rect4"></div>
|
|
7
|
+
<div class="rect5"></div>
|
|
8
|
+
<div class="rect6"></div>
|
|
9
|
+
<div class="rect7"></div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>`);else{let e=n.querySelector(`.boxSpinner`);e&&e.remove()}}},c=e=>{let t=new FormData;return Object.entries(e).forEach(([e,n])=>{if(n!=null){if(n instanceof FileList){Array.from(n).forEach(n=>t.append(e,n));return}if(n instanceof File){t.append(e,n);return}if(Array.isArray(n)&&n.every(e=>e instanceof File)){n.forEach(n=>t.append(e,n));return}if(Array.isArray(n)&&n.every(e=>[`string`,`number`,`boolean`].includes(typeof e))){n.forEach(n=>t.append(e,n.toString()));return}if(typeof n==`object`){t.append(e,JSON.stringify(n));return}t.append(e,n)}}),t},l=class extends Error{errorCode;constructor(e,t){super(e),this.name=`ApiError`,this.errorCode=t}};async function u(e,t={},n=`POST`,r=`application/json`,i=!0){let a={"Secret-Key":o(`SECRET_KEY`)};r!==`multipart/form-data`&&(a[`Content-Type`]=r);let s={method:n,headers:a,credentials:`include`};if(n==`POST`&&(s.body=r===`multipart/form-data`?c(t):JSON.stringify(t)),n===`GET`&&Object.keys(t).length>0){let n=new URLSearchParams;Object.entries(t).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,String(t))):n.append(e,String(t))});let r=n.toString();e+=(e.includes(`?`)?`&`:`?`)+r}let u=await(await fetch(e,s)).text(),d=null;if(u)try{d=JSON.parse(u)}catch{d=u}if(d&&typeof d!=`string`&&d.status==200)return d;if(d&&typeof d!=`string`&&d.msg&&i)throw new l(d.msg,d.errorCode??`unknown`);if(i)throw Error(`invalid_response`);return!1}var d=(e=`Bạn có chắc muốn thực hiện thao tác này ?`,t=`Đồng ý`)=>(0,r.default)(n.default).fire({title:`Xác nhận`,text:e,icon:`warning`,showCancelButton:!0,confirmButtonColor:`#4CAF50`,cancelButtonColor:`#F44336`,confirmButtonText:t,cancelButtonText:`Hủy`,position:`top`}),f=(e,t=`top`,i=!1)=>{(0,r.default)(n.default).fire({toast:i,icon:`success`,position:t,title:e,showConfirmButton:!1,timer:1500})},p=e=>{(0,r.default)(n.default).fire({icon:`error`,position:`top`,title:e,showConfirmButton:!1})},m=e=>{if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:{dd:String(t.getDate()).padStart(2,`0`),MM:String(t.getMonth()+1).padStart(2,`0`),yyyy:t.getFullYear(),hh:String(t.getHours()).padStart(2,`0`),mm:String(t.getMinutes()).padStart(2,`0`),ss:String(t.getSeconds()).padStart(2,`0`)}},h=e=>{let t=m(e);return t?`${t.dd}/${t.MM}/${t.yyyy}`:e?`Invalid Date`:``},g=e=>{let t=new URLSearchParams;return Object.entries(e).forEach(([e,n])=>{Array.isArray(n)?n.forEach(n=>{n!=null&&t.append(e,String(n))}):n!=null&&t.set(e,String(n))}),t.toString()},_=(e=typeof window<`u`?window.location.pathname:``,t=/\/(?:edit|detail|update)\/(\d+)(?=\/|$)/i)=>{let n=new RegExp(t.source,t.flags.includes(`g`)?t.flags:t.flags+`g`),r=null,i;for(;(i=n.exec(e))!==null;)r=i;if(!r)return null;let a=Number(r[1]);return Number.isFinite(a)?a:null},v=(e,t=`/styles/default.jpg`)=>e?o(`STATIC_URL`)+(`/`+e).replaceAll(`//`,`/`):t,y=e=>e?o(`STATIC_URL`)+(`/`+e).replaceAll(`//`,`/`):``,b=(e,t=`/styles/default.jpg`)=>e?o(`API_URL`)+(`/`+e).replaceAll(`//`,`/`):t,x=(e,t=`/styles/default.jpg`)=>e?o(`UPLOADS_URL`)+`/`+e:t;function S(e){let t=``;for(let n=0;n<e;n++){let e=Math.floor(Math.random()*62);t+=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`[e]}return t}var C=/\.(jpg|jpeg|png|jfif|doc|docx|xls|xlsx|pdf)$/i,w=(e,t)=>{if(!e)return t;let n=e.split(`,`).map(e=>{let t=e.trim();return(t.includes(`/`)?t.slice(t.indexOf(`/`)+1):t).replace(/^\./,``)}).filter(Boolean);if(n.length===0)return t;let r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`));return RegExp(`\\.(${r.join(`|`)})$`,`i`)},T=(e,t=20,n=C)=>new Promise((r,i)=>{let a=Array.from(e??[]);if(a.length===0)return i(Error(`Tập tin không tồn tại`));for(let e of a){if(!n.test(e.name))return p(`Tập tin không hợp lệ`),i(Error(`Tập tin không hợp lệ`));if(e.size>t*1024*1024)return p(`Tập tin tải lên không quá ${t}M`),i(Error(`Tập tin tải lên không quá ${t}M`))}r()}),E={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},D=e=>String(e??``).replace(/[&<>"']/g,e=>E[e]),O=new Set([`danger`,`success`,`warning`,`info`,`primary`,`secondary`,`light`,`dark`]),k=(e=``,t=`danger`,n={})=>{let r=O.has(t)?t:`danger`,i=e=>n.raw?e:D(e);return typeof e==`string`?e.trim()===``?``:`<div class="alert alert-${r}">${i(e)}</div>`:!e||typeof e!=`object`?``:Object.values(e).filter(e=>e!=null&&String(e).trim()!==``).map(e=>`<div class="alert alert-${r}">${i(String(e))}</div>`).join(``)},A=(e,t={})=>new Promise((n,r)=>{try{let r=window.jQuery,i=r(e);if(!i.length)throw Error(`invalid_elfinder`);let a={url:o(`API_URL`)+`/elfinder/connector`,height:500,resizable:!0,baseUrl:`/assets/plugins/elFinder/`,defaultView:`list`,useBrowserHistory:!1,getFileCallback:e=>{n(e)}};i.elfinder(`destroy`).elfinder({...a,...t})}catch(e){r(e)}}),j=e=>new Promise((t,n)=>{try{let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`invalid_modalEl_btnEl`);n.querySelectorAll(`.btn-md-close`)?.forEach(e=>{e?.addEventListener(`click`,()=>{r.hide()})});let r=i.Modal.getOrCreateInstance(n,{backdrop:`static`,keyboard:!1});t({md:r,modalEl:n})}catch(e){console.log(e),n(e)}}),M=(e,t,n=!1,r=!1)=>{if(!e)throw Error(`invalid_btnEl`);e.addEventListener(`click`,i=>{i.preventDefault(),j(t).then(t=>{let{modalEl:i,md:a}=t;A(`#elfinderStatic`).then(t=>{n&&n({data:t,btnEl:e,md:a})}),i.addEventListener(`hidden.bs.modal`,()=>{r&&r()}),a.show()})})},N=(e,t,n=!1,r=!1)=>{if(!e)throw Error(`invalid_btnEl`);e.addEventListener(`click`,i=>{i.preventDefault(),j(t).then(t=>{let{modalEl:i,md:a}=t;A(`#elfinderStatic`,{url:o(`API_URL`)+`/elfinder/connectorFiles`}).then(t=>{n&&n({data:t,btnEl:e,md:a})}),i.addEventListener(`hidden.bs.modal`,()=>{r&&r()}),a.show()})})},P=(e=!1)=>{let t=[{id:1,name:`Tiếng Việt`}];return e===!1?t:t.find(t=>t.id===e)?.name||``};Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return p}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={},t=null,n=!1;function r(){return n?Promise.resolve(e):t||(t=fetch(`/env.json`,{cache:`no-cache`}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status} ${e.statusText}`);return e.json()}).then(t=>(e=t??{},e)).catch(t=>(console.warn(`[@materialui-reactjs/admin] Không tải được /env.json — dùng cấu hình rỗng.`,t),e={},e)).then(e=>(n=!0,e)),t)}function i(){return e}function a(){return n=!1,t=null,r()}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/utils/Env.ts
|
|
2
|
+
var e = {}, t = null, n = !1;
|
|
3
|
+
function r() {
|
|
4
|
+
return n ? Promise.resolve(e) : t || (t = fetch("/env.json", { cache: "no-cache" }).then((e) => {
|
|
5
|
+
if (!e.ok) throw Error(`HTTP ${e.status} ${e.statusText}`);
|
|
6
|
+
return e.json();
|
|
7
|
+
}).then((t) => (e = t ?? {}, e)).catch((t) => (console.warn("[@materialui-reactjs/admin] Không tải được /env.json — dùng cấu hình rỗng.", t), e = {}, e)).then((e) => (n = !0, e)), t);
|
|
8
|
+
}
|
|
9
|
+
function i() {
|
|
10
|
+
return e;
|
|
11
|
+
}
|
|
12
|
+
function a() {
|
|
13
|
+
return n = !1, t = null, r();
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { r as n, a as r, i as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./Common-BBYXssMH.cjs");let t=require("react/jsx-runtime"),n=require("react-router-dom"),r=require("@mui/material"),i=require("react-helmet-async");function a({title:e,children:n,placement:i=`bottom`,y:a=-10}){return(0,t.jsx)(r.Tooltip,{title:e,placement:i,slotProps:{popper:{modifiers:[{name:`offset`,options:{offset:[0,a]}}]}},children:n})}var o=({data:e,onChange:r,onClickPage:i})=>{let a=Math.ceil(e.recordTotal/e.length),o=(e.page-1)*e.length,s=e.page-1,c=e.page+1,l=s>=1,u=a>e.page;return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center`,children:[(0,t.jsxs)(`span`,{children:[`Đang xem từ `,o+1,` đến `,o+e.items.length,` trong tổng số`,` `,e.recordTotal]}),(0,t.jsx)(`nav`,{children:(0,t.jsxs)(`ul`,{className:`pagination`,children:[e.page>2&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`first page-link`,to:`#`,"data-page":1,title:`Trang đầu tiên`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-fast-backward`})})}),l&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`prev page-link`,to:`#`,"data-page":s,title:`Trang trước`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-angle-left`})})}),a>1&&(()=>{let t=Math.max(1,e.page-2),n=Math.min(a,e.page+2),r=[];for(let e=t;e<=n;e++)r.push(e);return r})().map(r=>(0,t.jsx)(`li`,{className:`page-item ${e.page===r?`active`:``}`,children:(0,t.jsx)(n.NavLink,{className:`page-link`,to:`#`,"data-page":r,onClick:e.page===r?void 0:i,children:r})},r)),u&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`next page-link`,to:`#`,"data-page":c,title:`Trang tiếp theo`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-angle-right`})})}),e.page<a-1&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`first page-link`,to:`#`,"data-page":a,title:`Trang cuối cùng`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-fast-forward`})})})]})}),(0,t.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,t.jsx)(`span`,{className:`me-2`,children:`Xem`}),(0,t.jsx)(`div`,{className:`form-group pagination-length`,children:(0,t.jsxs)(`select`,{className:`pageLen`,name:`pageLen`,defaultValue:e.length,onChange:r,children:[(0,t.jsx)(`option`,{value:`10`,children:`10`}),(0,t.jsx)(`option`,{value:`25`,children:`25`}),(0,t.jsx)(`option`,{value:`50`,children:` 50`}),(0,t.jsx)(`option`,{value:`100`,children:`100`}),(0,t.jsx)(`option`,{value:`500`,children:`500`})]})})]})]})})},s=async(t,n)=>{try{let r=new URLSearchParams;for(let[e,n]of Object.entries(t))n!=null&&r.append(e,String(n));let i=`${n}?${r.toString()}`;return(await e.n(i,{},`GET`)).data}catch{return{items:[],page:1,length:10,pageTotal:0,recordTotal:0}}},c=async(t,n,r,i)=>{let a=t.currentTarget,o=Number(a.getAttribute(`data-page`)??1),s={...n,page:o};return i(`${r}?${e.a(s)}`,{replace:!0}),s},l=async(t,n,r)=>{let i={...t,page:1};return r(`${n}?${e.a(i)}`,{replace:!0}),i},u=async(e,t)=>{e.preventDefault();let{name:n,value:r}=e.target,i={...t};return n===`pageLen`?(i.pageLen=Number(r),i.page=1):i[n]=r,i},d=({title:e=``,cUri:r=``,fluid:a=!1,cUriTitle:o=``})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Helmet,{children:(0,t.jsx)(`title`,{children:e||`Truy cập không được phép`})}),(0,t.jsxs)(`div`,{className:`${a?`container-fluid`:`container`}`,children:[(0,t.jsx)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:o})})]})})}),(0,t.jsx)(`div`,{style:{minHeight:`50vh`},className:`d-flex align-items-center`,children:(0,t.jsxs)(`div`,{className:`m-auto text-center`,children:[(0,t.jsx)(`h1`,{className:`display-1 text-bolder text-white`,children:`403`}),(0,t.jsx)(`h2`,{className:`text-white`,children:`Truy cập không được phép`}),(0,t.jsx)(`p`,{className:`lead text-white`,children:`Xin lỗi, bạn không có quyền truy cập vào trang này.`}),(0,t.jsx)(n.Link,{to:`/`,className:`btn btn-outline-white mt-4`,children:`trang chủ`})]})})]})]}),f=({title:e=``,cUri:r=``,fluid:a=!1,cUriTitle:o=``})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Helmet,{children:(0,t.jsx)(`title`,{children:e||`Không tìm thấy dữ liệu`})}),(0,t.jsxs)(`div`,{className:`${a?`container-fluid`:`container`}`,children:[(0,t.jsx)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:o})})]})})}),(0,t.jsx)(`div`,{style:{minHeight:`50vh`},className:`d-flex align-items-center`,children:(0,t.jsxs)(`div`,{className:`m-auto text-center`,children:[(0,t.jsx)(`h1`,{className:`display-1 text-bolder text-white`,children:`404`}),(0,t.jsx)(`h2`,{className:`text-white`,children:`Không tìm thấy dữ liệu`}),(0,t.jsx)(`p`,{className:`lead text-white`,children:`Xin lỗi, dữ liệu của bạn không được tìm thấy`}),(0,t.jsx)(n.Link,{to:`/`,className:`btn btn-outline-white mt-4`,children:`trang chủ`})]})})]})]}),p=({adminUri:e,cUri:r,title:i,isSave:o=!1,titleAction:s=`Chi tiết`})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:i})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:s})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[o&&(0,t.jsx)(a,{title:`Lưu lại`,children:(0,t.jsx)(`button`,{type:`submit`,className:`btn btn-sm btn-icon btn-success me-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`save`})})}),(0,t.jsx)(a,{title:`Trở lại`,children:(0,t.jsx)(n.Link,{to:r,className:`btn btn-sm btn-icon btn-secondary`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]}),m=({adminUri:e,cUri:r,title:i,isCre:o=!1,isDel:s=!1,isCpy:c=!1,isImp:l=!1,isExp:u=!1,isField:d=!1,isReply:f=!1,replyUri:p=`#`,onDelete:m,onExport:h,onCopy:g})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,"navbar-scroll":`true`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e||`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:i})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[o&&(0,t.jsx)(a,{title:`Tạo mới`,children:(0,t.jsx)(n.Link,{to:r+`/create`,className:`btn btn-success btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`add`})})}),u&&(0,t.jsx)(a,{title:`Export Excel`,children:(0,t.jsx)(`button`,{type:`button`,onClick:h,className:`btn btn-warning btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`fal fa-download`})})}),l&&(0,t.jsx)(a,{title:`Import Excel`,children:(0,t.jsx)(n.Link,{to:r+`/import`,className:`btn btn-info btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`fal fa-file-import`})})}),c&&(0,t.jsx)(a,{title:`Sao chép`,children:(0,t.jsx)(`button`,{onClick:g,type:`button`,className:`btn btn-purple btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`copy`})})}),s&&(0,t.jsx)(a,{title:`Xóa`,children:(0,t.jsx)(`button`,{onClick:m,type:`button`,className:`btn btn-danger btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`delete`})})}),d&&(0,t.jsx)(a,{title:`Tùy chỉnh trường dữ liệu`,children:(0,t.jsx)(n.Link,{to:r+`/fields`,className:`btn btn-purple btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`manage_accounts`})})}),f&&(0,t.jsx)(a,{title:`Trở về`,children:(0,t.jsx)(n.Link,{to:p,className:`btn btn-secondary btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]}),h=({adminUri:e,cUri:r,title:i,itemId:o,isSave:s=!0,titleAction:c})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e||`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:i})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:c??(o?`Chỉnh sửa`:`Thêm mới`)})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[s&&(0,t.jsx)(a,{title:`Lưu lại`,children:(0,t.jsx)(`button`,{type:`submit`,className:`btn btn-sm btn-icon btn-success me-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`save`})})}),(0,t.jsx)(a,{title:`Trở lại`,children:(0,t.jsx)(n.Link,{to:r,className:`btn btn-sm btn-icon btn-secondary`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]});Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return o}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as e, n as t } from "./Common-1GAoFU4L.js";
|
|
2
2
|
import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
3
|
import { Link as a, NavLink as o } from "react-router-dom";
|
|
4
4
|
import { Tooltip as s } from "@mui/material";
|
|
@@ -27,7 +27,8 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
27
27
|
c + 1,
|
|
28
28
|
" đến ",
|
|
29
29
|
c + e.items.length,
|
|
30
|
-
" trong tổng số
|
|
30
|
+
" trong tổng số",
|
|
31
|
+
" ",
|
|
31
32
|
e.recordTotal
|
|
32
33
|
] }),
|
|
33
34
|
/* @__PURE__ */ r("nav", { children: /* @__PURE__ */ i("ul", {
|
|
@@ -134,8 +135,10 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
134
135
|
}) });
|
|
135
136
|
}, d = async (e, n) => {
|
|
136
137
|
try {
|
|
137
|
-
let r =
|
|
138
|
-
|
|
138
|
+
let r = new URLSearchParams();
|
|
139
|
+
for (let [t, n] of Object.entries(e)) n != null && r.append(t, String(n));
|
|
140
|
+
let i = `${n}?${r.toString()}`;
|
|
141
|
+
return (await t(i, {}, "GET")).data;
|
|
139
142
|
} catch {
|
|
140
143
|
return {
|
|
141
144
|
items: [],
|
|
@@ -354,6 +357,7 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
354
357
|
d && /* @__PURE__ */ r(l, {
|
|
355
358
|
title: "Export Excel",
|
|
356
359
|
children: /* @__PURE__ */ r("button", {
|
|
360
|
+
type: "button",
|
|
357
361
|
onClick: g,
|
|
358
362
|
className: "btn btn-warning btn-sm btn-icon ms-1",
|
|
359
363
|
children: /* @__PURE__ */ r("i", { className: "fal fa-download" })
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("react/jsx-runtime"),t=require("@dnd-kit/utilities"),n=require("@dnd-kit/sortable");function r({id:r,className:i,iconSize:a=`24px`,iconStyle:o={cursor:`move`,right:`5px`,top:`5px`},children:s}){let{attributes:c,listeners:l,setNodeRef:u,transform:d,transition:f}=(0,n.useSortable)({id:r}),p={transform:t.CSS.Transform.toString(d),transition:f};return(0,e.jsxs)(`div`,{ref:u,style:p,className:i,children:[(0,e.jsx)(`div`,{...c,...l,style:o,className:`position-absolute`,children:(0,e.jsx)(`i`,{className:`fal fa-arrows-up-down-left-right`,style:{fontSize:a}})}),s]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("react/jsx-runtime");var t=({children:t,loading:n,style:r})=>(0,e.jsxs)(e.Fragment,{children:[n&&(0,e.jsx)(`div`,{className:`boxSpinner rounded`,"aria-hidden":`true`,style:r,children:(0,e.jsxs)(`div`,{className:`spinner`,children:[(0,e.jsx)(`div`,{className:`rect1`}),(0,e.jsx)(`div`,{className:`rect2`}),(0,e.jsx)(`div`,{className:`rect3`}),(0,e.jsx)(`div`,{className:`rect4`}),(0,e.jsx)(`div`,{className:`rect5`}),(0,e.jsx)(`div`,{className:`rect6`}),(0,e.jsx)(`div`,{className:`rect7`})]})}),!n&&t]});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
2
|
//#region src/components/loader/SpinnerLoader.tsx
|
|
3
|
-
var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { children: [i
|
|
3
|
+
var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { children: [i && /* @__PURE__ */ t("div", {
|
|
4
4
|
className: "boxSpinner rounded",
|
|
5
5
|
"aria-hidden": "true",
|
|
6
6
|
style: a,
|
|
@@ -16,6 +16,6 @@ var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { childr
|
|
|
16
16
|
/* @__PURE__ */ t("div", { className: "rect7" })
|
|
17
17
|
]
|
|
18
18
|
})
|
|
19
|
-
}), i
|
|
19
|
+
}), !i && r] });
|
|
20
20
|
//#endregion
|
|
21
21
|
export { r as t };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { r as e, t } from "./Common-1GAoFU4L.js";
|
|
2
|
+
import { useRef as n, useState as r } from "react";
|
|
3
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/form/UDragFile.tsx
|
|
5
|
+
var o = ({ label: o, name: s, cpnClass: c = "", required: l = !1, onChange: u, ext: d = ".xlsx, .xls, .docx, .doc, .pdf" }) => {
|
|
6
|
+
let f = n(null), [p, m] = r(null), [h, g] = r(!1), _ = async (n) => {
|
|
7
|
+
n.preventDefault();
|
|
8
|
+
let r = f.current?.querySelector(".default-file-input"), i = r?.files;
|
|
9
|
+
if (!i) return;
|
|
10
|
+
let a = /\.(pdf|docx|doc|xlsx|xls)$/i, o = r.getAttribute("accept"), s = t(o, a);
|
|
11
|
+
e(i, 10, s).then(() => {
|
|
12
|
+
m(i[0]), u(n);
|
|
13
|
+
}).catch((e) => {
|
|
14
|
+
console.error("[UDragFile] Tập tin không hợp lệ:", e.message);
|
|
15
|
+
});
|
|
16
|
+
}, v = async (e) => {
|
|
17
|
+
e.preventDefault(), e.stopPropagation(), e.type === "dragenter" || e.type === "dragover" ? g(!0) : e.type === "dragleave" && g(!1);
|
|
18
|
+
};
|
|
19
|
+
return /* @__PURE__ */ i("div", {
|
|
20
|
+
className: c,
|
|
21
|
+
children: /* @__PURE__ */ a("div", {
|
|
22
|
+
ref: f,
|
|
23
|
+
className: "upload-files-container mb-3",
|
|
24
|
+
children: [/* @__PURE__ */ a("label", {
|
|
25
|
+
className: "drag-file-area mb-2",
|
|
26
|
+
onDragEnter: v,
|
|
27
|
+
onDragOver: v,
|
|
28
|
+
onDragLeave: v,
|
|
29
|
+
onDrop: async (n) => {
|
|
30
|
+
n.preventDefault(), n.stopPropagation();
|
|
31
|
+
let r = n.dataTransfer.files;
|
|
32
|
+
if (!r) return;
|
|
33
|
+
let i = f.current?.querySelector(".default-file-input"), a = /\.(pdf|docx|doc|xlsx|xls)$/i, o = i?.getAttribute("accept"), c = t(o, a);
|
|
34
|
+
e(r, 10, c).then(() => {
|
|
35
|
+
m(r[0]), u({
|
|
36
|
+
target: {
|
|
37
|
+
type: "file",
|
|
38
|
+
name: s,
|
|
39
|
+
files: r,
|
|
40
|
+
value: ""
|
|
41
|
+
},
|
|
42
|
+
preventDefault: () => {}
|
|
43
|
+
}), g(!1);
|
|
44
|
+
}).catch((e) => {
|
|
45
|
+
console.error("[UDragFile] Tập tin không hợp lệ:", e.message), g(!1);
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
"aria-label": o,
|
|
49
|
+
htmlFor: "importFile1",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ i("span", {
|
|
52
|
+
className: "upload-icon",
|
|
53
|
+
children: /* @__PURE__ */ i("i", { className: "fas fa-upload" })
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ a("h3", {
|
|
56
|
+
className: "dynamic-message",
|
|
57
|
+
children: [h ? "Thả tập tin vào đây" : "Chọn tập tin (" + d + ")", " "]
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ i("span", {
|
|
60
|
+
className: "label",
|
|
61
|
+
children: h ? "" : "hoặc kéo thả"
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ i("span", {
|
|
64
|
+
className: "browse-files d-none",
|
|
65
|
+
children: /* @__PURE__ */ i("input", {
|
|
66
|
+
id: "importFile1",
|
|
67
|
+
onChange: _,
|
|
68
|
+
type: "file",
|
|
69
|
+
required: l,
|
|
70
|
+
name: s,
|
|
71
|
+
className: "default-file-input",
|
|
72
|
+
accept: d
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
}), /* @__PURE__ */ i("div", {
|
|
77
|
+
className: "file-block",
|
|
78
|
+
children: p && /* @__PURE__ */ i("div", {
|
|
79
|
+
className: "inputClone",
|
|
80
|
+
children: /* @__PURE__ */ a("div", {
|
|
81
|
+
className: "file-info",
|
|
82
|
+
children: [/* @__PURE__ */ i("span", {
|
|
83
|
+
className: "file-name me-2",
|
|
84
|
+
children: p.name
|
|
85
|
+
}), /* @__PURE__ */ a("div", { children: ["|", /* @__PURE__ */ i("span", {
|
|
86
|
+
className: "ms-2 file-size",
|
|
87
|
+
children: (p.size / 1024).toFixed(1) + " KB"
|
|
88
|
+
})] })]
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
})]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
//#endregion
|
|
96
|
+
export { o as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./Common-BBYXssMH.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=({label:r,name:i,cpnClass:a=``,required:o=!1,onChange:s,ext:c=`.xlsx, .xls, .docx, .doc, .pdf`})=>{let l=(0,t.useRef)(null),[u,d]=(0,t.useState)(null),[f,p]=(0,t.useState)(!1),m=async t=>{t.preventDefault();let n=l.current?.querySelector(`.default-file-input`),r=n?.files;if(!r)return;let i=/\.(pdf|docx|doc|xlsx|xls)$/i,a=n.getAttribute(`accept`),o=e.t(a,i);e.r(r,10,o).then(()=>{d(r[0]),s(t)}).catch(e=>{console.error(`[UDragFile] Tập tin không hợp lệ:`,e.message)})},h=async e=>{e.preventDefault(),e.stopPropagation(),e.type===`dragenter`||e.type===`dragover`?p(!0):e.type===`dragleave`&&p(!1)};return(0,n.jsx)(`div`,{className:a,children:(0,n.jsxs)(`div`,{ref:l,className:`upload-files-container mb-3`,children:[(0,n.jsxs)(`label`,{className:`drag-file-area mb-2`,onDragEnter:h,onDragOver:h,onDragLeave:h,onDrop:async t=>{t.preventDefault(),t.stopPropagation();let n=t.dataTransfer.files;if(!n)return;let r=l.current?.querySelector(`.default-file-input`),a=/\.(pdf|docx|doc|xlsx|xls)$/i,o=r?.getAttribute(`accept`),c=e.t(o,a);e.r(n,10,c).then(()=>{d(n[0]),s({target:{type:`file`,name:i,files:n,value:``},preventDefault:()=>{}}),p(!1)}).catch(e=>{console.error(`[UDragFile] Tập tin không hợp lệ:`,e.message),p(!1)})},"aria-label":r,htmlFor:`importFile1`,children:[(0,n.jsx)(`span`,{className:`upload-icon`,children:(0,n.jsx)(`i`,{className:`fas fa-upload`})}),(0,n.jsxs)(`h3`,{className:`dynamic-message`,children:[f?`Thả tập tin vào đây`:`Chọn tập tin (`+c+`)`,` `]}),(0,n.jsx)(`span`,{className:`label`,children:f?``:`hoặc kéo thả`}),(0,n.jsx)(`span`,{className:`browse-files d-none`,children:(0,n.jsx)(`input`,{id:`importFile1`,onChange:m,type:`file`,required:o,name:i,className:`default-file-input`,accept:c})})]}),(0,n.jsx)(`div`,{className:`file-block`,children:u&&(0,n.jsx)(`div`,{className:`inputClone`,children:(0,n.jsxs)(`div`,{className:`file-info`,children:[(0,n.jsx)(`span`,{className:`file-name me-2`,children:u.name}),(0,n.jsxs)(`div`,{children:[`|`,(0,n.jsx)(`span`,{className:`ms-2 file-size`,children:(u.size/1024).toFixed(1)+` KB`})]})]})})})]})})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=e=>{e.preventDefault();let{name:n,type:r,value:i}=t(e);if(r===`file`){let t=e.target.files;return{[n]:t?.[0]??null}}return{[n]:i}},t=e=>{let{name:t,type:n,value:r}=e.target,i=t.split(/[{}]+/).filter(Boolean),a=i.shift();if(!a||i.length===0)return{name:t,type:n,value:r};let o={},s=o;for(let e=0;e<i.length-1;e++)s[i[e]]={},s=s[i[e]];return s[i[i.length-1]]=r,{name:a,type:n,value:o}},n=(e,t)=>{let r={...e};return Object.keys(t).forEach(e=>{let i=t[e],a=r[e];i&&typeof i==`object`&&!Array.isArray(i)&&a&&typeof a==`object`&&!Array.isArray(a)?r[e]=n(a,i):r[e]=i}),r},r=null,i=()=>{if(r)return r;let e=typeof window<`u`?window.jQuery??window.$:void 0;if(typeof e!=`function`)throw Error(`[@materialui-reactjs/admin] Validator cần jQuery. Hãy thêm "jquery" vào dependencies và nạp nó TRƯỚC khi dùng Validator.`);return r=e,r},a=new Proxy((()=>{}),{apply:(e,t,n)=>i()(...n),get:(e,t)=>i()[t]}),o=class e{options;validators;$element;$btn;$inputs;static VERSION=`0.11.9`;static INPUT_SELECTOR=`:input:not(.nvali,[type="hidden"], [type="submit"], [type="reset"], button)`;static FOCUS_OFFSET=20;static DEFAULTS={delay:500,html:!1,disable:!0,focus:!0,custom:{},errors:{match:`Does not match`,minlength:`Too short`,maxlength:`Too long`},feedback:{success:`glyphicon-ok`,error:`glyphicon-remove`}};static VALIDATORS={native:function(e){let t=e[0];if(t.checkValidity)return!t.checkValidity()&&!t.validity.valid&&(t.validationMessage||`error!`)},match:function(t){let n=t.attr(`data-match`);return n&&t.val()!==a(n).val()&&e.DEFAULTS.errors.match},minlength:function(t){let n=Number(t.attr(`data-minlength`));return String(t.val()??``).length<n&&e.DEFAULTS.errors.minlength},maxlength:function(t){let n=Number(t.attr(`data-maxlength`));return String(t.val()??``).length>n&&e.DEFAULTS.errors.maxlength},filesize:function(e){let t=Number(e.data(`filesize`)),n=e[0];return n?.files?.length?n.files[0].size>t*1024*1024:!1},accept:function(e){let t=e.attr(`data-accept`);if(!t)return!1;let n=e[0];if(!n?.files?.length)return!1;let r=n.files[0];return!new RegExp(t).test(r.name)},pattern:function(e){let t=e.attr(`data-pattern`);return t?!new RegExp(t).test(String(e.val()??``)):!1}};constructor(t,n=!1){this.options=n||e.DEFAULTS,this.validators=a.extend({},e.VALIDATORS),this.$element=a(t),this.$btn=this.$element.find(`button[type="submit"], input[type="submit"], .submitAjax`),this.$inputs=this.$element.find(e.INPUT_SELECTOR).add(this.$element.find(`[data-validate="true"]`)).not(this.$element.find(`[data-validate="false"]`).each((e,t)=>{this.clearErrors(a(t))}))}static getValue(e){return e.is(`[type="checkbox"]`)?!!e.prop(`checked`):e.is(`[type="radio"]`)?a(`[name="${e.attr(`name`)}"]:checked`).length>0:e.is(`select[multiple]`)?(e.val()??[]).length:e.val()??``}update=()=>{let t=this;return this.$inputs=this.$element.find(e.INPUT_SELECTOR).add(this.$element.find(`[data-validate="true"]`)).not(this.$element.find(`[data-validate="false"]`).each((e,n)=>{t.clearErrors(a(n))})),this.toggleSubmit(),this};onInput=e=>{let t=this,n=a(e.target),r=e.type!==`focusout`;this.$inputs.is(n)&&this.validateInput(n,r)?.done(function(){t.toggleSubmit()})};validateInput=(e,t)=>{let n=e.data(`bs.validator.errors`);e.is(`[type="radio"]`)&&(e=this.$element.find(`input[name="`+e.attr(`name`)+`"]`));let r=a.Event(`validate.bs.validator`,{relatedTarget:e[0]});if(this.$element.trigger(r),r.isDefaultPrevented())return;let i=this;return this.runValidators(e).done(function(o){e.data(`bs.validator.errors`,o),o.length?t?i.defer(e,i.showErrors):i.showErrors(e):i.clearErrors(e),(!n||o.toString()!==n.toString())&&(r=o.length?a.Event(`invalid.bs.validator`,{relatedTarget:e[0],detail:o}):a.Event(`valid.bs.validator`,{relatedTarget:e[0],detail:n}),i.$element.trigger(r)),i.toggleSubmit(),i.$element.trigger(a.Event(`validated.bs.validator`,{relatedTarget:e[0]}))})};runValidators=t=>{let n=[],r=a.Deferred(),i=t.data(`bs.validator.deferred`);i&&i.reject(),t.data(`bs.validator.deferred`,r);function o(e){return t.attr(`data-`+e+`-error`)}function s(){let e=t[0];if(!(e instanceof HTMLInputElement)&&!(e instanceof HTMLSelectElement)&&!(e instanceof HTMLTextAreaElement))return null;let n=e.validity;return n.typeMismatch?t.attr(`data-type-error`)??null:n.patternMismatch?t.attr(`data-pattern-error`)??null:n.stepMismatch?t.attr(`data-step-error`)??null:n.rangeOverflow?t.attr(`data-max-error`)??null:n.rangeUnderflow?t.attr(`data-min-error`)??null:n.valueMissing?t.attr(`data-required-error`)??null:null}function c(){return t.attr(`data-error`)}function l(e){return o(e)||s()||c()}return a.each(this.validators,a.proxy(function(r,i){let a;(e.getValue(t)||t.attr(`required`))&&(t.attr(`data-`+r)!==void 0||r==`native`)&&(a=i.call(this,t))&&(a=l(r)||a,n.indexOf(a)===-1&&n.push(a))},this)),r.resolve(n),r.promise()};validate=()=>{let e=this;return a.when(this.$inputs.map((t,n)=>e.validateInput(a(n),!1))).then(function(){e.toggleSubmit(),e.focusError()}),this};focusError=()=>{if(!this.options.focus)return;let t=this.$element.find(`.has-error:first :input`);t.length!==0&&(a(`html, body`).animate({scrollTop:t.offset().top-e.FOCUS_OFFSET},250),t.focus())};showErrors=e=>{this.options.html;let t=e.data(`bs.validator.errors`),n=e.closest(`.form-group`),r=n.find(`.form-control-feedback`);t.length&&(t=a(`<ul/>`).addClass(`list-unstyled`).append(a.map(t,e=>{let t=a(`<li/>`);return this.options.html?t.html(e):t.text(e)})),n.addClass(`has-error has-danger`),n.find(`.invalid-tooltip, .invalid-feedback`).remove(),n.find(`.select2,.form-control`).removeClass(`is-valid`).addClass(`is-invalid`),n.append(`<div class="invalid-feedback"><ul class="list-unstyled">${t.html()}<ul/></div>`),n.removeClass(`has-success`),n.hasClass(`has-feedback`),r.removeClass(this.options.feedback?.success),r.addClass(this.options.feedback?.error))};clearErrors=e=>{let t=e.closest(`.form-group`),n=t.find(`.form-control-feedback`);t.removeClass(`has-error has-danger has-success`),t.find(`.invalid-tooltip, .invalid-feedback`).remove(),t.find(`.select2,.form-control`).addClass(`is-valid`).removeClass(`is-invalid`),t.addClass(`has-success`),t.hasClass(`has-feedback`),n.removeClass(this.options.feedback?.error),n.removeClass(this.options.feedback?.success),n.addClass(this.options.feedback?.success)};hasErrors=()=>!!this.$inputs.filter(function(){return!!(a(this).data(`bs.validator.errors`)||[]).length}).length;isIncomplete=()=>!!this.$inputs.filter(`[required]`).filter((t,n)=>{let r=e.getValue(a(n));return!(typeof r==`string`?r.trim():r)}).length;onSubmit=e=>{this.validate(),(this.isIncomplete()||this.hasErrors())&&e.preventDefault()};toggleSubmit=()=>{this.options.disable};defer=(e,t)=>{if(t=t.bind(this,e),!this.options.delay)return t();window.clearTimeout(e.data(`bs.validator.timeout`)),e.data(`bs.validator.timeout`,window.setTimeout(t,this.options.delay))};reset=()=>(this.$element.find(`.form-control-feedback`).removeClass(this.options?.feedback.error).removeClass(this.options.feedback.success),this.$inputs.removeData([`bs.validator.errors`,`bs.validator.deferred`]).each(()=>{let e=a(this),t=e.data(`bs.validator.timeout`);window.clearTimeout(t),e.removeData(`bs.validator.timeout`)}),this.$element.find(`.invalid-tooltip, .invalid-feedback`).each(()=>{let e=a(this),t=e.data(`bs.validator.originalContent`);e.removeData(`bs.validator.originalContent`).html(t)}),this.$btn.removeClass(`disabled`),this.$element.find(`.has-error, .has-danger, .has-success, .is-invalid, .is-valid`).removeClass(`has-error has-danger has-success is-invalid is-valid`),this);destroy=()=>(this.reset(),this.$element.removeAttr(`novalidate`).removeData(`bs.validator`).off(`.bs.validator`),this.$inputs.off(`.bs.validator`),this.options=null,this.validators=null,this.$element=null,this.$btn=null,this.$inputs=null,this);run=()=>{this.update(),this.$element.on(`input.bs.validator change.bs.validator focusout.bs.validator`,this.onInput.bind(this)),this.$element.on(`submit.bs.validator`,this.onSubmit.bind(this)),this.$element.on(`reset.bs.validator`,this.reset.bind(this)),this.$element.find(`[data-match]`).each(function(){let t=a(this),n=t.attr(`data-match`);n&&a(n).on(`input.bs.validator`,function(){e.getValue(t)&&t.trigger(`input.bs.validator`)})}),this.$inputs.filter((t,n)=>e.getValue(a(n))&&!a(this).closest(`.has-error`).length).trigger(`focusout`),this.$element.attr(`novalidate`,!0)}};Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});
|