@materialui-reactjs/admin 1.0.6 → 2.0.1

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 (129) hide show
  1. package/CHANGELOG.md +322 -0
  2. package/LICENSE +21 -0
  3. package/README.md +587 -453
  4. package/dist/Common-DFahMuQE.cjs +11 -0
  5. package/dist/Common-_PK8HLKN.js +267 -0
  6. package/dist/Env-DoS-iQjs.cjs +1 -0
  7. package/dist/Env-SHztUA3s.js +16 -0
  8. package/dist/HeaderUpdate-Dirxjmxs.cjs +1 -0
  9. package/dist/{chunks/HeaderUpdate-DuS-gHNR.js → HeaderUpdate-drlnuHI8.js} +28 -25
  10. package/dist/SortableItem-C3KzO8Xh.cjs +1 -0
  11. package/dist/SpinnerLoader-BujLjvC3.cjs +1 -0
  12. package/dist/{chunks/SpinnerLoader-h8RDIarB.js → SpinnerLoader-CyhOQC6d.js} +2 -2
  13. package/dist/UDragFile-D8wOZ1Ut.js +96 -0
  14. package/dist/UDragFile-Db0sK4M7.cjs +1 -0
  15. package/dist/{chunks/Validator-CXYkI7vJ.js → Validator-D2zwZeov.js} +83 -52
  16. package/dist/Validator-DBxl8wtE.cjs +1 -0
  17. package/dist/assets/css/form.css +1 -1
  18. package/dist/assets/css/index.css +1 -1
  19. package/dist/ckeditor/ckeditor.d.ts +3 -0
  20. package/dist/ckeditor/plugins/elfinder.d.ts +11 -0
  21. package/dist/ckeditor/plugins/fullscreen.d.ts +15 -0
  22. package/dist/ckeditor/plugins/pdffinder.d.ts +18 -0
  23. package/dist/ckeditor/types.d.ts +37 -0
  24. package/dist/common-CEZp8xpQ.js +30 -0
  25. package/dist/common-ivDX6gGq.cjs +1 -0
  26. package/dist/components/echarts/index.cjs +1 -0
  27. package/dist/components/echarts/index.js +1 -1
  28. package/dist/components/form/AdvancedMultiSelect.d.ts +6 -3
  29. package/dist/components/form/AsxhUImages.d.ts +2 -1
  30. package/dist/components/form/BoxAddRow.d.ts +13 -2
  31. package/dist/components/form/CheckTreeBox.d.ts +12 -3
  32. package/dist/components/form/CusForm.d.ts +19 -6
  33. package/dist/components/form/DateInput.d.ts +2 -1
  34. package/dist/components/form/Editor.d.ts +2 -1
  35. package/dist/components/form/EfFile.d.ts +2 -1
  36. package/dist/components/form/EfImage.d.ts +2 -1
  37. package/dist/components/form/EfImages.d.ts +2 -1
  38. package/dist/components/form/PImage.d.ts +2 -1
  39. package/dist/components/form/SelectAddRowBox.d.ts +9 -5
  40. package/dist/components/form/SelectAddRowBoxAdvanced.d.ts +13 -4
  41. package/dist/components/form/SelectBox.d.ts +20 -7
  42. package/dist/components/form/UDragFile.d.ts +2 -1
  43. package/dist/components/form/UFile.d.ts +2 -1
  44. package/dist/components/form/UFiles.d.ts +9 -2
  45. package/dist/components/form/UImages.d.ts +2 -1
  46. package/dist/components/form/index.cjs +1 -0
  47. package/dist/components/form/index.js +2 -2
  48. package/dist/components/loader/SpinnerLoader.d.ts +5 -1
  49. package/dist/components/loader/index.cjs +1 -0
  50. package/dist/components/loader/index.js +1 -2
  51. package/dist/components/meta/CardTable.d.ts +11 -5
  52. package/dist/components/meta/CardTable.types.d.ts +57 -0
  53. package/dist/components/meta/CusTooltip.d.ts +8 -2
  54. package/dist/components/meta/Head.d.ts +10 -1
  55. package/dist/components/meta/HeaderDetail.d.ts +2 -1
  56. package/dist/components/meta/HeaderUpdate.d.ts +5 -1
  57. package/dist/components/meta/ModalForm.d.ts +41 -11
  58. package/dist/components/meta/Navtabs.d.ts +1 -1
  59. package/dist/components/meta/ScrollTable.d.ts +7 -3
  60. package/dist/components/meta/SearchBox.d.ts +8 -5
  61. package/dist/components/meta/SortableItem.d.ts +11 -1
  62. package/dist/components/meta/index.cjs +1 -0
  63. package/dist/components/meta/index.d.ts +1 -0
  64. package/dist/components/meta/index.js +3 -3
  65. package/dist/components/sidebar/Sidebar.types.d.ts +9 -7
  66. package/dist/components/sidebar/index.cjs +1 -0
  67. package/dist/components/sidebar/index.js +1 -1
  68. package/dist/components/single/Detail.d.ts +8 -3
  69. package/dist/components/single/Fields.d.ts +10 -4
  70. package/dist/components/single/Import.d.ts +8 -3
  71. package/dist/components/single/List.d.ts +33 -7
  72. package/dist/components/single/Update.d.ts +10 -4
  73. package/dist/components/single/UpdateDetail.d.ts +3 -2
  74. package/dist/components/single/UpdateTableDetail.d.ts +4 -3
  75. package/dist/components/single/index.cjs +1 -0
  76. package/dist/components/single/index.js +1 -1
  77. package/dist/components/top-navbar/index.cjs +1 -0
  78. package/dist/components/top-navbar/index.js +78 -2
  79. package/dist/echarts-Bi3uwLbg.cjs +1 -0
  80. package/dist/{chunks/echarts-CRmndsxC.js → echarts-CTzMqeR5.js} +4 -4
  81. package/dist/form-heyswTRq.js +3897 -0
  82. package/dist/form-sgtop6li.cjs +49 -0
  83. package/dist/hook/common.d.ts +87 -0
  84. package/dist/hook/detail.cjs +1 -0
  85. package/dist/hook/detail.d.ts +9 -15
  86. package/dist/hook/detail.js +1 -11
  87. package/dist/hook/fields.cjs +1 -0
  88. package/dist/hook/fields.d.ts +6 -14
  89. package/dist/hook/fields.js +1 -11
  90. package/dist/hook/import.d.ts +6 -11
  91. package/dist/hook/index.cjs +1 -0
  92. package/dist/hook/index.d.ts +29 -20
  93. package/dist/hook/index.js +14 -11
  94. package/dist/hook/update.cjs +1 -0
  95. package/dist/hook/update.d.ts +11 -19
  96. package/dist/hook/update.js +12 -9
  97. package/dist/index.cjs +1 -0
  98. package/dist/index.d.ts +16 -0
  99. package/dist/index.js +14 -11
  100. package/dist/meta-BANk9kHW.cjs +1 -0
  101. package/dist/meta-CheDAmMh.js +745 -0
  102. package/dist/rolldown-runtime-BocRIvOZ.cjs +1 -0
  103. package/dist/sidebar-CfQAYWi-.cjs +1 -0
  104. package/dist/{chunks/sidebar-Dj4Xr9du.js → sidebar-CzRmfvhi.js} +10 -13
  105. package/dist/{chunks/single-CRF61o_U.js → single-BsJ7TYJi.js} +364 -282
  106. package/dist/single-C2WPEjhk.cjs +1 -0
  107. package/dist/style.cjs +0 -0
  108. package/dist/style.d.ts +0 -0
  109. package/dist/style.js +0 -0
  110. package/dist/types/Menu.d.ts +25 -0
  111. package/dist/utils/Common.d.ts +224 -43
  112. package/dist/utils/CusRoute.d.ts +21 -1
  113. package/dist/utils/Env.d.ts +23 -2
  114. package/dist/utils/Group.d.ts +12 -1
  115. package/dist/utils/Validator.d.ts +34 -12
  116. package/dist/utils/index.cjs +11 -0
  117. package/dist/utils/index.d.ts +2 -1
  118. package/dist/utils/index.js +212 -171
  119. package/package.json +190 -163
  120. package/dist/chunks/Common-BURf0rBN.js +0 -222
  121. package/dist/chunks/Env-DRXhvUcb.js +0 -16
  122. package/dist/chunks/UDragFile-BnUR3riq.js +0 -92
  123. package/dist/chunks/form-CPkpL5eA.js +0 -45889
  124. package/dist/chunks/loader-BUiOnhOH.js +0 -1
  125. package/dist/chunks/meta-4qPWijBT.js +0 -758
  126. package/dist/chunks/top-navbar-Bob0gMUh.js +0 -78
  127. package/scripts/postinstall.cjs +0 -80
  128. /package/dist/{chunks/SortableItem-B4-Zsso3.js → SortableItem-B4-Zsso3.js} +0 -0
  129. /package/dist/{components/meta/Pdfviewer.d.ts → hook/import.cjs} +0 -0
