element-plus-suite 0.0.3 → 0.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/index.js CHANGED
@@ -1,206 +1,715 @@
1
- import { h as S, computed as g, shallowRef as m, watch as z, onBeforeUnmount as F, defineComponent as C, useSlots as D, onMounted as R, withDirectives as j } from "vue";
2
- import { ElTableColumn as q, ElTable as I, vLoading as L, ElPagination as k } from "element-plus";
3
- function T(e, t) {
4
- return e.flatMap((r) => {
5
- if (r.visible === !1) return [];
1
+ import { h as g, defineComponent as ge, shallowRef as E, reactive as Z, watch as O, computed as b, onBeforeUnmount as be, isVNode as ze, nextTick as Ae, useSlots as Te, onMounted as Ie, withDirectives as Be } from "vue";
2
+ import { ElMention as Le, ElTransfer as De, ElTreeSelect as Ue, ElSwitch as We, ElSlider as Ne, ElRate as Ke, ElInputTag as $e, ElCascader as Ge, ElAutocomplete as Qe, ElTimeSelect as Ye, ElTimePicker as He, ElDatePicker as Je, ElSelectV2 as Xe, ElInputNumber as Ze, ElInput as te, ElUpload as et, ElButton as ee, ElCheckbox as tt, ElCheckboxGroup as nt, ElRadio as lt, ElRadioGroup as rt, ElOption as at, ElSelect as ot, ElForm as st, ElRow as ut, ElCol as ie, ElFormItem as J, ElTableColumn as ce, ElTable as it, vLoading as ct, ElPagination as dt } from "element-plus";
3
+ function ft(t) {
4
+ return typeof t == "function" ? t() : t ?? [];
5
+ }
6
+ function X(t, n) {
7
+ return (a, { slots: o = {} }) => {
6
8
  const {
7
- visible: u,
8
- slot: s,
9
- headerSlot: o,
10
- render: l,
11
- headerRender: n,
12
- autoMerge: a,
13
- children: c,
14
- ...y
15
- } = r, p = { ...y }, f = {}, h = s ? t[s] : void 0, b = o ? t[o] : void 0;
16
- if (h ? f.default = h : l && (f.default = (d) => l({
17
- row: d.row,
18
- column: d.column,
19
- $index: d.$index
20
- })), b ? f.header = b : n && (f.header = (d) => n({
21
- column: d.column,
22
- $index: d.$index,
23
- store: d.store,
24
- _self: d._self
25
- })), c?.length) {
26
- const d = {
27
- default: () => T(c, t)
9
+ options: d,
10
+ props: f = {},
11
+ slots: s = {},
12
+ ...r
13
+ } = a, c = f.label ?? "label", p = f.value ?? "value", h = f.disabled ?? "disabled";
14
+ return g(
15
+ t,
16
+ r,
17
+ {
18
+ // 保留 ElSelect / ElRadioGroup / ElCheckboxGroup 自身的具名插槽。
19
+ ...o,
20
+ // 自动生成选项;显式传入 default 插槽时交由调用方接管。
21
+ default: o.default ?? (() => ft(d).map(
22
+ (u) => g(
23
+ n,
24
+ {
25
+ label: u[c],
26
+ value: u[p],
27
+ disabled: u[h]
28
+ },
29
+ typeof u.slots == "function" ? u.slots : s[u.slots]
30
+ )
31
+ ))
32
+ }
33
+ );
34
+ };
35
+ }
36
+ function vt(t, { slots: n }) {
37
+ return g(te, { ...t, type: "password" }, n);
38
+ }
39
+ function pt(t, { slots: n }) {
40
+ const { modelValue: a, "onUpdate:modelValue": o, ...d } = t;
41
+ return g(
42
+ et,
43
+ {
44
+ ...d,
45
+ fileList: a,
46
+ "onUpdate:fileList": o
47
+ },
48
+ {
49
+ ...n,
50
+ // ElUpload 不会自动生成触发按钮,未自定义内容时提供默认按钮。
51
+ default: n.default ?? (() => g(ee, { type: "primary", plain: !0 }, () => "选择文件"))
52
+ }
53
+ );
54
+ }
55
+ const gt = {
56
+ input: te,
57
+ password: vt,
58
+ number: Ze,
59
+ select: X(ot, at),
60
+ selectV2: Xe,
61
+ radio: X(rt, lt),
62
+ checkbox: X(nt, tt),
63
+ date: Je,
64
+ time: He,
65
+ timeSelect: Ye,
66
+ autocomplete: Qe,
67
+ cascader: Ge,
68
+ inputTag: $e,
69
+ rate: Ke,
70
+ slider: Ne,
71
+ switch: We,
72
+ tree: Ue,
73
+ transfer: De,
74
+ upload: pt,
75
+ mention: Le
76
+ };
77
+ function bt(t) {
78
+ return t.type && typeof t.type != "string" ? t.type : gt[t.type || "input"] ?? te;
79
+ }
80
+ const ht = [
81
+ "key",
82
+ "label",
83
+ "type",
84
+ "style",
85
+ "rules",
86
+ "col",
87
+ "hidden",
88
+ "labelWidth",
89
+ "slot",
90
+ "defaultValue",
91
+ "formItemProps",
92
+ "fieldProps",
93
+ "children",
94
+ "separator"
95
+ ];
96
+ function yt(t) {
97
+ ["select", "selectV2", "cascader", "autocomplete", "tree"].includes(
98
+ t.type
99
+ );
100
+ const n = new Set(ht);
101
+ return {
102
+ clearable: !0,
103
+ ...Object.fromEntries(
104
+ Object.entries(t).filter(([o]) => !n.has(o))
105
+ ),
106
+ ...t.fieldProps ?? {}
107
+ };
108
+ }
109
+ function W(t) {
110
+ return typeof t == "number" ? { span: t } : t ?? {};
111
+ }
112
+ function de(t, n) {
113
+ return {
114
+ span: 24,
115
+ ...W(n.col),
116
+ ...W(t.col)
117
+ };
118
+ }
119
+ function I(t) {
120
+ const n = t.flatMap((a) => {
121
+ const o = a.key && !a.children?.length ? [[a.key, a.defaultValue]] : [], d = I(a.children ?? []);
122
+ return [...o, ...Object.entries(d)];
123
+ });
124
+ return Object.fromEntries(n);
125
+ }
126
+ function mt(t) {
127
+ return t != null && typeof t == "object";
128
+ }
129
+ const fe = {
130
+ form: {
131
+ submitText: "提交"
132
+ },
133
+ search: {
134
+ submitText: "查询"
135
+ }
136
+ }, wt = {
137
+ submit: !0,
138
+ reset: !0,
139
+ cancel: !1
140
+ };
141
+ function ve(t, n) {
142
+ return Object.fromEntries(Object.entries(t).filter(([a]) => !n.includes(a)));
143
+ }
144
+ const he = /* @__PURE__ */ ge({
145
+ name: "ElFormPro",
146
+ props: {
147
+ schema: {
148
+ type: Array,
149
+ default: () => []
150
+ },
151
+ modelValue: {
152
+ type: Object,
153
+ default: void 0
154
+ },
155
+ formConfig: {
156
+ type: Object,
157
+ default: () => ({})
158
+ },
159
+ /** 仅供 TablePro 的筛选表单开启折叠。 */
160
+ collapsible: {
161
+ type: Boolean,
162
+ default: !1
163
+ },
164
+ /** 搜索模式将默认提交文案改为“查询”,仅由 TablePro 使用。 */
165
+ searchMode: {
166
+ type: Boolean,
167
+ default: !1
168
+ }
169
+ },
170
+ emits: {
171
+ "update:modelValue": (t) => !0,
172
+ submit: (t) => !0,
173
+ reset: (t) => !0,
174
+ cancel: () => !0,
175
+ change: (t) => !0
176
+ },
177
+ setup(t, {
178
+ emit: n,
179
+ expose: a,
180
+ slots: o
181
+ }) {
182
+ const d = E(), f = E(typeof window > "u" ? 0 : window.innerWidth), s = E(t.collapsible && !(t.formConfig?.collapsed ?? !0)), r = Z({
183
+ ...t.formConfig
184
+ });
185
+ O(() => t.formConfig, (e) => {
186
+ Object.assign(r, e);
187
+ }, {
188
+ deep: !0
189
+ }), O(() => t.formConfig?.collapsed, (e) => {
190
+ t.collapsible && (s.value = !(e ?? !0));
191
+ });
192
+ const c = Z(I(t.schema)), p = b(() => mt(t.modelValue)), h = b({
193
+ get: () => p.value ? t.modelValue : c,
194
+ set: (e) => {
195
+ if (p.value) {
196
+ n("update:modelValue", e);
197
+ return;
198
+ }
199
+ for (const l of Object.keys(c)) delete c[l];
200
+ Object.assign(c, e), n("update:modelValue", e);
201
+ }
202
+ });
203
+ O(() => t.schema, (e) => {
204
+ if (!p.value) {
205
+ for (const l of Object.keys(c)) delete c[l];
206
+ Object.assign(c, I(e));
207
+ }
208
+ }, {
209
+ deep: !0
210
+ });
211
+ const u = b(() => t.schema.filter((e) => !e.hidden)), w = [{
212
+ key: "sm",
213
+ min: 768
214
+ }, {
215
+ key: "md",
216
+ min: 992
217
+ }, {
218
+ key: "lg",
219
+ min: 1200
220
+ }, {
221
+ key: "xl",
222
+ min: 1920
223
+ }], C = (e, l) => {
224
+ let v = e.base || e.xs || "top";
225
+ if (l < 768) return e.xs || v;
226
+ for (const y of w) {
227
+ if (l < y.min) break;
228
+ v = e[y.key] || v;
229
+ }
230
+ return v;
231
+ }, F = b(() => {
232
+ const e = r.labelPosition;
233
+ return typeof e == "string" ? e : C(e || {
234
+ base: "top",
235
+ md: "right"
236
+ }, f.value);
237
+ }), P = (e) => typeof e == "number" ? e : e?.span, R = (e, l) => {
238
+ let v = P(e.span) ?? 24;
239
+ for (const y of w) {
240
+ if (l < y.min) break;
241
+ const k = P(e[y.key]);
242
+ k !== void 0 && (v = k);
243
+ }
244
+ return Math.min(24, v);
245
+ }, B = (e) => R(de(e, r), f.value), z = (e, l) => {
246
+ const v = e % 24;
247
+ return v && 24 - v < l && (e += 24 - v), e + l;
248
+ }, L = b(() => !!o.buttons || r.buttons?.submit !== !1 || r.buttons?.reset !== !1 || r.buttons?.cancel !== void 0 && r.buttons.cancel !== !1), D = (e) => {
249
+ if (r.actionCol !== void 0)
250
+ return R(W(r.actionCol), f.value);
251
+ const l = e ? 24 - e : 0;
252
+ return l >= 4 ? l : 24;
253
+ }, N = (e) => {
254
+ const l = e * 24;
255
+ let v = 0, y = 0;
256
+ for (const k of u.value) {
257
+ const _ = z(v, B(k));
258
+ if (_ > l) break;
259
+ const V = L.value ? z(_, D(_)) : _;
260
+ if (y > 0 && V > l) break;
261
+ v = _, y += 1;
262
+ }
263
+ return Math.max(1, y);
264
+ }, q = b(() => !t.collapsible || !r.showCollapseButton ? u.value.length : r.collapseCount !== void 0 ? r.collapseCount : N(r.collapseRows ?? 1)), A = b(() => s.value ? u.value : u.value.slice(0, q.value)), j = b(() => {
265
+ let e = 0;
266
+ for (const l of A.value)
267
+ e = z(e, B(l));
268
+ return e % 24;
269
+ }), K = b(() => D(j.value)), $ = b(() => j.value > 0 && j.value + K.value <= 24), i = b(() => F.value === "top" && $.value), m = b(() => {
270
+ if (r.actionCol !== void 0)
271
+ return {
272
+ span: 24,
273
+ ...W(r.actionCol)
274
+ };
275
+ const e = j.value, l = e ? 24 - e : 0;
276
+ return {
277
+ span: l >= 4 ? l : 24
278
+ };
279
+ }), S = b(() => {
280
+ const e = {
281
+ submit: {
282
+ type: "primary",
283
+ text: t.searchMode ? fe.search.submitText : fe.form.submitText,
284
+ disabled: !1,
285
+ loading: !1
286
+ },
287
+ reset: {
288
+ plain: !0,
289
+ text: "重置",
290
+ disabled: !1
291
+ },
292
+ cancel: {
293
+ plain: !0,
294
+ text: "取消",
295
+ disabled: !1
296
+ }
297
+ }, l = (v) => {
298
+ const y = r.buttons?.[v];
299
+ return y === !1 || y === void 0 && !wt[v] ? null : {
300
+ ...e[v],
301
+ ...y ?? {}
302
+ };
303
+ };
304
+ return {
305
+ submit: l("submit"),
306
+ reset: l("reset"),
307
+ cancel: l("cancel")
308
+ };
309
+ }), x = b(() => Object.values(S.value).some(Boolean)), we = b(() => {
310
+ const e = r.buttonAlign ?? "right";
311
+ return e === "start" ? "is-start" : e === "center" ? "is-center" : "is-end";
312
+ }), Pe = (e) => de(e, r), Se = (e, l) => {
313
+ const v = {
314
+ ...h.value,
315
+ [e]: l
316
+ };
317
+ h.value = v, n("change", v);
318
+ }, ke = (e) => Array.isArray(e) ? e : e ? [e] : [], Ce = (e) => {
319
+ const l = [], v = (y) => {
320
+ for (const k of y)
321
+ k.hidden || (k.children?.length ? v(k.children) : l.push(k));
322
+ };
323
+ return v(e.children ?? []), l;
324
+ }, Ee = (e) => ke(e).some((l) => l?.required), Oe = (e) => Ce(e).some((l) => Ee(l.rules)), G = (e, l) => e ? g(ee, {
325
+ ...ve(e, ["text"]),
326
+ onClick: l
327
+ }, () => e.text) : null, Q = (e) => {
328
+ const l = o[e.slot ?? e.key ?? ""];
329
+ if (l) return l({
330
+ item: e,
331
+ model: h.value
332
+ });
333
+ const v = bt(e);
334
+ if (ze(v)) return v;
335
+ const {
336
+ slots: y,
337
+ ...k
338
+ } = yt(e), _ = Object.fromEntries(Object.entries(y ?? {}).flatMap(([V, T]) => {
339
+ const M = typeof T == "function" ? T : o[String(T)];
340
+ return M ? [[V, (U = {}) => M({
341
+ ...U,
342
+ item: e,
343
+ model: h.value
344
+ })]] : [];
345
+ }));
346
+ return g(v, {
347
+ ...k,
348
+ modelValue: e.key == null ? void 0 : h.value[e.key],
349
+ "onUpdate:modelValue": (V) => {
350
+ e.key != null && Se(e.key, V);
351
+ }
352
+ }, _);
353
+ }, ne = (e) => typeof e.label == "function" ? e.label() : e.label, _e = (e) => {
354
+ const l = F.value;
355
+ return g("div", {
356
+ class: ["el-form-item", `el-form-item--label-${l}`, "el-form-pro__group", {
357
+ "is-required": e.formItemProps?.required ?? Oe(e),
358
+ "is-no-asterisk": r.hideRequiredAsterisk,
359
+ "asterisk-right": r.requireAsteriskPosition === "right",
360
+ "asterisk-left": r.requireAsteriskPosition !== "right"
361
+ }],
362
+ style: e.style
363
+ }, [e.label ? g("div", {
364
+ class: "el-form-item__label",
365
+ style: l === "top" ? void 0 : {
366
+ width: e.labelWidth ?? r.labelWidth
367
+ }
368
+ }, [ne(e)]) : null, g("div", {
369
+ class: "el-form-item__content"
370
+ }, [le(e)])]);
371
+ }, Me = (e) => e.children?.length ? le(e) : g(J, {
372
+ ...e.formItemProps ?? {},
373
+ prop: e.key,
374
+ rules: e.rules,
375
+ labelWidth: e.labelWidth ?? r.labelWidth,
376
+ class: [e.formItemProps?.class, "el-form-pro__child"],
377
+ style: e.style
378
+ }, {
379
+ default: () => Q(e)
380
+ }), le = (e) => e.children?.length ? g("div", {
381
+ class: "el-form-pro__children"
382
+ }, e.children.filter((l) => !l.hidden).flatMap((l, v) => {
383
+ const y = g("div", {
384
+ class: "el-form-pro__child-wrapper",
385
+ key: l.key
386
+ }, [Me(l)]);
387
+ return v === 0 ? [y] : [g("span", {
388
+ class: "el-form-pro__separator"
389
+ }, e.separator ?? ""), y];
390
+ })) : Q(e), re = async () => {
391
+ t.collapsible && (s.value = !0), await Ae(), d.value?.$el?.querySelector(".is-error")?.scrollIntoView({
392
+ behavior: "smooth",
393
+ block: "center"
394
+ });
395
+ }, ae = (...e) => d.value?.validate(...e), Fe = (...e) => d.value?.validateField(...e), oe = async () => {
396
+ try {
397
+ await ae(), n("submit", h.value);
398
+ } catch {
399
+ re();
400
+ }
401
+ }, Re = (e) => {
402
+ const l = I(t.schema), v = e == null ? null : new Set(Array.isArray(e) ? e : [e]), y = {}, k = (_, V = !1, T = !1) => {
403
+ for (const M of _) {
404
+ const U = V || v === null || v.has(M.key);
405
+ M.children?.length ? k(M.children, U, !0) : T && U && M.key != null && (y[M.key] = l[M.key]);
406
+ }
407
+ };
408
+ return k(t.schema), y;
409
+ }, se = (...e) => {
410
+ d.value?.resetFields(...e);
411
+ const l = Re(e[0]);
412
+ return Object.keys(l).length && (h.value = {
413
+ ...h.value,
414
+ ...l
415
+ }), {
416
+ ...h.value,
417
+ ...l
418
+ };
419
+ }, qe = () => {
420
+ const e = se();
421
+ n("reset", e);
422
+ }, je = () => n("cancel"), xe = (e) => {
423
+ Object.assign(r, e);
424
+ }, Ve = () => h.value, Y = () => {
425
+ d.value?.$el, typeof window < "u" && (f.value = window.innerWidth);
426
+ }, H = typeof ResizeObserver > "u" ? null : new ResizeObserver(Y);
427
+ O(() => d.value?.$el, (e) => {
428
+ H?.disconnect(), e && H?.observe(e), Y();
429
+ }, {
430
+ flush: "post"
431
+ });
432
+ const ue = () => {
433
+ typeof window < "u" && (f.value = window.innerWidth), Y();
434
+ };
435
+ return typeof window < "u" && window.addEventListener("resize", ue), be(() => {
436
+ H?.disconnect(), typeof window < "u" && window.removeEventListener("resize", ue);
437
+ }), a({
438
+ validate: (...e) => ae(...e),
439
+ validateField: (...e) => Fe(...e),
440
+ resetFields: (...e) => {
441
+ se(...e);
442
+ },
443
+ clearValidate: (...e) => {
444
+ d.value?.clearValidate(...e);
445
+ },
446
+ scrollToError: re,
447
+ setState: xe,
448
+ getValues: Ve
449
+ }), () => {
450
+ const e = {
451
+ ...ve(r, ["buttonAlign", "buttons", "row", "col", "showCollapseButton", "collapseRows", "collapseCount", "collapsed", "actionCol"])
28
452
  };
29
- return f.header && (d.header = f.header), [S(q, p, d)];
453
+ return g(st, {
454
+ ...e,
455
+ class: ["el-form-pro", e.class].filter(Boolean),
456
+ labelPosition: F.value,
457
+ ref: d,
458
+ model: h.value,
459
+ onSubmit: (l) => {
460
+ l.preventDefault(), oe();
461
+ }
462
+ }, {
463
+ default: () => [g(ut, {
464
+ gutter: 18,
465
+ ...r.row ?? {}
466
+ }, {
467
+ default: () => [...A.value.map((l) => g(ie, {
468
+ ...Pe(l),
469
+ key: l.key ?? l.children?.[0]?.key
470
+ }, {
471
+ default: () => l.children?.length ? _e(l) : g(J, {
472
+ ...l.formItemProps ?? {},
473
+ label: typeof l.label == "function" ? void 0 : l.label,
474
+ labelWidth: l.labelWidth ?? r.labelWidth,
475
+ prop: l.key,
476
+ rules: l.rules,
477
+ class: l.formItemProps?.class,
478
+ style: l.style
479
+ }, {
480
+ ...typeof l.label == "function" ? {
481
+ label: () => ne(l)
482
+ } : {},
483
+ default: () => Q(l)
484
+ })
485
+ })), x.value && u.value.length ? g(ie, m.value, {
486
+ default: () => g(J, null, {
487
+ ...i.value ? {
488
+ label: () => g("label", {
489
+ class: "el-form-pro__actions-label"
490
+ })
491
+ } : {},
492
+ default: () => g("div", {
493
+ class: ["el-form-pro__actions", we.value]
494
+ }, [o.buttons ? o.buttons() : [G(S.value.submit, () => {
495
+ oe();
496
+ }), G(S.value.reset, qe), G(S.value.cancel, je)], t.collapsible && r.showCollapseButton && u.value.length > q.value ? g(ee, {
497
+ type: "primary",
498
+ link: !0,
499
+ onClick: () => {
500
+ s.value = !s.value;
501
+ }
502
+ }, () => s.value ? "收起" : "展开") : null])
503
+ })
504
+ }) : null]
505
+ })]
506
+ });
507
+ };
508
+ }
509
+ });
510
+ function ye(t, n) {
511
+ return t.flatMap((a) => {
512
+ if (a.visible === !1) return [];
513
+ const {
514
+ visible: o,
515
+ slot: d,
516
+ headerSlot: f,
517
+ render: s,
518
+ headerRender: r,
519
+ autoMerge: c,
520
+ children: p,
521
+ ...h
522
+ } = a, u = { ...h }, w = {}, C = d ? n[d] : void 0, F = f ? n[f] : void 0;
523
+ if (C ? w.default = C : s && (w.default = (P) => s({
524
+ row: P.row,
525
+ column: P.column,
526
+ $index: P.$index
527
+ })), F ? w.header = F : r && (w.header = (P) => r({
528
+ column: P.column,
529
+ $index: P.$index,
530
+ store: P.store,
531
+ _self: P._self
532
+ })), p?.length) {
533
+ const P = {
534
+ default: () => ye(p, n)
535
+ };
536
+ return w.header && (P.header = w.header), [g(ce, u, P)];
30
537
  }
31
538
  return [
32
- S(
33
- q,
34
- p,
35
- Object.keys(f).length ? f : void 0
539
+ g(
540
+ ce,
541
+ u,
542
+ Object.keys(w).length ? w : void 0
36
543
  )
37
544
  ];
38
545
  });
39
546
  }
40
- function x(e) {
41
- return e.prop ?? e.property;
547
+ function pe(t) {
548
+ return t.prop ?? t.property;
42
549
  }
43
- function O(e, t) {
44
- if (e === null || typeof e != "object") return;
45
- const r = e;
46
- if (Object.prototype.hasOwnProperty.call(r, t))
47
- return r[t];
48
- if (!t.includes(".")) return;
49
- let u = r;
50
- for (const s of t.split(".")) {
51
- if (u === null || typeof u != "object") return;
52
- u = u[s];
550
+ function Pt(t, n) {
551
+ if (t === null || typeof t != "object") return;
552
+ const a = t;
553
+ if (Object.prototype.hasOwnProperty.call(a, n))
554
+ return a[n];
555
+ if (!n.includes(".")) return;
556
+ let o = a;
557
+ for (const d of n.split(".")) {
558
+ if (o === null || typeof o != "object") return;
559
+ o = o[d];
53
560
  }
54
- return u;
561
+ return o;
55
562
  }
56
- function _(e) {
57
- return e.flatMap((t) => t.visible === !1 ? [] : t.children?.length ? _(t.children) : [t]);
563
+ function me(t) {
564
+ return t.flatMap((n) => n.visible === !1 ? [] : n.children?.length ? me(n.children) : [n]);
58
565
  }
59
- function V(e, t = []) {
60
- const r = _(e), u = /* @__PURE__ */ new Map();
61
- for (const n of r) {
62
- const a = x(n);
63
- a && !u.has(a) && u.set(a, n);
566
+ function St(t, n = []) {
567
+ const a = me(t), o = /* @__PURE__ */ new Map();
568
+ for (const r of a) {
569
+ const c = pe(r);
570
+ c && !o.has(c) && o.set(c, r);
64
571
  }
65
- const s = /* @__PURE__ */ new Set(), o = [], l = (n) => {
66
- !n || s.has(n) || !u.has(n) || (s.add(n), o.push({
67
- key: n,
68
- getValue: (a) => O(a, n)
572
+ const d = /* @__PURE__ */ new Set(), f = [], s = (r) => {
573
+ !r || d.has(r) || !o.has(r) || (d.add(r), f.push({
574
+ key: r,
575
+ getValue: (c) => Pt(c, r)
69
576
  }));
70
577
  };
71
- return t.forEach(l), r.forEach((n) => {
72
- n.autoMerge && l(x(n));
73
- }), o;
578
+ return n.forEach(s), a.forEach((r) => {
579
+ r.autoMerge && s(pe(r));
580
+ }), f;
74
581
  }
75
- function B(e, t) {
76
- const r = e.length, u = new Map(
77
- t.map((l) => [l.key, Array.from({ length: r }, () => 1)])
582
+ function kt(t, n) {
583
+ const a = t.length, o = new Map(
584
+ n.map((s) => [s.key, Array.from({ length: a }, () => 1)])
78
585
  );
79
- if (!r || !t.length) return u;
80
- const s = e.map((l) => t.map((n) => n.getValue(l))), o = t.map(() => 0);
81
- for (let l = 1; l <= r; l += 1) {
82
- let n = !0;
83
- for (let a = 0; a < t.length; a += 1) {
84
- const c = l < r && n && s[l][a] === s[l - 1][a];
85
- if (!c) {
86
- const y = u.get(t[a].key), p = o[a], f = l - p;
87
- y[p] = f;
88
- for (let h = p + 1; h < l; h += 1)
89
- y[h] = 0;
90
- o[a] = l;
586
+ if (!a || !n.length) return o;
587
+ const d = t.map((s) => n.map((r) => r.getValue(s))), f = n.map(() => 0);
588
+ for (let s = 1; s <= a; s += 1) {
589
+ let r = !0;
590
+ for (let c = 0; c < n.length; c += 1) {
591
+ const p = s < a && r && d[s][c] === d[s - 1][c];
592
+ if (!p) {
593
+ const h = o.get(n[c].key), u = f[c], w = s - u;
594
+ h[u] = w;
595
+ for (let C = u + 1; C < s; C += 1)
596
+ h[C] = 0;
597
+ f[c] = s;
91
598
  }
92
- n = c;
599
+ r = p;
93
600
  }
94
601
  }
95
- return u;
602
+ return o;
96
603
  }
97
- function K(e, t = "children") {
98
- return e.some((r) => {
99
- if (r === null || typeof r != "object") return !1;
100
- const u = r[t];
101
- return Array.isArray(u) && u.length > 0;
604
+ function Ct(t, n = "children") {
605
+ return t.some((a) => {
606
+ if (a === null || typeof a != "object") return !1;
607
+ const o = a[n];
608
+ return Array.isArray(o) && o.length > 0;
102
609
  });
103
610
  }
104
- function U(e) {
105
- const t = g(
106
- () => V(e.columns(), e.mergeFields())
107
- ), r = g(() => t.value.length ? e.tableRef.value?.store?.states?.data?.value ?? e.data.value : e.data.value), u = g(() => {
108
- if (!t.value.length || e.lazy())
611
+ function Et(t) {
612
+ const n = b(
613
+ () => St(t.columns(), t.mergeFields())
614
+ ), a = b(() => n.value.length ? t.tableRef.value?.store?.states?.data?.value ?? t.data.value : t.data.value), o = b(() => {
615
+ if (!n.value.length || t.lazy())
109
616
  return /* @__PURE__ */ new Map();
110
- const o = e.treeProps()?.children ?? "children", l = r.value;
111
- return K(l, o) ? /* @__PURE__ */ new Map() : B(l, t.value);
617
+ const f = t.treeProps()?.children ?? "children", s = a.value;
618
+ return Ct(s, f) ? /* @__PURE__ */ new Map() : kt(s, n.value);
112
619
  });
113
620
  return {
114
- spanMethod: g(() => {
115
- const o = e.userSpanMethod();
116
- return t.value.length ? (l) => {
117
- const n = o?.(l);
118
- if (n !== void 0) return n;
119
- const a = l.column.property, c = a ? u.value.get(a)?.[l.rowIndex] : void 0;
120
- if (!(c === void 0 || c === 1))
121
- return { rowspan: c, colspan: 1 };
122
- } : o;
621
+ spanMethod: b(() => {
622
+ const f = t.userSpanMethod();
623
+ return n.value.length ? (s) => {
624
+ const r = f?.(s);
625
+ if (r !== void 0) return r;
626
+ const c = s.column.property, p = c ? o.value.get(c)?.[s.rowIndex] : void 0;
627
+ if (!(p === void 0 || p === 1))
628
+ return { rowspan: p, colspan: 1 };
629
+ } : f;
123
630
  }),
124
- spanMap: u
631
+ spanMap: o
125
632
  };
126
633
  }
127
- const $ = {
634
+ const Ot = {
128
635
  page: 1,
129
636
  pageSize: 20,
130
637
  pageSizes: [10, 20, 50, 100],
638
+ pagerCount: 5,
131
639
  layout: "total, sizes, prev, pager, next, jumper",
132
640
  background: !0
133
641
  };
134
- function N(e) {
135
- return e === !1 ? null : {
136
- ...$,
137
- ...e === !0 ? {} : e ?? {}
642
+ function _t(t) {
643
+ return t === !1 ? null : {
644
+ ...Ot,
645
+ ...t === !0 ? {} : t ?? {}
138
646
  };
139
647
  }
140
- function G(e) {
141
- const t = g(() => N(e())), r = m(t.value?.page ?? 1), u = m(t.value?.pageSize ?? 20);
142
- z(
143
- () => t.value?.page,
144
- (n) => {
145
- n !== void 0 && (r.value = n);
648
+ function Mt(t) {
649
+ const n = b(() => _t(t())), a = E(n.value?.page ?? 1), o = E(n.value?.pageSize ?? 20);
650
+ O(
651
+ () => n.value?.page,
652
+ (r) => {
653
+ r !== void 0 && (a.value = r);
146
654
  }
147
- ), z(
148
- () => t.value?.pageSize,
149
- (n) => {
150
- n !== void 0 && (u.value = n);
655
+ ), O(
656
+ () => n.value?.pageSize,
657
+ (r) => {
658
+ r !== void 0 && (o.value = r);
151
659
  }
152
660
  );
153
- const s = g(
154
- () => t.value ? r.value : null
155
- ), o = g(
156
- () => t.value ? u.value : null
661
+ const d = b(
662
+ () => n.value ? a.value : null
663
+ ), f = b(
664
+ () => n.value ? o.value : null
157
665
  );
158
- function l(n) {
159
- u.value = n, r.value = 1;
666
+ function s(r) {
667
+ o.value = r, a.value = 1;
160
668
  }
161
669
  return {
162
670
  // 模板直接依赖这个布尔值,避免访问可能为 null 的配置。
163
- enabled: g(() => t.value != null),
164
- config: t,
165
- currentPage: r,
166
- pageSize: u,
167
- requestPage: s,
168
- requestPageSize: o,
169
- setPageSize: l
671
+ enabled: b(() => n.value != null),
672
+ config: n,
673
+ currentPage: a,
674
+ pageSize: o,
675
+ requestPage: d,
676
+ requestPageSize: f,
677
+ setPageSize: s
170
678
  };
171
679
  }
172
- function H(e) {
173
- const t = m(!1);
174
- let r = null, u = 0;
175
- async function s() {
176
- const l = e.request();
177
- if (!l) return;
178
- r?.abort(), r = new AbortController();
179
- const n = ++u, a = r;
180
- t.value = !0;
680
+ function Ft(t) {
681
+ const n = E(!1);
682
+ let a = null, o = 0;
683
+ async function d() {
684
+ const s = t.request();
685
+ if (!s) return;
686
+ a?.abort(), a = new AbortController();
687
+ const r = ++o, c = a;
688
+ n.value = !0;
181
689
  try {
182
- const c = await l({
183
- page: e.page(),
184
- pageSize: e.pageSize(),
185
- signal: a.signal
690
+ const p = await s({
691
+ page: t.page(),
692
+ pageSize: t.pageSize(),
693
+ query: t.query(),
694
+ signal: c.signal
186
695
  });
187
- if (a.signal.aborted || n !== u)
696
+ if (c.signal.aborted || r !== o)
188
697
  return;
189
- e.onData?.(c), e.onLoaded?.(c);
190
- } catch (c) {
191
- if (a.signal.aborted || n !== u)
698
+ t.onData?.(p), t.onLoaded?.(p);
699
+ } catch (p) {
700
+ if (c.signal.aborted || r !== o)
192
701
  return;
193
- e.onError?.(c);
702
+ t.onError?.(p);
194
703
  } finally {
195
- n === u && (t.value = !1);
704
+ r === o && (n.value = !1);
196
705
  }
197
706
  }
198
- function o() {
199
- r?.abort(), u += 1, t.value = !1;
707
+ function f() {
708
+ a?.abort(), o += 1, n.value = !1;
200
709
  }
201
- return F(o), { loading: t, load: s, cancel: o };
710
+ return be(f), { loading: n, load: d, cancel: f };
202
711
  }
203
- const J = /* @__PURE__ */ C({
712
+ const Rt = /* @__PURE__ */ ge({
204
713
  name: "ElTablePro",
205
714
  inheritAttrs: !1,
206
715
  props: {
@@ -220,6 +729,14 @@ const J = /* @__PURE__ */ C({
220
729
  type: Array,
221
730
  default: () => []
222
731
  },
732
+ query: {
733
+ type: Object,
734
+ default: void 0
735
+ },
736
+ filter: {
737
+ type: Object,
738
+ default: void 0
739
+ },
223
740
  data: {
224
741
  type: Array,
225
742
  default: () => []
@@ -230,111 +747,187 @@ const J = /* @__PURE__ */ C({
230
747
  }
231
748
  },
232
749
  emits: {
233
- loaded: (e) => !0,
234
- error: (e) => !0
750
+ loaded: (t) => !0,
751
+ error: (t) => !0
235
752
  },
236
- setup(e, {
237
- attrs: t,
238
- emit: r,
239
- expose: u
753
+ setup(t, {
754
+ attrs: n,
755
+ emit: a,
756
+ expose: o
240
757
  }) {
241
- const s = D(), o = m(null), l = m([]), n = m(0), a = G(() => e.pagination), c = g(() => {
242
- const i = e.rowKey;
243
- return typeof i == "function" ? (v) => String(i(v)) : i;
758
+ const d = Te(), f = E(null), s = E([]), r = E(0), c = b(() => ({
759
+ ...I(t.filter?.schema ?? []),
760
+ ...t.filter?.defaultValue ?? {},
761
+ ...t.filter?.model ?? {}
762
+ })), p = Z({
763
+ ...c.value
764
+ }), h = E({
765
+ ...c.value,
766
+ ...t.query ?? {}
767
+ });
768
+ O(() => t.query, (i) => {
769
+ h.value = {
770
+ ...c.value,
771
+ ...i ?? {}
772
+ }, t.request && R();
773
+ }, {
774
+ deep: !0
775
+ }), O(() => t.filter?.model, (i) => {
776
+ for (const m of Object.keys(p)) delete p[m];
777
+ Object.assign(p, c.value, i ?? {});
778
+ }, {
779
+ deep: !0
780
+ });
781
+ const u = Mt(() => t.pagination);
782
+ let w = !1;
783
+ function C(i) {
784
+ i !== u.currentPage.value && (u.enabled.value && (w = !0), u.currentPage.value = i);
785
+ }
786
+ const F = b(() => {
787
+ const i = t.rowKey;
788
+ return typeof i == "function" ? (m) => String(i(m)) : i;
244
789
  }), {
245
- loading: y,
246
- load: p,
247
- cancel: f
248
- } = H({
249
- request: () => e.request,
250
- page: () => a.requestPage.value,
251
- pageSize: () => a.requestPageSize.value,
790
+ loading: P,
791
+ load: R,
792
+ cancel: B
793
+ } = Ft({
794
+ request: () => t.request,
795
+ page: () => u.requestPage.value,
796
+ pageSize: () => u.requestPageSize.value,
797
+ query: () => h.value,
252
798
  onData: (i) => {
253
- l.value = i.data, n.value = i.total;
799
+ s.value = i.data, r.value = i.total;
254
800
  },
255
- onLoaded: (i) => r("loaded", i),
256
- onError: (i) => r("error", i)
257
- }), h = g(() => y.value), b = g(() => {
258
- if (e.request) return l.value;
259
- if (!e.data) return [];
260
- if (!a.config.value) return e.data;
261
- const i = (a.currentPage.value - 1) * a.pageSize.value;
262
- return e.data.slice(i, i + a.pageSize.value);
263
- }), d = g(() => e.request ? n.value : e.data?.length ?? 0), {
264
- spanMethod: A
265
- } = U({
266
- tableRef: o,
267
- columns: () => e.columns,
268
- data: b,
269
- mergeFields: () => e.mergeFields,
270
- userSpanMethod: () => t.spanMethod,
271
- treeProps: () => t.treeProps,
272
- lazy: () => !!t.lazy
801
+ onLoaded: (i) => a("loaded", i),
802
+ onError: (i) => a("error", i)
803
+ }), z = b(() => P.value), L = b(() => {
804
+ if (t.request) return s.value;
805
+ if (!t.data) return [];
806
+ if (!u.config.value) return t.data;
807
+ const i = (u.currentPage.value - 1) * u.pageSize.value;
808
+ return t.data.slice(i, i + u.pageSize.value);
809
+ }), D = b(() => t.request ? r.value : t.data?.length ?? 0), {
810
+ spanMethod: N
811
+ } = Et({
812
+ tableRef: f,
813
+ columns: () => t.columns,
814
+ data: L,
815
+ mergeFields: () => t.mergeFields,
816
+ userSpanMethod: () => n.spanMethod,
817
+ treeProps: () => n.treeProps,
818
+ lazy: () => !!n.lazy
273
819
  });
274
- async function P(i) {
275
- i?.page !== void 0 && (a.currentPage.value = i.page), await p();
820
+ async function q(i) {
821
+ i?.page !== void 0 && C(i.page), await R();
276
822
  }
277
- z(() => e.request, (i) => {
278
- l.value = [], n.value = 0, i ? P() : f();
279
- }), z(() => [a.requestPage.value, a.requestPageSize.value], () => {
280
- e.request && P();
823
+ async function A() {
824
+ h.value = {
825
+ ...p
826
+ }, C(1), await R();
827
+ }
828
+ async function j() {
829
+ const i = {
830
+ ...c.value
831
+ };
832
+ for (const m of Object.keys(p))
833
+ delete p[m];
834
+ Object.assign(p, i), h.value = {
835
+ ...i
836
+ }, C(1), await R();
837
+ }
838
+ O(() => t.request, (i) => {
839
+ s.value = [], r.value = 0, i ? q() : B();
840
+ }), O(() => [u.requestPage.value, u.requestPageSize.value], () => {
841
+ if (w) {
842
+ w = !1;
843
+ return;
844
+ }
845
+ t.request && q();
281
846
  });
282
- const E = new Proxy({}, {
283
- get(i, v) {
284
- if (v === "reload") return P;
285
- const M = o.value;
286
- if (!M) return;
287
- const w = M[v];
288
- return typeof w == "function" ? w.bind(M) : w;
847
+ const K = new Proxy({}, {
848
+ get(i, m) {
849
+ if (m === "reload") return q;
850
+ if (m === "search") return A;
851
+ if (m === "resetFilter") return j;
852
+ const S = f.value;
853
+ if (!S) return;
854
+ const x = S[m];
855
+ return typeof x == "function" ? x.bind(S) : x;
289
856
  },
290
- has(i, v) {
291
- return v === "reload" ? !0 : o.value != null && v in o.value;
857
+ has(i, m) {
858
+ return m === "reload" || m === "search" || m === "resetFilter" ? !0 : f.value != null && m in f.value;
292
859
  }
293
860
  });
294
- return u(E), R(() => {
295
- e.request && P();
296
- }), () => {
297
- const i = S(I, {
298
- ...t,
299
- ref: o,
300
- data: b.value,
301
- rowKey: c.value,
302
- spanMethod: A.value
861
+ o(K), Ie(() => {
862
+ t.request && q();
863
+ });
864
+ const $ = () => Object.fromEntries(Object.entries(d).filter(([i]) => i.startsWith("filter-")).map(([i, m]) => [i.slice(7), m]));
865
+ return () => {
866
+ const i = t.filter ? g(he, {
867
+ schema: t.filter.schema,
868
+ modelValue: p,
869
+ collapsible: !0,
870
+ searchMode: !0,
871
+ formConfig: {
872
+ // 筛选表单开启折叠按钮时,默认按一行折叠。
873
+ ...t.filter.formConfig?.showCollapseButton ? {
874
+ collapseRows: 1
875
+ } : {},
876
+ ...t.filter.formConfig ?? {}
877
+ },
878
+ "onUpdate:modelValue": (S) => {
879
+ for (const x of Object.keys(p)) delete p[x];
880
+ Object.assign(p, S);
881
+ },
882
+ onSubmit: () => {
883
+ A();
884
+ },
885
+ onReset: () => {
886
+ j();
887
+ }
888
+ }, $()) : null, m = g(it, {
889
+ ...n,
890
+ ref: f,
891
+ data: L.value,
892
+ rowKey: F.value,
893
+ spanMethod: N.value
303
894
  }, {
304
- default: () => T(e.columns, s),
305
- empty: s.empty,
306
- append: s.append
895
+ default: () => ye(t.columns, d),
896
+ empty: d.empty,
897
+ append: d.append
307
898
  });
308
- return S("div", {
899
+ return g("div", {
309
900
  class: "el-table-pro"
310
- }, [j(i, [[L, h.value]]), a.enabled.value ? S(k, {
311
- currentPage: a.currentPage.value,
312
- pageSize: a.pageSize.value,
313
- total: d.value,
314
- pageSizes: [...a.config.value?.pageSizes ?? []],
315
- layout: a.config.value?.layout,
316
- background: a.config.value?.background,
317
- "onUpdate:currentPage": (v) => {
318
- a.currentPage.value = v;
901
+ }, [i, Be(m, [[ct, z.value]]), u.enabled.value ? g(dt, {
902
+ currentPage: u.currentPage.value,
903
+ pageSize: u.pageSize.value,
904
+ total: D.value,
905
+ pageSizes: [...u.config.value?.pageSizes ?? []],
906
+ pagerCount: u.config.value?.pagerCount,
907
+ layout: u.config.value?.layout,
908
+ background: u.config.value?.background,
909
+ "onUpdate:currentPage": (S) => {
910
+ u.currentPage.value = S;
319
911
  },
320
- "onUpdate:pageSize": (v) => {
321
- a.setPageSize(v);
912
+ "onUpdate:pageSize": (S) => {
913
+ u.setPageSize(S);
322
914
  }
323
915
  }) : null]);
324
916
  };
325
917
  }
326
- }), Q = [J];
327
- function W(e) {
328
- Q.forEach((t) => {
329
- const r = t.name;
330
- r && e.component(r, t);
918
+ }), qt = [he, Rt];
919
+ function jt(t) {
920
+ qt.forEach((n) => {
921
+ const a = n.name;
922
+ a && t.component(a, n);
331
923
  });
332
924
  }
333
- const Z = { install: W };
925
+ const At = { install: jt };
334
926
  export {
335
- J as ElTablePro,
336
- $ as TABLE_PRO_DEFAULT_PAGINATION,
337
- Z as default,
338
- W as install,
339
- N as normalizePagination
927
+ he as ElFormPro,
928
+ Rt as ElTablePro,
929
+ Ot as TABLE_PRO_DEFAULT_PAGINATION,
930
+ At as default,
931
+ jt as install,
932
+ _t as normalizePagination
340
933
  };