@materialui-reactjs/admin 1.0.4 → 1.0.5
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/dist/chunks/{HeaderUpdate-lrSYWsKp.js → HeaderUpdate-CYN7fndV.js} +1 -1
- package/dist/chunks/{Validator-DjZz2bJs.js → Validator-CXYkI7vJ.js} +62 -59
- package/dist/chunks/{form-C8gzkYMW.js → form-DirVyglJ.js} +176 -130
- package/dist/chunks/{meta-k8MmuQjS.js → meta-BkJxF49g.js} +12 -12
- package/dist/chunks/{single-DyPwG6ZR.js → single-DfnwtW2f.js} +209 -209
- package/dist/components/form/DateTimeInput.d.ts +2 -1
- package/dist/components/form/UFile.d.ts +1 -1
- package/dist/components/form/UFiles.d.ts +1 -0
- package/dist/components/form/index.js +3 -3
- package/dist/components/meta/index.js +2 -2
- package/dist/components/single/Detail.d.ts +1 -0
- package/dist/components/single/Fields.d.ts +1 -0
- package/dist/components/single/Update.d.ts +2 -1
- package/dist/components/single/index.js +1 -1
- package/dist/hook/detail.d.ts +5 -1
- package/dist/hook/detail.js +7 -7
- package/dist/hook/fields.d.ts +5 -1
- package/dist/hook/fields.js +7 -7
- package/dist/hook/index.d.ts +1 -1
- package/dist/hook/index.js +1 -1
- package/dist/hook/update.d.ts +12 -3
- package/dist/hook/update.js +25 -22
- package/dist/index.js +11 -11
- package/dist/utils/index.js +2 -2
- package/package.json +1 -1
|
@@ -471,4 +471,4 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
471
471
|
})]
|
|
472
472
|
});
|
|
473
473
|
//#endregion
|
|
474
|
-
export { h as a,
|
|
474
|
+
export { h as a, p as c, l as d, g as i, m as l, v as n, d as o, _ as r, f as s, y as t, u };
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
//#region src/hook/update.ts
|
|
2
|
-
var e =
|
|
2
|
+
var e = (e) => {
|
|
3
3
|
e.preventDefault();
|
|
4
|
-
let { name:
|
|
5
|
-
if (
|
|
4
|
+
let { name: n, type: r, value: i } = t(e);
|
|
5
|
+
if (r === "file") {
|
|
6
6
|
let t = e.target.files;
|
|
7
|
-
n
|
|
8
|
-
} else n[r] = a;
|
|
9
|
-
return n;
|
|
10
|
-
}, t = (e, t) => {
|
|
11
|
-
let { name: n, type: r, value: i } = e.target, a = n.split(/[\{\}]+/).filter(Boolean), o = a.shift();
|
|
12
|
-
if (!o || a.length === 0) return {
|
|
13
|
-
name: n,
|
|
14
|
-
type: r,
|
|
15
|
-
value: i
|
|
16
|
-
};
|
|
17
|
-
let s = JSON.parse(JSON.stringify(t?.[o] || {})), c = s;
|
|
18
|
-
for (let e = 0; e < a.length - 1; e++) {
|
|
19
|
-
let t = a[e];
|
|
20
|
-
c[t] = { ...c[t] || {} }, c = c[t];
|
|
7
|
+
return { [n]: t ? t[0] : null };
|
|
21
8
|
}
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
return { [n]: i };
|
|
10
|
+
}, t = (e) => {
|
|
11
|
+
let { name: t, type: n, value: r } = e.target, i = t.split(/[\{\}]+/).filter(Boolean), a = i.shift();
|
|
12
|
+
if (!a || i.length === 0) return {
|
|
13
|
+
name: t,
|
|
14
|
+
type: n,
|
|
15
|
+
value: r
|
|
16
|
+
};
|
|
17
|
+
let o = {}, s = o;
|
|
18
|
+
for (let e = 0; e < i.length - 1; e++) s[i[e]] = {}, s = s[i[e]];
|
|
19
|
+
return s[i[i.length - 1]] = r, {
|
|
20
|
+
name: a,
|
|
21
|
+
type: n,
|
|
22
|
+
value: o
|
|
23
|
+
};
|
|
24
|
+
}, n = (e, t) => {
|
|
25
|
+
let r = { ...e };
|
|
26
|
+
return Object.keys(t).forEach((e) => {
|
|
27
|
+
let i = t[e], a = r[e];
|
|
28
|
+
i && typeof i == "object" && !Array.isArray(i) && a && typeof a == "object" && !Array.isArray(a) ? r[e] = n(a, i) : r[e] = i;
|
|
29
|
+
}), r;
|
|
30
|
+
}, r = window.jQuery, i = class e {
|
|
28
31
|
options;
|
|
29
32
|
validators;
|
|
30
33
|
$element;
|
|
@@ -55,8 +58,8 @@ var e = async (e, n) => {
|
|
|
55
58
|
if (t.checkValidity) return !t.checkValidity() && !t.validity.valid && (t.validationMessage || "error!");
|
|
56
59
|
},
|
|
57
60
|
match: function(t) {
|
|
58
|
-
let
|
|
59
|
-
return
|
|
61
|
+
let n = t.attr("data-match");
|
|
62
|
+
return n && t.val() !== r(n).val() && e.DEFAULTS.errors.match;
|
|
60
63
|
},
|
|
61
64
|
minlength: function(t) {
|
|
62
65
|
let n = Number(t.attr("data-minlength"));
|
|
@@ -83,44 +86,44 @@ var e = async (e, n) => {
|
|
|
83
86
|
return t ? !new RegExp(t).test(String(e.val() ?? "")) : !1;
|
|
84
87
|
}
|
|
85
88
|
};
|
|
86
|
-
constructor(t,
|
|
87
|
-
this.options =
|
|
88
|
-
this.clearErrors(
|
|
89
|
+
constructor(t, n = !1) {
|
|
90
|
+
this.options = n || e.DEFAULTS, this.validators = r.extend({}, e.VALIDATORS), this.$element = r(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) => {
|
|
91
|
+
this.clearErrors(r(t));
|
|
89
92
|
}));
|
|
90
93
|
}
|
|
91
94
|
static getValue(e) {
|
|
92
|
-
return e.is("[type=\"checkbox\"]") ? !!e.prop("checked") : e.is("[type=\"radio\"]") ?
|
|
95
|
+
return e.is("[type=\"checkbox\"]") ? !!e.prop("checked") : e.is("[type=\"radio\"]") ? r(`[name="${e.attr("name")}"]:checked`).length > 0 : e.is("select[multiple]") ? (e.val() ?? []).length : e.val() ?? "";
|
|
93
96
|
}
|
|
94
97
|
update = () => {
|
|
95
98
|
let t = this;
|
|
96
|
-
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,
|
|
97
|
-
t.clearErrors(n
|
|
99
|
+
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) => {
|
|
100
|
+
t.clearErrors(r(n));
|
|
98
101
|
})), this.toggleSubmit(), this;
|
|
99
102
|
};
|
|
100
103
|
onInput = (e) => {
|
|
101
|
-
let t = this,
|
|
102
|
-
this.$inputs.is(
|
|
104
|
+
let t = this, n = r(e.target), i = e.type !== "focusout";
|
|
105
|
+
this.$inputs.is(n) && this.validateInput(n, i)?.done(function() {
|
|
103
106
|
t.toggleSubmit();
|
|
104
107
|
});
|
|
105
108
|
};
|
|
106
109
|
validateInput = (e, t) => {
|
|
107
|
-
let
|
|
110
|
+
let n = e.data("bs.validator.errors");
|
|
108
111
|
e.is("[type=\"radio\"]") && (e = this.$element.find("input[name=\"" + e.attr("name") + "\"]"));
|
|
109
|
-
let i =
|
|
112
|
+
let i = r.Event("validate.bs.validator", { relatedTarget: e[0] });
|
|
110
113
|
if (this.$element.trigger(i), i.isDefaultPrevented()) return;
|
|
111
114
|
let a = this;
|
|
112
115
|
return this.runValidators(e).done(function(o) {
|
|
113
|
-
e.data("bs.validator.errors", o), o.length ? t ? a.defer(e, a.showErrors) : a.showErrors(e) : a.clearErrors(e), (!
|
|
116
|
+
e.data("bs.validator.errors", o), o.length ? t ? a.defer(e, a.showErrors) : a.showErrors(e) : a.clearErrors(e), (!n || o.toString() !== n.toString()) && (i = o.length ? r.Event("invalid.bs.validator", {
|
|
114
117
|
relatedTarget: e[0],
|
|
115
118
|
detail: o
|
|
116
|
-
}) :
|
|
119
|
+
}) : r.Event("valid.bs.validator", {
|
|
117
120
|
relatedTarget: e[0],
|
|
118
|
-
detail:
|
|
119
|
-
}), a.$element.trigger(i)), a.toggleSubmit(), a.$element.trigger(
|
|
121
|
+
detail: n
|
|
122
|
+
}), a.$element.trigger(i)), a.toggleSubmit(), a.$element.trigger(r.Event("validated.bs.validator", { relatedTarget: e[0] }));
|
|
120
123
|
});
|
|
121
124
|
};
|
|
122
125
|
runValidators = (t) => {
|
|
123
|
-
let
|
|
126
|
+
let n = [], i = r.Deferred();
|
|
124
127
|
t.data("bs.validator.deferred") && t.data("bs.validator.deferred").reject(), t.data("bs.validator.deferred", i);
|
|
125
128
|
function a(e) {
|
|
126
129
|
return t.attr("data-" + e + "-error");
|
|
@@ -137,39 +140,39 @@ var e = async (e, n) => {
|
|
|
137
140
|
function c(e) {
|
|
138
141
|
return a(e) || o() || s();
|
|
139
142
|
}
|
|
140
|
-
return
|
|
143
|
+
return r.each(this.validators, r.proxy(function(r, i) {
|
|
141
144
|
let a = null;
|
|
142
|
-
(e.getValue(t) || t.attr("required")) && (t.attr("data-" +
|
|
143
|
-
}, this)), i.resolve(
|
|
145
|
+
(e.getValue(t) || t.attr("required")) && (t.attr("data-" + r) !== void 0 || r == "native") && (a = i.call(this, t)) && (a = c(r) || a, !~n.indexOf(a) && n.push(a));
|
|
146
|
+
}, this)), i.resolve(n), i.promise();
|
|
144
147
|
};
|
|
145
148
|
validate = () => {
|
|
146
149
|
let e = this;
|
|
147
|
-
return
|
|
150
|
+
return r.when(this.$inputs.map((t, n) => e.validateInput(r(n), !1))).then(function() {
|
|
148
151
|
e.toggleSubmit(), e.focusError();
|
|
149
152
|
}), this;
|
|
150
153
|
};
|
|
151
154
|
focusError = () => {
|
|
152
155
|
if (!this.options.focus) return;
|
|
153
156
|
let t = this.$element.find(".has-error:first :input");
|
|
154
|
-
t.length !== 0 && (
|
|
157
|
+
t.length !== 0 && (r("html, body").animate({ scrollTop: t.offset().top - e.FOCUS_OFFSET }, 250), t.focus());
|
|
155
158
|
};
|
|
156
159
|
showErrors = (e) => {
|
|
157
160
|
this.options.html;
|
|
158
|
-
let t = e.data("bs.validator.errors"),
|
|
159
|
-
t.length && (t =
|
|
160
|
-
let t =
|
|
161
|
+
let t = e.data("bs.validator.errors"), n = e.closest(".form-group"), i = n.find(".form-control-feedback");
|
|
162
|
+
t.length && (t = r("<ul/>").addClass("list-unstyled").append(r.map(t, (e) => {
|
|
163
|
+
let t = r("<li/>");
|
|
161
164
|
return this.options.html ? t.html(e) : t.text(e);
|
|
162
|
-
})),
|
|
165
|
+
})), 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"), i.removeClass(this.options.feedback?.success), i.addClass(this.options.feedback?.error));
|
|
163
166
|
};
|
|
164
167
|
clearErrors = (e) => {
|
|
165
|
-
let t = e.closest(".form-group
|
|
168
|
+
let t = e.closest(".form-group"), n = t.find(".form-control-feedback");
|
|
166
169
|
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);
|
|
167
170
|
};
|
|
168
171
|
hasErrors = () => !!this.$inputs.filter(function() {
|
|
169
|
-
return !!(
|
|
172
|
+
return !!(r(this).data("bs.validator.errors") || []).length;
|
|
170
173
|
}).length;
|
|
171
|
-
isIncomplete = () => !!this.$inputs.filter("[required]").filter((t,
|
|
172
|
-
let i = e.getValue(n
|
|
174
|
+
isIncomplete = () => !!this.$inputs.filter("[required]").filter((t, n) => {
|
|
175
|
+
let i = e.getValue(r(n));
|
|
173
176
|
return !(typeof i == "string" ? i.trim() : i);
|
|
174
177
|
}).length;
|
|
175
178
|
onSubmit = (e) => {
|
|
@@ -183,21 +186,21 @@ var e = async (e, n) => {
|
|
|
183
186
|
window.clearTimeout(e.data("bs.validator.timeout")), e.data("bs.validator.timeout", window.setTimeout(t, this.options.delay));
|
|
184
187
|
};
|
|
185
188
|
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(() => {
|
|
186
|
-
let e =
|
|
189
|
+
let e = r(this), t = e.data("bs.validator.timeout");
|
|
187
190
|
window.clearTimeout(t), e.removeData("bs.validator.timeout");
|
|
188
191
|
}), this.$element.find(".invalid-tooltip, .invalid-feedback").each(() => {
|
|
189
|
-
let e =
|
|
192
|
+
let e = r(this), t = e.data("bs.validator.originalContent");
|
|
190
193
|
e.removeData("bs.validator.originalContent").html(t);
|
|
191
194
|
}), 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);
|
|
192
195
|
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);
|
|
193
196
|
run = () => {
|
|
194
197
|
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() {
|
|
195
|
-
let t =
|
|
196
|
-
|
|
198
|
+
let t = r(this), n = t.attr("data-match");
|
|
199
|
+
n && r(n).on("input.bs.validator", function() {
|
|
197
200
|
e.getValue(t) && t.trigger("input.bs.validator");
|
|
198
201
|
});
|
|
199
|
-
}), this.$inputs.filter((t,
|
|
202
|
+
}), this.$inputs.filter((t, n) => e.getValue(r(n)) && !r(this).closest(".has-error").length).trigger("focusout"), this.$element.attr("novalidate", !0);
|
|
200
203
|
};
|
|
201
204
|
};
|
|
202
205
|
//#endregion
|
|
203
|
-
export {
|
|
206
|
+
export { t as i, n, e as r, i as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as e } from "./Env-DRXhvUcb.js";
|
|
2
2
|
import { _ as t, a as n, d as r, f as i, h as a, l as o, m as s, n as c, p as l, r as u, s as d, u as f } from "./Common-C_ZhT4L6.js";
|
|
3
3
|
import { t as p } from "./SortableItem-B4-Zsso3.js";
|
|
4
|
-
import {
|
|
4
|
+
import { i as m, t as h } from "./Validator-CXYkI7vJ.js";
|
|
5
5
|
import g, { createContext as _, memo as v, useCallback as y, useContext as b, useEffect as x, useMemo as ee, useReducer as te, useRef as S, useState as C } from "react";
|
|
6
6
|
import w, { components as T } from "react-select";
|
|
7
7
|
import { DragDropContext as ne, Draggable as E, Droppable as re } from "@hello-pangea/dnd";
|
|
@@ -44674,9 +44674,9 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
44674
44674
|
return r?.(o), o;
|
|
44675
44675
|
});
|
|
44676
44676
|
}, d = (e, t) => {
|
|
44677
|
-
let n = m(e
|
|
44677
|
+
let n = m(e), i = a.map((e, r) => r === t ? {
|
|
44678
44678
|
...e,
|
|
44679
|
-
[n
|
|
44679
|
+
[n.name]: n.value
|
|
44680
44680
|
} : e);
|
|
44681
44681
|
o(i), r?.(i);
|
|
44682
44682
|
}, h = (t, n, r) => {
|
|
@@ -44970,31 +44970,41 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
44970
44970
|
})
|
|
44971
44971
|
})
|
|
44972
44972
|
})
|
|
44973
|
-
}), ZN = { textField: { className: "datepicker-custom" } }, QN = ({ label: e, name: t, value: n = "",
|
|
44974
|
-
let
|
|
44973
|
+
}), ZN = { textField: { className: "datepicker-custom" } }, QN = ({ label: e, name: t, value: n = "", debug: r = !1, defaultValue: i = "", cpnClass: a = "", required: o, onChange: s, ...c }) => {
|
|
44974
|
+
let l = S(!1);
|
|
44975
44975
|
x(() => {
|
|
44976
|
-
if (
|
|
44977
|
-
|
|
44978
|
-
|
|
44979
|
-
|
|
44976
|
+
if (r && console.log("DateTimeInput mounted", {
|
|
44977
|
+
value: n,
|
|
44978
|
+
defaultValue: i,
|
|
44979
|
+
onChange: !!s
|
|
44980
|
+
}), !l.current && !n && i && s) {
|
|
44981
|
+
let e = u(i);
|
|
44982
|
+
e && (l.current = !0, d(e));
|
|
44980
44983
|
}
|
|
44981
|
-
}, [
|
|
44982
|
-
|
|
44984
|
+
}, [
|
|
44985
|
+
n,
|
|
44986
|
+
i,
|
|
44987
|
+
s
|
|
44988
|
+
]);
|
|
44989
|
+
let u = (e) => {
|
|
44983
44990
|
if (!e) return null;
|
|
44984
44991
|
if (e instanceof Date) return isNaN(e.getTime()) ? null : e;
|
|
44985
44992
|
let t = new Date(e);
|
|
44986
44993
|
return isNaN(t.getTime()) ? null : t;
|
|
44987
|
-
},
|
|
44988
|
-
|
|
44994
|
+
}, d = (e) => {
|
|
44995
|
+
r && console.log("handleChange", {
|
|
44996
|
+
name: t,
|
|
44997
|
+
date: e
|
|
44998
|
+
}), !(!s || !e || isNaN(e.getTime())) && s({
|
|
44989
44999
|
target: {
|
|
44990
45000
|
name: t,
|
|
44991
45001
|
value: ie(e, "yyyy-MM-dd HH:mm:ss")
|
|
44992
45002
|
},
|
|
44993
45003
|
preventDefault: () => {}
|
|
44994
45004
|
});
|
|
44995
|
-
};
|
|
45005
|
+
}, f = u(n) ?? u(i);
|
|
44996
45006
|
return /* @__PURE__ */ O("div", {
|
|
44997
|
-
className: "form-group " + (
|
|
45007
|
+
className: "form-group " + (a ?? ""),
|
|
44998
45008
|
children: /* @__PURE__ */ O("div", {
|
|
44999
45009
|
className: "input-group input-group-outline",
|
|
45000
45010
|
children: /* @__PURE__ */ O(Me, {
|
|
@@ -45002,11 +45012,11 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45002
45012
|
adapterLocale: Pe,
|
|
45003
45013
|
children: /* @__PURE__ */ O(Fe, {
|
|
45004
45014
|
slotProps: ZN,
|
|
45005
|
-
label: e + (
|
|
45015
|
+
label: e + (o ? " *" : ""),
|
|
45006
45016
|
name: t,
|
|
45007
|
-
value:
|
|
45008
|
-
onChange:
|
|
45009
|
-
...
|
|
45017
|
+
value: f,
|
|
45018
|
+
onChange: d,
|
|
45019
|
+
...c
|
|
45010
45020
|
})
|
|
45011
45021
|
})
|
|
45012
45022
|
})
|
|
@@ -45540,13 +45550,39 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45540
45550
|
]
|
|
45541
45551
|
})
|
|
45542
45552
|
}) });
|
|
45543
|
-
}, sP = ({ label: e, name: t, cpnClass: n = "", required: r = !1,
|
|
45544
|
-
let
|
|
45545
|
-
|
|
45546
|
-
|
|
45547
|
-
}, [
|
|
45548
|
-
|
|
45549
|
-
|
|
45553
|
+
}, sP = ({ label: e, name: t, cpnClass: n = "", required: r = !1, disabled: a, readonly: o, value: s = "", onChange: l, isEdit: u = !1, ext: d = ".xlsx, .xls, .docx, .doc, .pdf", df: f = "" }) => {
|
|
45554
|
+
let p = S(null), m = S(null), [h, g] = C(""), [_, v] = C("");
|
|
45555
|
+
x(() => {
|
|
45556
|
+
v((s ?? "").split("/").pop() ?? ""), g(i(s, f));
|
|
45557
|
+
}, [s, f]), x(() => () => {
|
|
45558
|
+
m.current &&= (URL.revokeObjectURL(m.current), null);
|
|
45559
|
+
}, []);
|
|
45560
|
+
let y = (e) => {
|
|
45561
|
+
e.preventDefault();
|
|
45562
|
+
let t = /\.(pdf|docx|doc|xlsx|xls)$/i, n = e.target.files;
|
|
45563
|
+
if (!n || n.length === 0) return;
|
|
45564
|
+
let r = e.target.getAttribute("accept"), i = r ? RegExp(".(" + r.replace(/[., ]/g, (e) => e === "," ? "|" : "") + ")$", "i") : t;
|
|
45565
|
+
c(n, 10, i).then(() => {
|
|
45566
|
+
let t = n[0];
|
|
45567
|
+
if (!t) return;
|
|
45568
|
+
m.current && URL.revokeObjectURL(m.current);
|
|
45569
|
+
let r = URL.createObjectURL(t);
|
|
45570
|
+
m.current = r, g(r), v(t.name), l?.(e);
|
|
45571
|
+
}).catch((t) => {
|
|
45572
|
+
console.error("Upload file validation failed:", t), e.target.value = "";
|
|
45573
|
+
});
|
|
45574
|
+
}, b = (e) => {
|
|
45575
|
+
e.preventDefault(), m.current &&= (URL.revokeObjectURL(m.current), null), g(""), v(""), p.current && (p.current.value = ""), l && l({
|
|
45576
|
+
target: {
|
|
45577
|
+
name: t,
|
|
45578
|
+
type: "input",
|
|
45579
|
+
value: ""
|
|
45580
|
+
},
|
|
45581
|
+
preventDefault: () => {}
|
|
45582
|
+
});
|
|
45583
|
+
}, ee = u && !a && !o;
|
|
45584
|
+
return /* @__PURE__ */ k("div", {
|
|
45585
|
+
className: `card ${n}`,
|
|
45550
45586
|
children: [
|
|
45551
45587
|
/* @__PURE__ */ O("div", {
|
|
45552
45588
|
className: "card-header",
|
|
@@ -45557,28 +45593,17 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45557
45593
|
children: [/* @__PURE__ */ O("h3", {
|
|
45558
45594
|
className: "card-title",
|
|
45559
45595
|
children: e
|
|
45560
|
-
}),
|
|
45596
|
+
}), ee && /* @__PURE__ */ k("label", {
|
|
45561
45597
|
className: "text-info cursor-pointer m-0 ms-auto",
|
|
45562
45598
|
children: ["Tải lên", /* @__PURE__ */ O("input", {
|
|
45599
|
+
ref: p,
|
|
45563
45600
|
required: r,
|
|
45601
|
+
disabled: a,
|
|
45564
45602
|
name: t,
|
|
45565
45603
|
type: "file",
|
|
45566
|
-
onChange:
|
|
45567
|
-
e.preventDefault();
|
|
45568
|
-
let t = /\.(pdf|docx|doc|xlsx|xls)$/i, n = d.current?.querySelector(".default-file-input"), r = d.current?.querySelector(".showFile");
|
|
45569
|
-
if (!n || !r) return;
|
|
45570
|
-
let i = n.files;
|
|
45571
|
-
if (!i) return;
|
|
45572
|
-
let a = d.current?.querySelector(".rmFile"), s = n.getAttribute("accept"), l = s ? RegExp(".(" + s.replace(/[., ]/g, (e) => e === "," ? "|" : "") + ")$", "i") : t;
|
|
45573
|
-
c(i, 10, l).then(() => {
|
|
45574
|
-
Array.from(i).forEach((t) => {
|
|
45575
|
-
let n = URL.createObjectURL(t);
|
|
45576
|
-
p(n), h(t.name), o && o(e), a?.classList.remove("d-none");
|
|
45577
|
-
});
|
|
45578
|
-
});
|
|
45579
|
-
},
|
|
45604
|
+
onChange: y,
|
|
45580
45605
|
className: "d-none default-file-input",
|
|
45581
|
-
accept:
|
|
45606
|
+
accept: d
|
|
45582
45607
|
})]
|
|
45583
45608
|
})]
|
|
45584
45609
|
})
|
|
@@ -45588,73 +45613,83 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45588
45613
|
/* @__PURE__ */ k("div", {
|
|
45589
45614
|
className: "card-body d-flex justify-content-between align-items-center px-3 py-0 showFile",
|
|
45590
45615
|
style: { minHeight: "50px" },
|
|
45591
|
-
children: [/* @__PURE__ */ k("div", {
|
|
45592
|
-
className:
|
|
45616
|
+
children: [h && /* @__PURE__ */ k("div", {
|
|
45617
|
+
className: "d-flex align-items-center justify-content-center",
|
|
45593
45618
|
children: [/* @__PURE__ */ O("i", { className: "fal fa-file me-1" }), /* @__PURE__ */ O("a", {
|
|
45594
45619
|
className: "text-info",
|
|
45595
|
-
href:
|
|
45620
|
+
href: h,
|
|
45596
45621
|
target: "_blank",
|
|
45597
|
-
|
|
45622
|
+
rel: "noopener noreferrer",
|
|
45623
|
+
children: _
|
|
45598
45624
|
})]
|
|
45599
|
-
}),
|
|
45600
|
-
onClick:
|
|
45601
|
-
e.preventDefault();
|
|
45602
|
-
let n = d.current?.querySelector(".default-file-input"), r = d.current?.querySelector(".showFile");
|
|
45603
|
-
if (!n || !r) return;
|
|
45604
|
-
let a = d.current?.querySelector(".rmFile");
|
|
45605
|
-
a && (a.classList.add("d-none"), p(i("", u)), n.value = "", o && o({
|
|
45606
|
-
target: {
|
|
45607
|
-
name: t,
|
|
45608
|
-
type: "input",
|
|
45609
|
-
value: ""
|
|
45610
|
-
},
|
|
45611
|
-
preventDefault: () => {}
|
|
45612
|
-
}));
|
|
45613
|
-
},
|
|
45625
|
+
}), ee && h && /* @__PURE__ */ O("a", {
|
|
45626
|
+
onClick: b,
|
|
45614
45627
|
href: "#",
|
|
45615
|
-
className:
|
|
45628
|
+
className: "ml-auto link text-danger",
|
|
45616
45629
|
children: "Xóa"
|
|
45617
45630
|
})]
|
|
45618
45631
|
})
|
|
45619
45632
|
]
|
|
45620
45633
|
});
|
|
45621
|
-
}, cP = ({ label: e, name: t, cpnClass: n = "", required: r = !1,
|
|
45622
|
-
let
|
|
45634
|
+
}, cP = ({ label: e, name: t, cpnClass: n = "", required: r = !1, disabled: a, readonly: o, value: s = [], onChange: l, isEdit: u = !1, ext: d = ".xlsx, .xls, .docx, .doc, .pdf", df: f = "" }) => {
|
|
45635
|
+
let [p, m] = C([]), [h, g] = C(Array.isArray(s) ? s : []), [_, v] = C(""), y = S(/* @__PURE__ */ new Map()), b = (e) => {
|
|
45636
|
+
let t = y.current.get(e);
|
|
45637
|
+
return t || (t = URL.createObjectURL(e), y.current.set(e, t)), t;
|
|
45638
|
+
}, ee = (t, n) => {
|
|
45639
|
+
r && t.length === 0 && n.length === 0 ? v(e + " không được để trống") : v("");
|
|
45640
|
+
};
|
|
45641
|
+
x(() => () => {
|
|
45642
|
+
y.current.forEach((e) => {
|
|
45643
|
+
URL.revokeObjectURL(e);
|
|
45644
|
+
}), y.current.clear();
|
|
45645
|
+
}, []), x(() => {
|
|
45646
|
+
g(Array.isArray(s) ? s : []);
|
|
45647
|
+
}, [s]);
|
|
45648
|
+
let te = (e) => {
|
|
45623
45649
|
e.preventDefault();
|
|
45624
|
-
let
|
|
45625
|
-
if (!
|
|
45626
|
-
let r = n
|
|
45627
|
-
|
|
45628
|
-
|
|
45629
|
-
|
|
45630
|
-
|
|
45631
|
-
|
|
45650
|
+
let n = /\.(pdf|docx|doc|xlsx|xls)$/i, r = e.currentTarget, i = r.files;
|
|
45651
|
+
if (!i || i.length === 0) return;
|
|
45652
|
+
let a = r.getAttribute("accept"), o = a ? RegExp(".(" + a.replace(/[., ]/g, (e) => e === "," ? "|" : "") + ")$", "i") : n;
|
|
45653
|
+
c(i, 10, o).then(() => {
|
|
45654
|
+
let e = Array.from(i), n = [...p, ...e];
|
|
45655
|
+
m(n), v(""), l?.({
|
|
45656
|
+
target: {
|
|
45657
|
+
name: `${t}_upload`,
|
|
45658
|
+
type: "files",
|
|
45659
|
+
value: n
|
|
45660
|
+
},
|
|
45661
|
+
preventDefault: () => {}
|
|
45662
|
+
}), r.value = "";
|
|
45632
45663
|
});
|
|
45633
|
-
},
|
|
45634
|
-
e.preventDefault()
|
|
45635
|
-
|
|
45636
|
-
|
|
45637
|
-
};
|
|
45638
|
-
return x(() => {
|
|
45639
|
-
o && o({
|
|
45664
|
+
}, w = (e, n) => {
|
|
45665
|
+
e.preventDefault();
|
|
45666
|
+
let r = h.filter((e, t) => t !== n);
|
|
45667
|
+
g(r), ee(r, p), l?.({
|
|
45640
45668
|
target: {
|
|
45641
|
-
name:
|
|
45642
|
-
|
|
45643
|
-
value: f
|
|
45669
|
+
name: t,
|
|
45670
|
+
value: r
|
|
45644
45671
|
},
|
|
45645
45672
|
preventDefault: () => {}
|
|
45646
45673
|
});
|
|
45647
|
-
},
|
|
45648
|
-
|
|
45674
|
+
}, T = (e, n) => {
|
|
45675
|
+
e.preventDefault();
|
|
45676
|
+
let r = p[n];
|
|
45677
|
+
if (r) {
|
|
45678
|
+
let e = y.current.get(r);
|
|
45679
|
+
e && (URL.revokeObjectURL(e), y.current.delete(r));
|
|
45680
|
+
}
|
|
45681
|
+
let i = p.filter((e, t) => t !== n);
|
|
45682
|
+
m(i), ee(h, i), l?.({
|
|
45649
45683
|
target: {
|
|
45650
|
-
name: t
|
|
45651
|
-
|
|
45684
|
+
name: `${t}_upload`,
|
|
45685
|
+
type: "files",
|
|
45686
|
+
value: i
|
|
45652
45687
|
},
|
|
45653
45688
|
preventDefault: () => {}
|
|
45654
45689
|
});
|
|
45655
|
-
},
|
|
45656
|
-
|
|
45657
|
-
className: `card
|
|
45690
|
+
}, ne = u && !a && !o;
|
|
45691
|
+
return /* @__PURE__ */ k("div", {
|
|
45692
|
+
className: `card ${n}`,
|
|
45658
45693
|
children: [
|
|
45659
45694
|
/* @__PURE__ */ O("div", {
|
|
45660
45695
|
className: "card-header position-relative",
|
|
@@ -45665,20 +45700,19 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45665
45700
|
children: [/* @__PURE__ */ O("h3", {
|
|
45666
45701
|
className: "card-title",
|
|
45667
45702
|
children: e
|
|
45668
|
-
}),
|
|
45703
|
+
}), ne && /* @__PURE__ */ k("label", {
|
|
45669
45704
|
className: "text-info cursor-pointer m-0 ms-auto",
|
|
45670
45705
|
children: ["Tải lên", /* @__PURE__ */ O("input", {
|
|
45671
|
-
|
|
45706
|
+
disabled: a,
|
|
45672
45707
|
name: t,
|
|
45673
45708
|
multiple: !0,
|
|
45674
45709
|
type: "file",
|
|
45675
|
-
onChange:
|
|
45710
|
+
onChange: te,
|
|
45676
45711
|
style: {
|
|
45677
45712
|
position: "absolute",
|
|
45678
45713
|
left: -9999
|
|
45679
45714
|
},
|
|
45680
|
-
|
|
45681
|
-
accept: l
|
|
45715
|
+
accept: d
|
|
45682
45716
|
})]
|
|
45683
45717
|
})]
|
|
45684
45718
|
})
|
|
@@ -45688,49 +45722,61 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45688
45722
|
/* @__PURE__ */ k("div", {
|
|
45689
45723
|
className: "card-body py-2 px-3",
|
|
45690
45724
|
style: { minHeight: "50px" },
|
|
45691
|
-
children: [
|
|
45692
|
-
|
|
45693
|
-
|
|
45725
|
+
children: [
|
|
45726
|
+
h?.map((e, t) => {
|
|
45727
|
+
let n = (e ? e.split("/").pop() : "")?.split("___");
|
|
45728
|
+
return /* @__PURE__ */ k("div", {
|
|
45729
|
+
className: "d-flex w-100 justify-content-between",
|
|
45730
|
+
children: [/* @__PURE__ */ k("div", {
|
|
45731
|
+
className: "d-flex justify-content-center flex-column",
|
|
45732
|
+
children: [/* @__PURE__ */ k("div", {
|
|
45733
|
+
className: "w-100",
|
|
45734
|
+
children: [/* @__PURE__ */ O("i", { className: "fal fa-file me-1" }), /* @__PURE__ */ O("a", {
|
|
45735
|
+
className: "text-info",
|
|
45736
|
+
href: i(e, f),
|
|
45737
|
+
target: "_blank",
|
|
45738
|
+
children: n?.[1]
|
|
45739
|
+
})]
|
|
45740
|
+
}), /* @__PURE__ */ O("span", { children: n?.[0] ? new Date(Number(n[0])).toLocaleString("vi-VN") : "" })]
|
|
45741
|
+
}), ne && /* @__PURE__ */ O("a", {
|
|
45742
|
+
onClick: (e) => w(e, t),
|
|
45743
|
+
href: "#",
|
|
45744
|
+
className: "ml-auto link text-danger",
|
|
45745
|
+
children: "Xóa"
|
|
45746
|
+
})]
|
|
45747
|
+
}, t);
|
|
45748
|
+
}),
|
|
45749
|
+
p?.map((e, t) => /* @__PURE__ */ k("div", {
|
|
45694
45750
|
className: "d-flex w-100 justify-content-between",
|
|
45695
45751
|
children: [/* @__PURE__ */ k("div", {
|
|
45696
|
-
className:
|
|
45697
|
-
children: [/* @__PURE__ */
|
|
45698
|
-
className: "
|
|
45699
|
-
|
|
45700
|
-
|
|
45701
|
-
|
|
45702
|
-
|
|
45703
|
-
|
|
45704
|
-
|
|
45705
|
-
|
|
45706
|
-
}), s && /* @__PURE__ */ O("a", {
|
|
45707
|
-
onClick: (e) => _(e, t),
|
|
45752
|
+
className: "d-flex align-items-center justify-content-center",
|
|
45753
|
+
children: [/* @__PURE__ */ O("i", { className: "fal fa-file me-1" }), /* @__PURE__ */ O("a", {
|
|
45754
|
+
className: "text-info text-1-line",
|
|
45755
|
+
href: b(e),
|
|
45756
|
+
target: "_blank",
|
|
45757
|
+
rel: "noopener noreferrer",
|
|
45758
|
+
children: e?.name
|
|
45759
|
+
})]
|
|
45760
|
+
}), ne && /* @__PURE__ */ O("a", {
|
|
45761
|
+
onClick: (e) => T(e, t),
|
|
45708
45762
|
href: "#",
|
|
45709
|
-
className:
|
|
45763
|
+
className: "ml-auto link text-danger",
|
|
45710
45764
|
children: "Xóa"
|
|
45711
45765
|
})]
|
|
45712
|
-
}, t)
|
|
45713
|
-
|
|
45714
|
-
|
|
45715
|
-
|
|
45716
|
-
|
|
45717
|
-
|
|
45718
|
-
className: "text-info text-1-line",
|
|
45719
|
-
href: URL.createObjectURL(e),
|
|
45720
|
-
target: "_blank",
|
|
45721
|
-
children: e?.name
|
|
45722
|
-
})]
|
|
45723
|
-
}), s && /* @__PURE__ */ O("a", {
|
|
45724
|
-
onClick: (e) => v(e, t),
|
|
45725
|
-
href: "#",
|
|
45726
|
-
className: `ml-auto link text-danger ${e ? "" : "d-none"}`,
|
|
45727
|
-
children: "Xóa"
|
|
45728
|
-
})]
|
|
45729
|
-
}, t))]
|
|
45766
|
+
}, t)),
|
|
45767
|
+
_ && /* @__PURE__ */ O("div", {
|
|
45768
|
+
className: "text-danger mt-1",
|
|
45769
|
+
children: _
|
|
45770
|
+
})
|
|
45771
|
+
]
|
|
45730
45772
|
})
|
|
45731
45773
|
]
|
|
45732
45774
|
});
|
|
45733
|
-
}, lP = (
|
|
45775
|
+
}, lP = (e, t, n) => {
|
|
45776
|
+
let r = e?.[t] ?? [], i = e?.[`${t}_upload`] ?? [];
|
|
45777
|
+
if (r.length === 0 && i.length === 0) throw Error(`${n} không được để trống`);
|
|
45778
|
+
return !0;
|
|
45779
|
+
}, uP = ({ label: e, name: t, cpnClass: n = "", required: r = !1, value: a = [], onChange: o, isEdit: s = !1, ext: l = ".png, .jpg, .jpeg, .ico", df: u = "" }) => {
|
|
45734
45780
|
let d = S(null), [f, p] = C([]), [m, h] = C(Array.isArray(a) ? a : []), g = (e) => {
|
|
45735
45781
|
e.preventDefault();
|
|
45736
45782
|
let t = /\.(png|jpg|jpeg|ico)$/i, n = d.current?.querySelector(".default-file-input");
|
|
@@ -45840,4 +45886,4 @@ var { API_URL: GN } = await e(), KN = ({ label: e, name: t, cpnClass: r = "", re
|
|
|
45840
45886
|
});
|
|
45841
45887
|
};
|
|
45842
45888
|
//#endregion
|
|
45843
|
-
export {
|
|
45889
|
+
export { Ze as C, ze as D, Ve as E, Xe as S, qe as T, rt as _, oP as a, Je as b, eP as c, XN as d, JN as f, nt as g, it as h, sP as i, $N as l, KN as m, cP as n, nP as o, qN as p, lP as r, tP as s, uP as t, QN as u, Qe as v, Ge as w, Ye as x, Ke as y };
|