@@ -1,33 +1,64 @@
1
+ //#region src/hook/common.ts
2
+ var e = (e, t, n) => ({
3
+ target: n === void 0 ? {
4
+ name: e,
5
+ value: t
6
+ } : {
7
+ name: e,
8
+ value: t,
9
+ type: n
10
+ },
11
+ preventDefault: () => {}
12
+ });
13
+ function t(e) {
14
+ if (!e) return;
15
+ let t = e.id;
16
+ if (t == null || t === "") return;
17
+ let n = Number(t);
18
+ return Number.isNaN(n) ? void 0 : n;
19
+ }
20
+ //#endregion
1
21
  //#region src/hook/update.ts
2
- var e = (e) => {
22
+ var n = (e) => {
3
23
  e.preventDefault();
4
- let { name: n, type: r, value: i } = t(e);
5
- if (r === "file") {
6
- let t = e.target.files;
7
- return { [n]: t ? t[0] : null };
24
+ let { name: t, type: n, value: i } = r(e);
25
+ if (n === "file") {
26
+ let n = e.target.files;
27
+ return { [t]: n?.[0] ?? null };
8
28
  }
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();
29
+ return { [t]: i };
30
+ }, r = (e) => {
31
+ let { name: t, type: n, value: r } = e.target, i = t.split(/[{}]+/).filter(Boolean), a = i.shift();
12
32
  if (!a || i.length === 0) return {
13
33
  name: t,
14
34
  type: n,
15
35
  value: r
16
36
  };
17
37
  let o = {}, s = o;
18
- for (let e = 0; e < i.length - 1; e++) s[i[e]] = {}, s = s[i[e]];
38
+ for (let e = 0; e < i.length - 1; e++) {
39
+ let t = {};
40
+ s[i[e]] = t, s = t;
41
+ }
19
42
  return s[i[i.length - 1]] = r, {
20
43
  name: a,
21
44
  type: n,
22
45
  value: o
23
46
  };
24
- }, n = (e, t) => {
25
- let r = { ...e };
47
+ }, i = (e) => typeof e == "object" && !!e && !Array.isArray(e) && !(e instanceof File) && !(e instanceof Blob), a = (e, t) => {
48
+ let n = { ...e };
26
49
  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 {
50
+ let r = t[e], o = n[e];
51
+ i(r) && i(o) ? n[e] = a(o, r) : n[e] = r;
52
+ }), n;
53
+ }, o = null, s = () => {
54
+ if (o) return o;
55
+ let e = typeof window < "u" ? window.jQuery ?? window.$ : void 0;
56
+ 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.");
57
+ return o = e, o;
58
+ }, c = new Proxy((() => {}), {
59
+ apply: (e, t, n) => s()(...n),
60
+ get: (e, t) => s()[t]
61
+ }), l = class e {
31
62
  options;
32
63
  validators;
33
64
  $element;
@@ -59,7 +90,7 @@ var e = (e) => {
59
90
  },
60
91
  match: function(t) {
61
92
  let n = t.attr("data-match");
62
- return n && t.val() !== r(n).val() && e.DEFAULTS.errors.match;
93
+ return n && t.val() !== c(n).val() && e.DEFAULTS.errors.match;
63
94
  },
64
95
  minlength: function(t) {
65
96
  let n = Number(t.attr("data-minlength"));
@@ -87,44 +118,44 @@ var e = (e) => {
87
118
  }
88
119
  };
89
120
  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));
