vue3-smart-table 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.
@@ -1,12 +1,98 @@
1
- var ie = Object.defineProperty;
2
- var se = (t, e, n) => e in t ? ie(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
- var I = (t, e, n) => se(t, typeof e != "symbol" ? e + "" : e, n);
4
- import { defineComponent as O, h as f, ref as R, watch as z, resolveComponent as M, createBlock as _, openBlock as h, mergeProps as B, withKeys as U, withCtx as A, createElementBlock as K, Fragment as H, renderList as L, computed as F, toRefs as ae, createCommentVNode as ce, unref as a, createTextVNode as Z, toDisplayString as W, renderSlot as ne, normalizeProps as ue, resolveDynamicComponent as de, normalizeClass as me, normalizeStyle as fe, resolveDirective as ye, withDirectives as pe, createSlots as ge } from "vue";
5
- import { ElImage as q, ElTag as he, ElMessage as $, ElButton as Ce } from "element-plus";
6
- import { CopyDocument as be, DocumentCopy as ve } from "@element-plus/icons-vue";
7
- class ke {
1
+ var ce = Object.defineProperty;
2
+ var fe = (t, e, n) => e in t ? ce(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
+ var W = (t, e, n) => fe(t, typeof e != "symbol" ? e + "" : e, n);
4
+ import { ref as L, watch as R, computed as S, defineComponent as $, h as m, resolveComponent as O, createBlock as w, openBlock as y, mergeProps as x, withKeys as J, withCtx as V, createElementBlock as A, Fragment as F, renderList as M, resolveDirective as de, withDirectives as me, createSlots as ye, createTextVNode as X, toDisplayString as P, renderSlot as Z, resolveDynamicComponent as pe, unref as ee, normalizeClass as ge, normalizeStyle as he, normalizeProps as be, guardReactiveProps as ve } from "vue";
5
+ import { ElImage as q, ElTag as Ce, ElMessage as K, ElButton as we } from "element-plus";
6
+ import { CopyDocument as ke, DocumentCopy as _e } from "@element-plus/icons-vue";
7
+ function te(t, e) {
8
+ if (!(e != null && e.length)) return t;
9
+ const n = new Map(
10
+ e.map((r) => [r.key, r])
11
+ );
12
+ return t.map((r) => {
13
+ const i = n.get(r.key);
14
+ return i ? {
15
+ ...r,
16
+ visible: typeof i.visible == "boolean" ? i.visible : r.visible
17
+ } : r;
18
+ });
19
+ }
20
+ function xe(t, e) {
21
+ const { cacheKey: n, storage: r = localStorage } = e || {}, i = n ? r.getItem(n) : null, l = L(
22
+ te(
23
+ t,
24
+ i ? JSON.parse(i) : []
25
+ )
26
+ );
27
+ return R(
28
+ l,
29
+ (s) => {
30
+ if (!n) return;
31
+ const f = s.map((d) => ({
32
+ key: d.key,
33
+ visible: d.visible,
34
+ columnOpts: d.columnOpts
35
+ }));
36
+ r.setItem(
37
+ n,
38
+ JSON.stringify(f)
39
+ );
40
+ },
41
+ { deep: !0 }
42
+ ), {
43
+ /** 当前列配置(响应式) */
44
+ columns: l,
45
+ /**
46
+ * 主动设置列配置
47
+ * 常用于:列设置弹窗 / 拖拽排序完成
48
+ */
49
+ setColumns(s) {
50
+ l.value = te(
51
+ t,
52
+ s
53
+ ), n && r.setItem(
54
+ n,
55
+ JSON.stringify(s)
56
+ );
57
+ },
58
+ /**
59
+ * 重置为默认列配置
60
+ */
61
+ resetColumns() {
62
+ l.value = t, n && r.removeItem(n);
63
+ }
64
+ };
65
+ }
66
+ function Be(t, e = 10, n = []) {
67
+ const i = "*:*:*", l = (c) => {
68
+ if (!c) return !0;
69
+ const g = Array.isArray(c) ? c : [c];
70
+ return n.some(
71
+ (b) => b === i || g.includes(b)
72
+ );
73
+ }, s = S(() => t.some((c) => l(c.permission))), f = S(() => t.filter((g) => l(g.permission)).slice(0, e).reduce(
74
+ (g, b) => g + (b.width ?? 55),
75
+ 0
76
+ )), d = (c, g) => l(c.permission) && (c.visible ? c.visible(g) : !0), h = (c) => t.filter((b) => d(b, c)).slice(0, e).reduce(
77
+ (b, I) => b + (I.width ?? 55),
78
+ 0
79
+ );
80
+ return {
81
+ hasAnyButton: s,
82
+ optWidth: f,
83
+ hasAnyVisibleButton: (c) => c != null && c.length ? c.some(
84
+ (g) => t.some((b) => d(b, g))
85
+ ) : !1,
86
+ getMaxOptWidth: (c) => c != null && c.length ? c.reduce(
87
+ (g, b) => Math.max(g, h(b)),
88
+ 0
89
+ ) : f.value,
90
+ getVisibleButtons: (c) => t.filter((g) => d(g, c)).slice(0, e)
91
+ };
92
+ }
93
+ class Se {
8
94
  constructor() {
9
- I(this, "renderers", /* @__PURE__ */ new Map());
95
+ W(this, "renderers", /* @__PURE__ */ new Map());
10
96
  }
11
97
  register(e, n) {
12
98
  this.renderers.has(e) && process.env.NODE_ENV === "development" && console.debug(`[SmartTable] Renderer "${e}" already registered, skipping.`), this.renderers.set(e, n);
@@ -32,27 +118,27 @@ class ke {
32
118
  return Array.from(this.renderers.keys());
33
119
  }
34
120
  }
35
- let P = null;
36
- function J() {
37
- return P || (P = new ke()), P;
121
+ let D = null;
122
+ function H() {
123
+ return D || (D = new Se()), D;
38
124
  }
39
- function Y(t) {
40
- return O({
125
+ function U(t) {
126
+ return $({
41
127
  props: ["row", "col", "onCellChange", "onCellBlur", "onCellEnter", "onClick"],
42
128
  setup(e) {
43
- return () => f(t, e);
129
+ return () => m(t, e);
44
130
  }
45
131
  });
46
132
  }
47
- function S(t) {
48
- return O({
133
+ function B(t) {
134
+ return $({
49
135
  props: ["row", "col", "onCellChange", "onCellBlur", "onCellEnter", "onClick"],
50
136
  setup(e) {
51
137
  return () => t(e);
52
138
  }
53
139
  });
54
140
  }
55
- function He(t, e) {
141
+ function Ge(t, e) {
56
142
  if (process.env.NODE_ENV !== "production" && e)
57
143
  switch (t) {
58
144
  case "dict":
@@ -90,12 +176,12 @@ function v(t, e) {
90
176
  if (!(!t || !e))
91
177
  return e.split(".").reduce((n, r) => n == null ? void 0 : n[r], t);
92
178
  }
93
- function G(t, e, n) {
179
+ function Y(t, e, n) {
94
180
  if (!t || !e) return;
95
- const r = e.split("."), o = r.pop(), l = r.reduce((i, c) => (i[c] || (i[c] = {}), i[c]), t);
96
- l[o] = n;
181
+ const r = e.split("."), i = r.pop(), l = r.reduce((s, f) => (s[f] || (s[f] = {}), s[f]), t);
182
+ l[i] = n;
97
183
  }
98
- const we = /* @__PURE__ */ O({
184
+ const Ee = /* @__PURE__ */ $({
99
185
  __name: "input",
100
186
  props: {
101
187
  row: {},
@@ -104,29 +190,29 @@ const we = /* @__PURE__ */ O({
104
190
  onCellEnter: { type: Function }
105
191
  },
106
192
  setup(t) {
107
- const e = t, n = R(v(e.row, e.col.key));
108
- z(n, (l) => {
109
- G(e.row, e.col.key, l);
193
+ const e = t, n = L(v(e.row, e.col.key));
194
+ R(n, (l) => {
195
+ Y(e.row, e.col.key, l);
110
196
  });
111
197
  const r = () => {
112
198
  var l;
113
199
  return (l = e.onCellBlur) == null ? void 0 : l.call(e, e.row, e.col);
114
- }, o = () => {
200
+ }, i = () => {
115
201
  var l;
116
202
  return (l = e.onCellEnter) == null ? void 0 : l.call(e, e.row, e.col);
117
203
  };
118
- return (l, i) => {
119
- const c = M("el-input");
120
- return h(), _(c, B({
204
+ return (l, s) => {
205
+ const f = O("el-input");
206
+ return y(), w(f, x({
121
207
  modelValue: n.value,
122
- "onUpdate:modelValue": i[0] || (i[0] = (d) => n.value = d)
208
+ "onUpdate:modelValue": s[0] || (s[0] = (d) => n.value = d)
123
209
  }, { placeholder: "", size: "small", clearable: !0, ...t.col.renderProps }, {
124
210
  onBlur: r,
125
- onKeyup: U(o, ["enter"])
211
+ onKeyup: J(i, ["enter"])
126
212
  }), null, 16, ["modelValue"]);
127
213
  };
128
214
  }
129
- }), _e = /* @__PURE__ */ O({
215
+ }), Te = /* @__PURE__ */ $({
130
216
  __name: "inputNumber",
131
217
  props: {
132
218
  row: {},
@@ -136,30 +222,30 @@ const we = /* @__PURE__ */ O({
136
222
  onCellEnter: { type: Function }
137
223
  },
138
224
  setup(t) {
139
- const e = t, n = R(v(e.row, e.col.key));
140
- z(n, (l) => {
141
- var i;
142
- G(e.row, e.col.key, l), (i = e.onCellChange) == null || i.call(e, e.row, e.col);
225
+ const e = t, n = L(v(e.row, e.col.key));
226
+ R(n, (l) => {
227
+ var s;
228
+ Y(e.row, e.col.key, l), (s = e.onCellChange) == null || s.call(e, e.row, e.col);
143
229
  });
144
230
  const r = () => {
145
231
  var l;
146
232
  return (l = e.onCellBlur) == null ? void 0 : l.call(e, e.row, e.col);
147
- }, o = () => {
233
+ }, i = () => {
148
234
  var l;
149
235
  return (l = e.onCellEnter) == null ? void 0 : l.call(e, e.row, e.col);
150
236
  };
151
- return (l, i) => {
152
- const c = M("el-input-number");
153
- return h(), _(c, B({
237
+ return (l, s) => {
238
+ const f = O("el-input-number");
239
+ return y(), w(f, x({
154
240
  modelValue: n.value,
155
- "onUpdate:modelValue": i[0] || (i[0] = (d) => n.value = d)
241
+ "onUpdate:modelValue": s[0] || (s[0] = (d) => n.value = d)
156
242
  }, { min: 0, max: 99999, controls: !1, size: "small", ...t.col.renderProps }, {
157
243
  onBlur: r,
158
- onKeyup: U(o, ["enter"])
244
+ onKeyup: J(i, ["enter"])
159
245
  }), null, 16, ["modelValue"]);
160
246
  };
161
247
  }
162
- }), xe = /* @__PURE__ */ O({
248
+ }), Ve = /* @__PURE__ */ $({
163
249
  __name: "select",
164
250
  props: {
165
251
  row: {},
@@ -169,37 +255,37 @@ const we = /* @__PURE__ */ O({
169
255
  onCellEnter: { type: Function }
170
256
  },
171
257
  setup(t) {
172
- const e = t, n = R(v(e.row, e.col.key));
173
- z(n, (i) => {
174
- G(e.row, e.col.key, i);
258
+ const e = t, n = L(v(e.row, e.col.key));
259
+ R(n, (s) => {
260
+ Y(e.row, e.col.key, s);
175
261
  });
176
262
  const r = () => {
177
- var i;
178
- return (i = e.onCellChange) == null ? void 0 : i.call(e, e.row, e.col);
179
- }, o = () => {
180
- var i;
181
- return (i = e.onCellBlur) == null ? void 0 : i.call(e, e.row, e.col);
263
+ var s;
264
+ return (s = e.onCellChange) == null ? void 0 : s.call(e, e.row, e.col);
265
+ }, i = () => {
266
+ var s;
267
+ return (s = e.onCellBlur) == null ? void 0 : s.call(e, e.row, e.col);
182
268
  }, l = () => {
183
- var i;
184
- return (i = e.onCellEnter) == null ? void 0 : i.call(e, e.row, e.col);
269
+ var s;
270
+ return (s = e.onCellEnter) == null ? void 0 : s.call(e, e.row, e.col);
185
271
  };
186
- return (i, c) => {
187
- const d = M("el-option"), g = M("el-select");
188
- return h(), _(g, B({
272
+ return (s, f) => {
273
+ const d = O("el-option"), h = O("el-select");
274
+ return y(), w(h, x({
189
275
  modelValue: n.value,
190
- "onUpdate:modelValue": c[0] || (c[0] = (b) => n.value = b)
276
+ "onUpdate:modelValue": f[0] || (f[0] = (k) => n.value = k)
191
277
  }, { placeholder: "请选择", size: "small", clearable: !0, ...t.col.renderProps }, {
192
278
  onChange: r,
193
- onBlur: o,
194
- onKeyup: U(l, ["enter"])
279
+ onBlur: i,
280
+ onKeyup: J(l, ["enter"])
195
281
  }), {
196
- default: A(() => {
197
- var b;
282
+ default: V(() => {
283
+ var k;
198
284
  return [
199
- (h(!0), K(H, null, L(((b = t.col.renderProps) == null ? void 0 : b.options) || [], (m) => (h(), _(d, {
200
- key: m.value,
201
- label: m.label,
202
- value: m.value
285
+ (y(!0), A(F, null, M(((k = t.col.renderProps) == null ? void 0 : k.options) || [], (E) => (y(), w(d, {
286
+ key: E.value,
287
+ label: E.label,
288
+ value: E.value
203
289
  }, null, 8, ["label", "value"]))), 128))
204
290
  ];
205
291
  }),
@@ -207,9 +293,9 @@ const we = /* @__PURE__ */ O({
207
293
  }, 16, ["modelValue"]);
208
294
  };
209
295
  }
210
- }), Be = Y(we), Se = Y(_e), Ee = Y(xe), Te = S((t) => {
296
+ }), Ae = U(Ee), Me = U(Te), Oe = U(Ve), Fe = B((t) => {
211
297
  const e = t.col.renderProps || {}, n = v(t.row, t.col.key);
212
- return f(Ce, {
298
+ return m(we, {
213
299
  type: e.type || "primary",
214
300
  ...e,
215
301
  onClick: () => {
@@ -217,22 +303,22 @@ const we = /* @__PURE__ */ O({
217
303
  return (r = t.onClick) == null ? void 0 : r.call(t, t.row, t.col);
218
304
  }
219
305
  }, () => e.label || n);
220
- }), Ve = S((t) => {
306
+ }), Re = B((t) => {
221
307
  const e = t.col.renderProps || {}, n = v(t.row, t.col.key);
222
- return f("a", {
308
+ return m("a", {
223
309
  href: e.href || "#",
224
310
  target: e.blank ? "_blank" : "_self",
225
311
  style: e.style || "color:#409EFF;cursor:pointer;"
226
312
  }, e.label || n);
227
- }), Ae = S((t) => {
313
+ }), $e = B((t) => {
228
314
  var n;
229
315
  const e = v(t.row, t.col.key);
230
- return f("div", {
316
+ return m("div", {
231
317
  class: "line-clamp-2",
232
318
  innerHTML: e ?? "",
233
319
  ...((n = t.col) == null ? void 0 : n.renderProps) || {}
234
320
  });
235
- }), Me = S((t) => {
321
+ }), ze = B((t) => {
236
322
  const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps ?? {}, r = {
237
323
  position: "absolute",
238
324
  right: "-5px",
@@ -243,7 +329,7 @@ const we = /* @__PURE__ */ O({
243
329
  "font-size": "12px",
244
330
  color: n.iconColor || "#409EFF",
245
331
  "user-select": "none"
246
- }, o = {
332
+ }, i = {
247
333
  "padding-right": "10px",
248
334
  display: "-webkit-box",
249
335
  "-webkit-box-orient": "vertical",
@@ -251,19 +337,19 @@ const we = /* @__PURE__ */ O({
251
337
  overflow: "hidden",
252
338
  ...n.textStyles
253
339
  };
254
- return f(
340
+ return m(
255
341
  "div",
256
342
  {
257
343
  class: "st_copy_wrapper",
258
344
  style: "width: 100%; position: relative; display: inline-block;"
259
345
  },
260
346
  [
261
- f("span", {
347
+ m("span", {
262
348
  class: `st_copy_text ${n.textClass ?? ""}`,
263
- style: o,
349
+ style: i,
264
350
  title: e
265
351
  }, e),
266
- e && f("span", {
352
+ e && m("span", {
267
353
  class: "st_copy_btn",
268
354
  style: r,
269
355
  title: n.copyTitle || "复制",
@@ -272,309 +358,125 @@ const we = /* @__PURE__ */ O({
272
358
  try {
273
359
  if (navigator.clipboard && navigator.clipboard.writeText)
274
360
  navigator.clipboard.writeText(e).then(() => {
275
- $.success(n.successText ?? "复制成功");
361
+ K.success(n.successText ?? "复制成功");
276
362
  }).catch(() => {
277
- $.error(n.errorText ?? "复制失败");
363
+ K.error(n.errorText ?? "复制失败");
278
364
  });
279
365
  else {
280
366
  const l = document.createElement("textarea");
281
367
  l.value = e, l.style.position = "fixed", l.style.opacity = "0", document.body.appendChild(l), l.select();
282
- const i = document.execCommand("copy");
283
- document.body.removeChild(l), i ? $.success(n.successText ?? "复制成功") : $.error(n.errorText ?? "复制失败");
368
+ const s = document.execCommand("copy");
369
+ document.body.removeChild(l), s ? K.success(n.successText ?? "复制成功") : K.error(n.errorText ?? "复制失败");
284
370
  }
285
371
  } catch {
286
- $.error(n.errorText ?? "复制失败");
372
+ K.error(n.errorText ?? "复制失败");
287
373
  }
288
374
  }
289
- }, [f(ve, {
375
+ }, [m(_e, {
290
376
  style: "width: 1em; height: 1em;"
291
377
  })])
292
378
  ].filter(Boolean)
293
379
  );
294
- }), Oe = S((t) => {
295
- var i;
296
- const e = v(t.row, t.col.key) ?? "", n = ((i = t.col) == null ? void 0 : i.renderProps) || {}, o = e ? Array.isArray(e) ? e.filter((c) => c && typeof c == "string") : [e] : [];
297
- if (o.length === 0)
380
+ }), Ke = B((t) => {
381
+ var s;
382
+ const e = v(t.row, t.col.key) ?? "", n = ((s = t.col) == null ? void 0 : s.renderProps) || {}, i = e ? Array.isArray(e) ? e.filter((f) => f && typeof f == "string") : [e] : [];
383
+ if (i.length === 0)
298
384
  return n.placeholder || "";
299
385
  const l = {
300
386
  width: n.width || "80px",
301
387
  height: n.height || "80px",
302
- marginRight: o.length > 1 ? "4px" : "0",
388
+ marginRight: i.length > 1 ? "4px" : "0",
303
389
  ...n.style || {}
304
390
  };
305
- return o.length === 1 ? f(q, {
306
- src: o[0],
307
- previewSrcList: n.previewSrcList || o,
391
+ return i.length === 1 ? m(q, {
392
+ src: i[0],
393
+ previewSrcList: n.previewSrcList || i,
394
+ previewTeleported: !0,
308
395
  fit: n.fit || "contain",
309
396
  style: l,
310
397
  ...n
311
- }) : f(
398
+ }) : m(
312
399
  "div",
313
400
  {
314
401
  class: "st_img_wrapper",
315
402
  style: "display: flex; align-items: center; position: relative"
316
403
  },
317
404
  [
318
- f(q, {
319
- src: o[0],
320
- previewSrcList: n.previewSrcList || o,
405
+ m(q, {
406
+ src: i[0],
407
+ previewSrcList: n.previewSrcList || i,
408
+ previewTeleported: !0,
321
409
  fit: n.fit || "contain",
322
410
  style: l,
323
411
  ...n
324
412
  }),
325
- o.length > 1 && f("span", {
413
+ i.length > 1 && m("span", {
326
414
  class: "st_img_total",
327
415
  style: "position: absolute; top: 0; right: 0; ",
328
- title: `${o.length}`
329
- }, [f(be, { style: "width: 1em; height: 1em; " })])
416
+ title: `${i.length}`
417
+ }, [m(ke, { style: "width: 1em; height: 1em; " })])
330
418
  ]
331
419
  );
332
- }), $e = S((t) => {
333
- const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps || {}, r = n.options ?? [], o = n.showValue ?? !1;
420
+ }), Le = B((t) => {
421
+ const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps || {}, r = n.options ?? [], i = n.showValue ?? !1;
334
422
  if (e == null || e === "") return "";
335
- const l = Array.isArray(e) ? e.map(String) : [String(e)], i = r.filter((g) => l.includes(String(g.value))), c = l.filter((g) => !r.some((b) => String(b.value) === g)), d = i.map((g, b) => f(
336
- he,
337
- { key: g.value, type: g.listClass, class: g.cssClass, disableTransitions: !0 },
338
- { default: () => g.label + " " }
423
+ const l = Array.isArray(e) ? e.map(String) : [String(e)], s = r.filter((h) => l.includes(String(h.value))), f = l.filter((h) => !r.some((k) => String(k.value) === h)), d = s.map((h, k) => m(
424
+ Ce,
425
+ { key: h.value, type: h.listClass, class: h.cssClass, disableTransitions: !0 },
426
+ { default: () => h.label + " " }
339
427
  ));
340
- return o && c.length > 0 && d.push(f("span", {}, c.join(" "))), f("div", {}, d);
341
- }), Fe = S((t) => {
428
+ return i && f.length > 0 && d.push(m("span", {}, f.join(" "))), m("div", {}, d);
429
+ }), Ie = B((t) => {
342
430
  var r;
343
431
  const e = v(t.row, t.col.key) ?? "", n = ((r = t.col.renderProps) == null ? void 0 : r.options) ?? {};
344
432
  return e != null ? n[e] ?? "" : "";
345
433
  });
346
- function Re(t) {
434
+ function Ne(t) {
347
435
  return typeof t.formatter == "function";
348
436
  }
349
- const ze = S((t) => {
350
- var o;
437
+ const We = B((t) => {
438
+ var i;
351
439
  const { col: e, row: n } = t, r = v(t.row, t.col.key) ?? "";
352
- return Re(e) ? (o = e.formatter) == null ? void 0 : o.call(e, r, n) : r ?? "";
353
- }), Ke = S((t) => {
440
+ return Ne(e) ? (i = e.formatter) == null ? void 0 : i.call(e, r, n) : r ?? "";
441
+ }), Pe = B((t) => {
354
442
  const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps || {};
355
- return e ? /^https?:\/\//.test(e) ? f(q, {
443
+ return e ? /^https?:\/\//.test(e) ? m(q, {
356
444
  src: e,
357
445
  previewSrcList: [e],
446
+ previewTeleported: !0,
358
447
  fit: "contain",
359
448
  style: "width:40px;height:40px",
360
449
  ...n
361
- }) : /^\s*<svg[\s\S]*<\/svg>\s*$/.test(e) ? f("div", {
450
+ }) : /^\s*<svg[\s\S]*<\/svg>\s*$/.test(e) ? m("div", {
362
451
  innerHTML: e,
363
452
  style: `width:40px;height:40px;display:inline-block;${n.style || ""}`,
364
453
  ...n
365
- }) : f("i", {
454
+ }) : m("i", {
366
455
  class: e,
367
456
  style: `font-size:20px;${n.style || ""}`,
368
457
  ...n
369
458
  }) : "";
370
- }), le = {
371
- input: Be,
372
- "input-number": Se,
373
- select: Ee,
374
- button: Te,
375
- link: Ve,
376
- html: Ae,
377
- copy: Me,
378
- img: Oe,
379
- dict: $e,
380
- map: Fe,
381
- formatter: ze,
382
- icon: Ke
459
+ }), re = {
460
+ input: Ae,
461
+ "input-number": Me,
462
+ select: Oe,
463
+ button: Fe,
464
+ link: Re,
465
+ html: $e,
466
+ copy: ze,
467
+ img: Ke,
468
+ dict: Le,
469
+ map: Ie,
470
+ formatter: We,
471
+ icon: Pe
383
472
  };
384
- function Le(t) {
385
- t.registerMultiple(le);
386
- }
387
- function Ye() {
388
- return le;
389
- }
390
- function Ne(t, e = 10, n = []) {
391
- const o = "*:*:*", l = (s) => {
392
- if (!s) return !0;
393
- const y = Array.isArray(s) ? s : [s];
394
- return n.some(
395
- (p) => p === o || y.includes(p)
396
- );
397
- }, i = F(() => t.some((s) => l(s.permission))), c = F(() => t.filter((y) => l(y.permission)).slice(0, e).reduce(
398
- (y, p) => y + (p.width ?? 60),
399
- 0
400
- )), d = (s, y) => l(s.permission) && (s.visible ? s.visible(y) : !0), g = (s) => t.filter((p) => d(p, s)).slice(0, e).reduce(
401
- (p, E) => p + (E.width ?? 60),
402
- 0
403
- );
404
- return {
405
- hasAnyButton: i,
406
- optWidth: c,
407
- hasAnyVisibleButton: (s) => s != null && s.length ? s.some(
408
- (y) => t.some((p) => d(p, y))
409
- ) : !1,
410
- getMaxOptWidth: (s) => s != null && s.length ? s.reduce(
411
- (y, p) => Math.max(y, g(p)),
412
- 0
413
- ) : c.value,
414
- getVisibleButtons: (s) => t.filter((y) => d(y, s)).slice(0, e)
415
- };
416
- }
417
- const De = ["title"], Ie = /* @__PURE__ */ O({
418
- __name: "index",
419
- props: {
420
- col: { type: Object, required: !0 },
421
- permissions: { type: Array, default: () => [] },
422
- pagination: { type: Object, default: () => ({}) }
423
- },
424
- emits: ["cellBlur", "cellEnter", "cellChange", "cellClick"],
425
- setup(t, { emit: e }) {
426
- const n = t, r = e, o = (u) => {
427
- var T, w;
428
- const C = (T = n.pagination) == null ? void 0 : T.page, x = (w = n.pagination) == null ? void 0 : w.size;
429
- return C && x ? (C - 1) * x + u + 1 : u + 1;
430
- }, { col: l } = ae(n), i = (u, C) => r("cellChange", u, C), c = (u, C) => r("cellBlur", u, C), d = (u, C) => r("cellEnter", u, C), g = (u, C) => r("cellClick", u, C);
431
- Le(J());
432
- const b = F(() => {
433
- const u = J(), C = {};
434
- return u.names().forEach((x) => {
435
- const T = u.get(x);
436
- T && (C[x] = T);
437
- }), C;
438
- }), {
439
- hasAnyButton: m,
440
- hasAnyVisibleButton: k,
441
- optWidth: s,
442
- getMaxOptWidth: y,
443
- getVisibleButtons: p
444
- } = Ne(
445
- l.value.buttons || [],
446
- l.value.maxbtn ?? 10,
447
- n.permissions || []
448
- ), E = F(() => (l.value.buttons || []).length ? (l.value.__rows || []).length ? k(l.value.__rows || []) : m.value : !1), N = F(() => l.value.__rows ? y(l.value.__rows) : s.value);
449
- function oe(u) {
450
- return !(u.type === "selection" || u.type === "index" || u.type === "operation" && !E.value || u.visible === !1);
451
- }
452
- return (u, C) => {
453
- const x = M("el-table-column"), T = M("el-button");
454
- return a(l).type === "selection" ? (h(), _(x, B({
455
- key: 0,
456
- type: "selection"
457
- }, a(l).columnProps), null, 16)) : a(l).type === "index" ? (h(), _(x, B({
458
- key: 1,
459
- type: "index",
460
- label: a(l).label || "#",
461
- align: "center"
462
- }, a(l).columnProps), {
463
- default: A(({ $index: w }) => [
464
- Z(W(o(w)), 1)
465
- ]),
466
- _: 1
467
- }, 16, ["label"])) : a(l).type === "operation" && E.value ? (h(), _(x, B({
468
- key: 2,
469
- label: a(l).label || "操作",
470
- align: "center"
471
- }, {
472
- ...a(l).columnProps,
473
- width: N.value
474
- }), {
475
- default: A(({ row: w }) => [
476
- (h(!0), K(H, null, L(a(p)(w), (V) => (h(), _(T, {
477
- key: V.label,
478
- type: V.type || "primary",
479
- link: "",
480
- onClick: (D) => V.action(w)
481
- }, {
482
- default: A(() => [
483
- Z(W(V.label), 1)
484
- ]),
485
- _: 2
486
- }, 1032, ["type", "onClick"]))), 128))
487
- ]),
488
- _: 1
489
- }, 16, ["label"])) : oe(a(l)) ? (h(), _(x, B({
490
- key: 3,
491
- label: a(l).label,
492
- align: "center"
493
- }, a(l).columnProps || {}), {
494
- default: A((w) => {
495
- var V, D, Q, X;
496
- return [
497
- a(l).render === "slot" && u.$slots[((V = a(l)) == null ? void 0 : V.slot) || a(l).key] ? ne(u.$slots, ((D = a(l)) == null ? void 0 : D.slot) || a(l).key, ue(B({ key: 0 }, w))) : a(l).render && b.value[a(l).render] ? (h(), _(de(b.value[a(l).render]), {
498
- key: 1,
499
- row: w.row,
500
- col: a(l),
501
- onCellChange: i,
502
- onCellBlur: c,
503
- onCellEnter: d,
504
- onClick: g
505
- }, null, 40, ["row", "col"])) : (h(), K("span", {
506
- key: 2,
507
- style: fe(((Q = a(l).renderProps) == null ? void 0 : Q.style) || ""),
508
- class: me(((X = a(l).renderProps) == null ? void 0 : X.class) || ""),
509
- title: a(v)(w.row, a(l).key)
510
- }, W(a(v)(w.row, a(l).key)), 15, De))
511
- ];
512
- }),
513
- _: 3
514
- }, 16, ["label"])) : ce("", !0);
515
- };
516
- }
517
- });
518
- function ee(t, e) {
519
- if (!(e != null && e.length)) return t;
520
- const n = new Map(
521
- e.map((r) => [r.key, r])
522
- );
523
- return t.map((r) => {
524
- const o = n.get(r.key);
525
- return o ? {
526
- ...r,
527
- visible: typeof o.visible == "boolean" ? o.visible : r.visible
528
- } : r;
529
- });
473
+ function De(t) {
474
+ t.registerMultiple(re);
530
475
  }
531
- function We(t, e) {
532
- const { cacheKey: n, storage: r = localStorage } = e || {}, o = n ? r.getItem(n) : null, l = R(
533
- ee(
534
- t,
535
- o ? JSON.parse(o) : []
536
- )
537
- );
538
- return z(
539
- l,
540
- (i) => {
541
- if (!n) return;
542
- const c = i.map((d) => ({
543
- key: d.key,
544
- visible: d.visible,
545
- columnOpts: d.columnOpts
546
- }));
547
- r.setItem(
548
- n,
549
- JSON.stringify(c)
550
- );
551
- },
552
- { deep: !0 }
553
- ), {
554
- /** 当前列配置(响应式) */
555
- columns: l,
556
- /**
557
- * 主动设置列配置
558
- * 常用于:列设置弹窗 / 拖拽排序完成
559
- */
560
- setColumns(i) {
561
- l.value = ee(
562
- t,
563
- i
564
- ), n && r.setItem(
565
- n,
566
- JSON.stringify(i)
567
- );
568
- },
569
- /**
570
- * 重置为默认列配置
571
- */
572
- resetColumns() {
573
- l.value = t, n && r.removeItem(n);
574
- }
575
- };
476
+ function Qe() {
477
+ return re;
576
478
  }
577
- const Ge = /* @__PURE__ */ O({
479
+ const je = ["title"], Xe = /* @__PURE__ */ $({
578
480
  __name: "index",
579
481
  props: {
580
482
  data: { type: Array, default: () => [] },
@@ -596,59 +498,165 @@ const Ge = /* @__PURE__ */ O({
596
498
  "cell-click"
597
499
  ],
598
500
  setup(t, { expose: e, emit: n }) {
599
- const r = t, o = n, { columns: l } = We(r.columns, {
501
+ const r = t, i = n, { columns: l } = xe(r.columns, {
600
502
  cacheKey: r.cacheKey ?? ""
601
503
  });
602
- z(
504
+ R(
603
505
  l,
604
- (m) => o("update:columns", m),
506
+ (o) => i("update:columns", o),
507
+ { deep: !0, immediate: !0 }
508
+ ), R(
509
+ () => r.data,
510
+ (o) => {
511
+ o && l.value.forEach((a) => {
512
+ a.type === "operation" && (a.__rows = o);
513
+ });
514
+ },
605
515
  { deep: !0, immediate: !0 }
606
516
  );
607
- const i = (m, k) => o("cellChange", m, k), c = (m, k) => {
608
- o("cellBlur", m, k);
609
- }, d = (m, k) => {
610
- console.log("enter"), o("cellEnter", m, k);
611
- }, g = (m, k) => {
612
- k && o("cell-click", m, k);
613
- }, b = R();
517
+ const s = S(
518
+ () => l.value.filter((o) => o.type === "selection")
519
+ ), f = S(
520
+ () => l.value.filter((o) => o.type === "index")
521
+ ), d = S(
522
+ () => l.value.filter((o) => o.type === "operation")
523
+ ), h = S(
524
+ () => l.value.filter((o) => !(o.type === "selection" || o.type === "index" || o.type === "operation" || o.visible === !1))
525
+ ), k = (o) => {
526
+ var _, z;
527
+ const a = (_ = r.pagination) == null ? void 0 : _.page, p = (z = r.pagination) == null ? void 0 : z.size;
528
+ return a && p ? (a - 1) * p + o + 1 : o + 1;
529
+ };
530
+ De(H());
531
+ const E = S(() => {
532
+ const o = H(), a = {};
533
+ return o.names().forEach((p) => {
534
+ const _ = o.get(p);
535
+ _ && (a[p] = _);
536
+ }), a;
537
+ }), G = S(() => {
538
+ const o = /* @__PURE__ */ new Map();
539
+ return d.value.forEach((a) => {
540
+ const p = Be(
541
+ a.buttons || [],
542
+ a.maxbtn ?? 10,
543
+ r.permissions || []
544
+ );
545
+ o.set(a.key, p);
546
+ }), o;
547
+ }), c = (o) => G.value.get(o.key), g = (o) => {
548
+ const a = c(o);
549
+ return a ? o.__rows ? a.getMaxOptWidth(o.__rows) : a.optWidth.value : 0;
550
+ }, b = (o, a) => {
551
+ const p = c(o);
552
+ return p ? (o.buttons || []).length ? ((o.__rows || []).length, p.getVisibleButtons(a)) : [] : [];
553
+ }, I = () => d.value.filter((o) => {
554
+ const a = c(o);
555
+ return !a || !(o.buttons || []).length ? !1 : (o.__rows || []).length ? a.hasAnyVisibleButton(o.__rows || []) : a.hasAnyButton.value;
556
+ }), oe = (o, a) => {
557
+ i("cellChange", o, a);
558
+ }, ie = (o, a) => {
559
+ i("cellBlur", o, a);
560
+ }, se = (o, a) => {
561
+ i("cellEnter", o, a);
562
+ }, ae = (o, a) => {
563
+ a && i("cell-click", o, a);
564
+ }, Q = L();
614
565
  return e({
615
- tableRef: b
616
- }), (m, k) => {
617
- const s = M("el-table"), y = ye("loading");
618
- return pe((h(), _(s, B({
566
+ tableRef: Q
567
+ }), (o, a) => {
568
+ const p = O("el-table-column"), _ = O("el-button"), z = O("el-table"), ue = de("loading");
569
+ return me((y(), w(z, x({
619
570
  ref_key: "tableRef",
620
- ref: b
621
- }, m.$attrs, {
571
+ ref: Q
572
+ }, o.$attrs, {
622
573
  data: t.data,
623
574
  "row-key": t.rowKey,
624
575
  class: "smart_table"
625
- }), {
626
- default: A(() => [
627
- (h(!0), K(H, null, L(a(l), (p) => (h(), _(Ie, {
628
- key: p.key,
629
- col: p,
630
- permissions: t.permissions,
631
- pagination: t.pagination,
632
- onCellChange: i,
633
- onCellBlur: c,
634
- onCellEnter: d,
635
- onCellClick: g
636
- }, ge({ _: 2 }, [
637
- L(a(l), (E) => ({
638
- name: E.key,
639
- fn: A((N) => [
640
- ne(m.$slots, E.key, B({ ref_for: !0 }, N))
641
- ])
642
- }))
643
- ]), 1032, ["col", "permissions", "pagination"]))), 128))
576
+ }), ye({
577
+ default: V(() => [
578
+ (y(!0), A(F, null, M(s.value, (u) => (y(), w(p, x({
579
+ key: "selection",
580
+ type: "selection"
581
+ }, { ref_for: !0 }, u.columnProps), null, 16))), 128)),
582
+ (y(!0), A(F, null, M(f.value, (u) => (y(), w(p, x({
583
+ key: "index",
584
+ type: "index",
585
+ label: u.label || "#",
586
+ align: "center"
587
+ }, { ref_for: !0 }, u.columnProps), {
588
+ default: V(({ $index: C }) => [
589
+ X(P(k(C)), 1)
590
+ ]),
591
+ _: 1
592
+ }, 16, ["label"]))), 128)),
593
+ (y(!0), A(F, null, M(I(), (u) => (y(), w(p, x({
594
+ key: u.key,
595
+ label: u.label || "操作",
596
+ align: "center"
597
+ }, { ref_for: !0 }, {
598
+ ...u.columnProps,
599
+ width: g(u)
600
+ }), {
601
+ default: V(({ row: C }) => [
602
+ (y(!0), A(F, null, M(b(u, C), (T) => (y(), w(_, {
603
+ key: T.label,
604
+ type: T.type || "primary",
605
+ link: "",
606
+ onClick: (N) => T.action(C)
607
+ }, {
608
+ default: V(() => [
609
+ X(P(T.label), 1)
610
+ ]),
611
+ _: 2
612
+ }, 1032, ["type", "onClick"]))), 128))
613
+ ]),
614
+ _: 2
615
+ }, 1040, ["label"]))), 128)),
616
+ (y(!0), A(F, null, M(h.value, (u) => (y(), w(p, x({
617
+ key: u.key,
618
+ label: u.label,
619
+ align: "center"
620
+ }, { ref_for: !0 }, u.columnProps || {}), {
621
+ default: V((C) => {
622
+ var T, N;
623
+ return [
624
+ u.render === "slot" ? Z(o.$slots, (u == null ? void 0 : u.slot) || u.key, x({
625
+ key: 0,
626
+ ref_for: !0
627
+ }, C)) : u.render && E.value[u.render] ? (y(), w(pe(E.value[u.render]), {
628
+ key: 1,
629
+ row: C.row,
630
+ col: u,
631
+ onCellChange: oe,
632
+ onCellBlur: ie,
633
+ onCellEnter: se,
634
+ onClick: ae
635
+ }, null, 40, ["row", "col"])) : (y(), A("span", {
636
+ key: 2,
637
+ style: he(((T = u.renderProps) == null ? void 0 : T.style) || ""),
638
+ class: ge(((N = u.renderProps) == null ? void 0 : N.class) || ""),
639
+ title: ee(v)(C.row, u.key)
640
+ }, P(ee(v)(C.row, u.key)), 15, je))
641
+ ];
642
+ }),
643
+ _: 2
644
+ }, 1040, ["label"]))), 128))
644
645
  ]),
645
- _: 3
646
- }, 16, ["data", "row-key"])), [
647
- [y, t.loading]
646
+ _: 2
647
+ }, [
648
+ M(h.value, (u) => ({
649
+ name: u.key,
650
+ fn: V((C) => [
651
+ Z(o.$slots, u.key, be(ve(C)))
652
+ ])
653
+ }))
654
+ ]), 1040, ["data", "row-key"])), [
655
+ [ue, t.loading]
648
656
  ]);
649
657
  };
650
658
  }
651
- }), te = {
659
+ }), ne = {
652
660
  defaultPagination: {
653
661
  page: 1,
654
662
  size: 10,
@@ -657,9 +665,9 @@ const Ge = /* @__PURE__ */ O({
657
665
  defaultTableProps: {},
658
666
  defaultColumnProps: {}
659
667
  };
660
- class Pe {
668
+ class qe {
661
669
  constructor() {
662
- I(this, "config", { ...te });
670
+ W(this, "config", { ...ne });
663
671
  }
664
672
  /**
665
673
  * 获取所有配置
@@ -671,7 +679,7 @@ class Pe {
671
679
  * 设置配置
672
680
  */
673
681
  setConfig(e) {
674
- this.config = this.mergeConfig(this.config, e), e.renderers && J().registerMultiple(e.renderers);
682
+ this.config = this.mergeConfig(this.config, e), e.renderers && H().registerMultiple(e.renderers);
675
683
  }
676
684
  /**
677
685
  * 获取特定配置项
@@ -683,46 +691,46 @@ class Pe {
683
691
  * 重置为默认配置
684
692
  */
685
693
  reset() {
686
- this.config = { ...te };
694
+ this.config = { ...ne };
687
695
  }
688
696
  /**
689
697
  * 深度合并配置
690
698
  */
691
699
  mergeConfig(e, n) {
692
700
  const r = { ...e };
693
- for (const o in n)
694
- n[o] && typeof n[o] == "object" && !Array.isArray(n[o]) ? r[o] = this.mergeConfig(e[o] || {}, n[o]) : r[o] = n[o];
701
+ for (const i in n)
702
+ n[i] && typeof n[i] == "object" && !Array.isArray(n[i]) ? r[i] = this.mergeConfig(e[i] || {}, n[i]) : r[i] = n[i];
695
703
  return r;
696
704
  }
697
705
  }
698
706
  let j = null;
699
- function re() {
700
- return j || (j = new Pe()), j;
707
+ function le() {
708
+ return j || (j = new qe()), j;
701
709
  }
702
- function Qe(t) {
703
- re().setConfig(t);
710
+ function Ze(t) {
711
+ le().setConfig(t);
704
712
  }
705
- function Xe() {
706
- return re().getConfig();
713
+ function et() {
714
+ return le().getConfig();
707
715
  }
708
- function Ze(t, e) {
716
+ function tt(t, e) {
709
717
  return {
710
718
  key: t,
711
719
  ...e
712
720
  };
713
721
  }
714
722
  export {
715
- Ge as SmartTable,
716
- le as builtInRenderers,
717
- S as createFunctionalRenderer,
718
- Ye as createRenderer,
719
- Ge as default,
720
- Ze as defineColumn,
721
- J as getRendererManager,
722
- Xe as getSmartTableConfig,
723
- Le as registerBuiltInRenderers,
724
- Qe as setSmartTableConfig,
725
- He as validateRendererProps,
726
- Y as wrapSFCComponent
723
+ Xe as SmartTable,
724
+ re as builtInRenderers,
725
+ B as createFunctionalRenderer,
726
+ Qe as createRenderer,
727
+ Xe as default,
728
+ tt as defineColumn,
729
+ H as getRendererManager,
730
+ et as getSmartTableConfig,
731
+ De as registerBuiltInRenderers,
732
+ Ze as setSmartTableConfig,
733
+ Ge as validateRendererProps,
734
+ U as wrapSFCComponent
727
735
  };
728
736
  //# sourceMappingURL=vue3-smart-table.es.js.map