121
+ this.options = n || e.DEFAULTS, this.validators = c.extend({}, e.VALIDATORS), this.$element = c(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) => {
122
+ this.clearErrors(c(t));
92
123
  }));
93
124
  }
94
125
  static getValue(e) {
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() ?? "";
126
+ return e.is("[type=\"checkbox\"]") ? !!e.prop("checked") : e.is("[type=\"radio\"]") ? c(`[name="${e.attr("name")}"]:checked`).length > 0 : e.is("select[multiple]") ? (e.val() ?? []).length : e.val() ?? "";
96
127
  }
97
128
  update = () => {
98
129
  let t = this;
99
130
  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));
131
+ t.clearErrors(c(n));
101
132
  })), this.toggleSubmit(), this;
102
133
  };
103
134
  onInput = (e) => {
104
- let t = this, n = r(e.target), i = e.type !== "focusout";
105
- this.$inputs.is(n) && this.validateInput(n, i)?.done(function() {
135
+ let t = this, n = c(e.target), r = e.type !== "focusout";
136
+ this.$inputs.is(n) && this.validateInput(n, r)?.done(function() {
106
137
  t.toggleSubmit();
107
138
  });
108
139
  };
109
140
  validateInput = (e, t) => {
110
141
  let n = e.data("bs.validator.errors");
111
142
  e.is("[type=\"radio\"]") && (e = this.$element.find("input[name=\"" + e.attr("name") + "\"]"));
112
- let i = r.Event("validate.bs.validator", { relatedTarget: e[0] });
113
- if (this.$element.trigger(i), i.isDefaultPrevented()) return;
114
- let a = this;
115
- return this.runValidators(e).done(function(o) {
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", {
143
+ let r = c.Event("validate.bs.validator", { relatedTarget: e[0] });
144
+ if (this.$element.trigger(r), r.isDefaultPrevented()) return;
145
+ let i = this;
146
+ return this.runValidators(e).done(function(a) {
147
+ e.data("bs.validator.errors", a), a.length ? t ? i.defer(e, i.showErrors) : i.showErrors(e) : i.clearErrors(e), (!n || a.toString() !== n.toString()) && (r = a.length ? c.Event("invalid.bs.validator", {
117
148
  relatedTarget: e[0],
118
- detail: o
119
- }) : r.Event("valid.bs.validator", {
149
+ detail: a
150
+ }) : c.Event("valid.bs.validator", {
120
151
  relatedTarget: e[0],
121
152
  detail: n
122
- }), a.$element.trigger(i)), a.toggleSubmit(), a.$element.trigger(r.Event("validated.bs.validator", { relatedTarget: e[0] }));
153
+ }), i.$element.trigger(r)), i.toggleSubmit(), i.$element.trigger(c.Event("validated.bs.validator", { relatedTarget: e[0] }));
123
154
  });
124
155
  };
125
156
  runValidators = (t) => {
126
- let n = [], i = r.Deferred();
127
- t.data("bs.validator.deferred") && t.data("bs.validator.deferred").reject(), t.data("bs.validator.deferred", i);
157
+ let n = [], r = c.Deferred(), i = t.data("bs.validator.deferred");
158
+ i && i.reject(), t.data("bs.validator.deferred", r);
128
159
  function a(e) {
129
160
  return t.attr("data-" + e + "-error");
130
161
  }
@@ -137,43 +168,43 @@ var e = (e) => {
137
168
  function s() {
138
169
  return t.attr("data-error");
139
170
  }
140
- function c(e) {
171
+ function l(e) {
141
172
  return a(e) || o() || s();
142
173
  }
143
- return r.each(this.validators, r.proxy(function(r, i) {
144
- let a = null;
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();
174
+ return c.each(this.validators, c.proxy(function(r, i) {
175
+ let a;
176
+ (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));
177
+ }, this)), r.resolve(n), r.promise();
147
178
  };
148
179
  validate = () => {
149
180
  let e = this;
150
- return r.when(this.$inputs.map((t, n) => e.validateInput(r(n), !1))).then(function() {
181
+ return c.when(this.$inputs.map((t, n) => e.validateInput(c(n), !1))).then(function() {
151
182
  e.toggleSubmit(), e.focusError();
152
183
  }), this;
153
184
  };
154
185
  focusError = () => {
155
186
  if (!this.options.focus) return;
156
187
  let t = this.$element.find(".has-error:first :input");
157
- t.length !== 0 && (r("html, body").animate({ scrollTop: t.offset().top - e.FOCUS_OFFSET }, 250), t.focus());
188
+ t.length !== 0 && (c("html, body").animate({ scrollTop: t.offset().top - e.FOCUS_OFFSET }, 250), t.focus());
158
189
  };
159
190
  showErrors = (e) => {
160
191
  this.options.html;
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/>");
192
+ let t = e.data("bs.validator.errors"), n = e.closest(".form-group"), r = n.find(".form-control-feedback");
193
+ t.length && (t = c("<ul/>").addClass("list-unstyled").append(c.map(t, (e) => {
194
+ let t = c("<li/>");
164
195
  return this.options.html ? t.html(e) : t.text(e);
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));
196
+ })), 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));
166
197
  };
167
198
  clearErrors = (e) => {
168
199
  let t = e.closest(".form-group"), n = t.find(".form-control-feedback");
169
200
  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);
170
201
  };
171
202
  hasErrors = () => !!this.$inputs.filter(function() {
172
- return !!(r(this).data("bs.validator.errors") || []).length;
203
+ return !!(c(this).data("bs.validator.errors") || []).length;
173
204
  }).length;
174
205
  isIncomplete = () => !!this.$inputs.filter("[required]").filter((t, n) => {
175
- let i = e.getValue(r(n));
176
- return !(typeof i == "string" ? i.trim() : i);
206
+ let r = e.getValue(c(n));
207
+ return !(typeof r == "string" ? r.trim() : r);
177
208
  }).length;
178
209
  onSubmit = (e) => {
179
210
  this.validate(), (this.isIncomplete() || this.hasErrors()) && e.preventDefault();
@@ -186,21 +217,21 @@ var e = (e) => {
186
217
  window.clearTimeout(e.data("bs.validator.timeout")), e.data("bs.validator.timeout", window.setTimeout(t, this.options.delay));
187
218
  };
188
219
  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(() => {
189
- let e = r(this), t = e.data("bs.validator.timeout");
220
+ let e = c(this), t = e.data("bs.validator.timeout");
190
221
  window.clearTimeout(t), e.removeData("bs.validator.timeout");
191
222
  }), this.$element.find(".invalid-tooltip, .invalid-feedback").each(() => {
192
- let e = r(this), t = e.data("bs.validator.originalContent");
223
+ let e = c(this), t = e.data("bs.validator.originalContent");
193
224
  e.removeData("bs.validator.originalContent").html(t);
194
225
  }), 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);
195
226
  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);
196
227
  run = () => {
197
228
  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() {
198
- let t = r(this), n = t.attr("data-match");
199
- n && r(n).on("input.bs.validator", function() {
229
+ let t = c(this), n = t.attr("data-match");
230
+ n && c(n).on("input.bs.validator", function() {
200
231
  e.getValue(t) && t.trigger("input.bs.validator");
201
232
  });
202
- }), this.$inputs.filter((t, n) => e.getValue(r(n)) && !r(this).closest(".has-error").length).trigger("focusout"), this.$element.attr("novalidate", !0);
233
+ }), this.$inputs.filter((t, n) => e.getValue(c(n)) && !c(this).closest(".has-error").length).trigger("focusout"), this.$element.attr("novalidate", !0);
203
234
  };
204
235
  };
205
236
  //#endregion
206
- export { t as i, n, e as r, i as t };
237
+ export { e as a, r as i, a as n, t as o, n as r, l as t };
@@ -0,0 +1 @@
1
+ var e=(e,t,n)=>({target:n===void 0?{name:e,value:t}:{name:e,value:t,type:n},preventDefault:()=>{}});function t(e){if(!e)return;let t=e.id;if(t==null||t===``)return;let n=Number(t);return Number.isNaN(n)?void 0:n}var n=e=>{e.preventDefault();let{name:t,type:n,value:i}=r(e);if(n===`file`){let n=e.target.files;return{[t]:n?.[0]??null}}return{[t]:i}},r=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++){let t={};s[i[e]]=t,s=t}return s[i[i.length-1]]=r,{name:a,type:n,value:o}},i=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof File)&&!(e instanceof Blob),a=(e,t)=>{let n={...e};return Object.keys(t).forEach(e=>{let r=t[e],o=n[e];i(r)&&i(o)?n[e]=a(o,r):n[e]=r}),n},o=null,s=()=>{if(o)return o;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 o=e,o},c=new Proxy((()=>{}),{apply:(e,t,n)=>s()(...n),get:(e,t)=>s()[t]}),l=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()!==c(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=c.extend({},e.VALIDATORS),this.$element=c(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(c(t))}))}static getValue(e){return e.is(`[type="checkbox"]`)?!!e.prop(`checked`):e.is(`[type="radio"]`)?c(`[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(c(n))})),this.toggleSubmit(),this};onInput=e=>{let t=this,n=c(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=c.Event(`validate.bs.validator`,{relatedTarget:e[0]});if(this.$element.trigger(r),r.isDefaultPrevented())return;let i=this;return this.runValidators(e).done(function(a){e.data(`bs.validator.errors`,a),a.length?t?i.defer(e,i.showErrors):i.showErrors(e):i.clearErrors(e),(!n||a.toString()!==n.toString())&&(r=a.length?c.Event(`invalid.bs.validator`,{relatedTarget:e[0],detail:a}):c.Event(`valid.bs.validator`,{relatedTarget:e[0],detail:n}),i.$element.trigger(r)),i.toggleSubmit(),i.$element.trigger(c.Event(`validated.bs.validator`,{relatedTarget:e[0]}))})};runValidators=t=>{let n=[],r=c.Deferred(),i=t.data(`bs.validator.deferred`);i&&i.reject(),t.data(`bs.validator.deferred`,r);function a(e){return t.attr(`data-`+e+`-error`)}function o(){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 s(){return t.attr(`data-error`)}function l(e){return a(e)||o()||s()}return c.each(this.validators,c.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 c.when(this.$inputs.map((t,n)=>e.validateInput(c(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&&(c(`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=c(`<ul/>`).addClass(`list-unstyled`).append(c.map(t,e=>{let t=c(`<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!!(c(this).data(`bs.validator.errors`)||[]).length}).length;isIncomplete=()=>!!this.$inputs.filter(`[required]`).filter((t,n)=>{let r=e.getValue(c(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=c(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=c(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=c(this),n=t.attr(`data-match`);n&&c(n).on(`input.bs.validator`,function(){e.getValue(t)&&t.trigger(`input.bs.validator`)})}),this.$inputs.filter((t,n)=>e.getValue(c(n))&&!c(this).closest(`.has-error`).length).trigger(`focusout`),this.$element.attr(`novalidate`,!0)}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});