vue3-smart-table 1.0.3 → 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,19 +1,105 @@
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);
13
99
  }
14
100
  registerMultiple(e) {
15
- Object.entries(e).forEach(([n, o]) => {
16
- this.renderers.has(n) || this.renderers.set(n, o);
101
+ Object.entries(e).forEach(([n, r]) => {
102
+ this.renderers.has(n) || this.renderers.set(n, r);
17
103
  });
18
104
  }
19
105
  get(e) {
@@ -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 E(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":
@@ -88,14 +174,14 @@ function He(t, e) {
88
174
  }
89
175
  function v(t, e) {
90
176
  if (!(!t || !e))
91
- return e.split(".").reduce((n, o) => n == null ? void 0 : n[o], t);
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 o = e.split("."), r = o.pop(), l = o.reduce((i, c) => (i[c] || (i[c] = {}), i[c]), t);
96
- l[r] = 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
- const o = () => {
197
+ const r = () => {
112
198
  var l;
113
199
  return (l = e.onCellBlur) == null ? void 0 : l.call(e, e.row, e.col);
114
- }, r = () => {
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
- onBlur: o,
125
- onKeyup: U(r, ["enter"])
210
+ onBlur: r,
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
- const o = () => {
230
+ const r = () => {
145
231
  var l;
146
232
  return (l = e.onCellBlur) == null ? void 0 : l.call(e, e.row, e.col);
147
- }, r = () => {
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
- onBlur: o,
158
- onKeyup: U(r, ["enter"])
243
+ onBlur: r,
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
- const o = () => {
177
- var i;
178
- return (i = e.onCellChange) == null ? void 0 : i.call(e, e.row, e.col);
179
- }, r = () => {
180
- var i;
181
- return (i = e.onCellBlur) == null ? void 0 : i.call(e, e.row, e.col);
262
+ const r = () => {
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
- onChange: o,
193
- onBlur: r,
194
- onKeyup: U(l, ["enter"])
278
+ onChange: r,
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,33 +293,33 @@ const we = /* @__PURE__ */ O({
207
293
  }, 16, ["modelValue"]);
208
294
  };
209
295
  }
210
- }), Be = Y(we), Ee = Y(_e), Se = Y(xe), Te = E((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: () => {
216
- var o;
217
- return (o = t.onClick) == null ? void 0 : o.call(t, t.row, t.col);
302
+ var r;
303
+ return (r = t.onClick) == null ? void 0 : r.call(t, t.row, t.col);
218
304
  }
219
305
  }, () => e.label || n);
220
- }), Ve = E((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 = E((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 = E((t) => {
236
- const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps ?? {}, o = {
321
+ }), ze = B((t) => {
322
+ const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps ?? {}, r = {
237
323
  position: "absolute",
238
324
  right: "-5px",
239
325
  top: "50%",
@@ -243,330 +329,154 @@ const we = /* @__PURE__ */ O({
243
329
  "font-size": "12px",
244
330
  color: n.iconColor || "#409EFF",
245
331
  "user-select": "none"
332
+ }, i = {
333
+ "padding-right": "10px",
334
+ display: "-webkit-box",
335
+ "-webkit-box-orient": "vertical",
336
+ "-webkit-line-clamp": n.lineClamp ?? 2,
337
+ overflow: "hidden",
338
+ ...n.textStyles
246
339
  };
247
- return f(
340
+ return m(
248
341
  "div",
249
342
  {
250
343
  class: "st_copy_wrapper",
251
344
  style: "width: 100%; position: relative; display: inline-block;"
252
345
  },
253
346
  [
254
- f("span", {
255
- class: "st_copy_text line-clamp-1",
256
- style: "padding-right: 10px; display: block;"
347
+ m("span", {
348
+ class: `st_copy_text ${n.textClass ?? ""}`,
349
+ style: i,
350
+ title: e
257
351
  }, e),
258
- e && f("span", {
352
+ e && m("span", {
259
353
  class: "st_copy_btn",
260
- style: o,
354
+ style: r,
261
355
  title: n.copyTitle || "复制",
262
356
  onClick: () => {
263
357
  if (e)
264
358
  try {
265
359
  if (navigator.clipboard && navigator.clipboard.writeText)
266
360
  navigator.clipboard.writeText(e).then(() => {
267
- $.success(n.successText ?? "复制成功");
361
+ K.success(n.successText ?? "复制成功");
268
362
  }).catch(() => {
269
- $.error(n.errorText ?? "复制失败");
363
+ K.error(n.errorText ?? "复制失败");
270
364
  });
271
365
  else {
272
- const r = document.createElement("textarea");
273
- r.value = e, r.style.position = "fixed", r.style.opacity = "0", document.body.appendChild(r), r.select();
274
- const l = document.execCommand("copy");
275
- document.body.removeChild(r), l ? $.success(n.successText ?? "复制成功") : $.error(n.errorText ?? "复制失败");
366
+ const l = document.createElement("textarea");
367
+ l.value = e, l.style.position = "fixed", l.style.opacity = "0", document.body.appendChild(l), l.select();
368
+ const s = document.execCommand("copy");
369
+ document.body.removeChild(l), s ? K.success(n.successText ?? "复制成功") : K.error(n.errorText ?? "复制失败");
276
370
  }
277
371
  } catch {
278
- $.error(n.errorText ?? "复制失败");
372
+ K.error(n.errorText ?? "复制失败");
279
373
  }
280
374
  }
281
- }, [f(ve, {
375
+ }, [m(_e, {
282
376
  style: "width: 1em; height: 1em;"
283
377
  })])
284
378
  ].filter(Boolean)
285
379
  );
286
- }), Oe = E((t) => {
287
- var i;
288
- const e = v(t.row, t.col.key) ?? "", n = ((i = t.col) == null ? void 0 : i.renderProps) || {}, r = e ? Array.isArray(e) ? e.filter((c) => c && typeof c == "string") : [e] : [];
289
- if (r.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)
290
384
  return n.placeholder || "";
291
385
  const l = {
292
386
  width: n.width || "80px",
293
387
  height: n.height || "80px",
294
- marginRight: r.length > 1 ? "4px" : "0",
388
+ marginRight: i.length > 1 ? "4px" : "0",
295
389
  ...n.style || {}
296
390
  };
297
- return r.length === 1 ? f(q, {
298
- src: r[0],
299
- previewSrcList: n.previewSrcList || r,
391
+ return i.length === 1 ? m(q, {
392
+ src: i[0],
393
+ previewSrcList: n.previewSrcList || i,
394
+ previewTeleported: !0,
300
395
  fit: n.fit || "contain",
301
396
  style: l,
302
397
  ...n
303
- }) : f(
398
+ }) : m(
304
399
  "div",
305
400
  {
306
401
  class: "st_img_wrapper",
307
402
  style: "display: flex; align-items: center; position: relative"
308
403
  },
309
404
  [
310
- f(q, {
311
- src: r[0],
312
- previewSrcList: n.previewSrcList || r,
405
+ m(q, {
406
+ src: i[0],
407
+ previewSrcList: n.previewSrcList || i,
408
+ previewTeleported: !0,
313
409
  fit: n.fit || "contain",
314
410
  style: l,
315
411
  ...n
316
412
  }),
317
- r.length > 1 && f("span", {
413
+ i.length > 1 && m("span", {
318
414
  class: "st_img_total",
319
415
  style: "position: absolute; top: 0; right: 0; ",
320
- title: `${r.length}`
321
- }, [f(be, { style: "width: 1em; height: 1em; " })])
416
+ title: `${i.length}`
417
+ }, [m(ke, { style: "width: 1em; height: 1em; " })])
322
418
  ]
323
419
  );
324
- }), $e = E((t) => {
325
- const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps || {}, o = n.options ?? [], r = 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;
326
422
  if (e == null || e === "") return "";
327
- const l = Array.isArray(e) ? e.map(String) : [String(e)], i = o.filter((g) => l.includes(String(g.value))), c = l.filter((g) => !o.some((b) => String(b.value) === g)), d = i.map((g, b) => f(
328
- he,
329
- { key: g.value, type: g.listClass, class: g.cssClass, disableTransitions: !0 },
330
- { 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 + " " }
331
427
  ));
332
- return r && c.length > 0 && d.push(f("span", {}, c.join(" "))), f("div", {}, d);
333
- }), Fe = E((t) => {
334
- var o;
335
- const e = v(t.row, t.col.key) ?? "", n = ((o = t.col.renderProps) == null ? void 0 : o.options) ?? {};
428
+ return i && f.length > 0 && d.push(m("span", {}, f.join(" "))), m("div", {}, d);
429
+ }), Ie = B((t) => {
430
+ var r;
431
+ const e = v(t.row, t.col.key) ?? "", n = ((r = t.col.renderProps) == null ? void 0 : r.options) ?? {};
336
432
  return e != null ? n[e] ?? "" : "";
337
433
  });
338
- function Re(t) {
434
+ function Ne(t) {
339
435
  return typeof t.formatter == "function";
340
436
  }
341
- const ze = E((t) => {
342
- var r;
343
- const { col: e, row: n } = t, o = v(t.row, t.col.key) ?? "";
344
- return Re(e) ? (r = e.formatter) == null ? void 0 : r.call(e, o, n) : o ?? "";
345
- }), Ke = E((t) => {
437
+ const We = B((t) => {
438
+ var i;
439
+ const { col: e, row: n } = t, r = v(t.row, t.col.key) ?? "";
440
+ return Ne(e) ? (i = e.formatter) == null ? void 0 : i.call(e, r, n) : r ?? "";
441
+ }), Pe = B((t) => {
346
442
  const e = v(t.row, t.col.key) ?? "", n = t.col.renderProps || {};
347
- return e ? /^https?:\/\//.test(e) ? f(q, {
443
+ return e ? /^https?:\/\//.test(e) ? m(q, {
348
444
  src: e,
349
445
  previewSrcList: [e],
446
+ previewTeleported: !0,
350
447
  fit: "contain",
351
448
  style: "width:40px;height:40px",
352
449
  ...n
353
- }) : /^\s*<svg[\s\S]*<\/svg>\s*$/.test(e) ? f("div", {
450
+ }) : /^\s*<svg[\s\S]*<\/svg>\s*$/.test(e) ? m("div", {
354
451
  innerHTML: e,
355
452
  style: `width:40px;height:40px;display:inline-block;${n.style || ""}`,
356
453
  ...n
357
- }) : f("i", {
454
+ }) : m("i", {
358
455
  class: e,
359
456
  style: `font-size:20px;${n.style || ""}`,
360
457
  ...n
361
458
  }) : "";
362
- }), le = {
363
- input: Be,
364
- "input-number": Ee,
365
- select: Se,
366
- button: Te,
367
- link: Ve,
368
- html: Ae,
369
- copy: Me,
370
- img: Oe,
371
- dict: $e,
372
- map: Fe,
373
- formatter: ze,
374
- 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
375
472
  };
376
- function Le(t) {
377
- t.registerMultiple(le);
378
- }
379
- function Ye() {
380
- return le;
473
+ function De(t) {
474
+ t.registerMultiple(re);
381
475
  }
382
- function Ne(t, e = 10, n = []) {
383
- const r = "*:*:*", l = (s) => {
384
- if (!s) return !0;
385
- const y = Array.isArray(s) ? s : [s];
386
- return n.some(
387
- (p) => p === r || y.includes(p)
388
- );
389
- }, i = F(() => t.some((s) => l(s.permission))), c = F(() => t.filter((y) => l(y.permission)).slice(0, e).reduce(
390
- (y, p) => y + (p.width ?? 60),
391
- 0
392
- )), d = (s, y) => l(s.permission) && (s.visible ? s.visible(y) : !0), g = (s) => t.filter((p) => d(p, s)).slice(0, e).reduce(
393
- (p, S) => p + (S.width ?? 60),
394
- 0
395
- );
396
- return {
397
- hasAnyButton: i,
398
- optWidth: c,
399
- hasAnyVisibleButton: (s) => s != null && s.length ? s.some(
400
- (y) => t.some((p) => d(p, y))
401
- ) : !1,
402
- getMaxOptWidth: (s) => s != null && s.length ? s.reduce(
403
- (y, p) => Math.max(y, g(p)),
404
- 0
405
- ) : c.value,
406
- getVisibleButtons: (s) => t.filter((y) => d(y, s)).slice(0, e)
407
- };
476
+ function Qe() {
477
+ return re;
408
478
  }
409
- const De = ["title"], Ie = /* @__PURE__ */ O({
410
- __name: "index",
411
- props: {
412
- col: { type: Object, required: !0 },
413
- permissions: { type: Array, default: () => [] },
414
- pagination: { type: Object, default: () => ({}) }
415
- },
416
- emits: ["cellBlur", "cellEnter", "cellChange", "cellClick"],
417
- setup(t, { emit: e }) {
418
- const n = t, o = e, r = (u) => {
419
- var T, w;
420
- const C = (T = n.pagination) == null ? void 0 : T.page, x = (w = n.pagination) == null ? void 0 : w.size;
421
- return C && x ? (C - 1) * x + u + 1 : u + 1;
422
- }, { col: l } = ae(n), i = (u, C) => o("cellChange", u, C), c = (u, C) => o("cellBlur", u, C), d = (u, C) => o("cellEnter", u, C), g = (u, C) => o("cellClick", u, C);
423
- Le(J());
424
- const b = F(() => {
425
- const u = J(), C = {};
426
- return u.names().forEach((x) => {
427
- const T = u.get(x);
428
- T && (C[x] = T);
429
- }), C;
430
- }), {
431
- hasAnyButton: m,
432
- hasAnyVisibleButton: k,
433
- optWidth: s,
434
- getMaxOptWidth: y,
435
- getVisibleButtons: p
436
- } = Ne(
437
- l.value.buttons || [],
438
- l.value.maxbtn ?? 10,
439
- n.permissions || []
440
- ), S = 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);
441
- function oe(u) {
442
- return !(u.type === "selection" || u.type === "index" || u.type === "operation" && !S.value || u.visible === !1);
443
- }
444
- return (u, C) => {
445
- const x = M("el-table-column"), T = M("el-button");
446
- return a(l).type === "selection" ? (h(), _(x, B({
447
- key: 0,
448
- type: "selection"
449
- }, a(l).columnProps), null, 16)) : a(l).type === "index" ? (h(), _(x, B({
450
- key: 1,
451
- type: "index",
452
- label: a(l).label || "#",
453
- align: "center"
454
- }, a(l).columnProps), {
455
- default: A(({ $index: w }) => [
456
- Z(W(r(w)), 1)
457
- ]),
458
- _: 1
459
- }, 16, ["label"])) : a(l).type === "operation" && S.value ? (h(), _(x, B({
460
- key: 2,
461
- label: a(l).label || "操作",
462
- align: "center"
463
- }, {
464
- ...a(l).columnProps,
465
- width: N.value
466
- }), {
467
- default: A(({ row: w }) => [
468
- (h(!0), K(H, null, L(a(p)(w), (V) => (h(), _(T, {
469
- key: V.label,
470
- type: V.type || "primary",
471
- link: "",
472
- onClick: (D) => V.action(w)
473
- }, {
474
- default: A(() => [
475
- Z(W(V.label), 1)
476
- ]),
477
- _: 2
478
- }, 1032, ["type", "onClick"]))), 128))
479
- ]),
480
- _: 1
481
- }, 16, ["label"])) : oe(a(l)) ? (h(), _(x, B({
482
- key: 3,
483
- label: a(l).label,
484
- align: "center"
485
- }, a(l).columnProps || {}), {
486
- default: A((w) => {
487
- var V, D, Q, X;
488
- return [
489
- 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]), {
490
- key: 1,
491
- row: w.row,
492
- col: a(l),
493
- onCellChange: i,
494
- onCellBlur: c,
495
- onCellEnter: d,
496
- onClick: g
497
- }, null, 40, ["row", "col"])) : (h(), K("span", {
498
- key: 2,
499
- style: fe(((Q = a(l).renderProps) == null ? void 0 : Q.style) || ""),
500
- class: me(((X = a(l).renderProps) == null ? void 0 : X.class) || ""),
501
- title: a(v)(w.row, a(l).key)
502
- }, W(a(v)(w.row, a(l).key)), 15, De))
503
- ];
504
- }),
505
- _: 3
506
- }, 16, ["label"])) : ce("", !0);
507
- };
508
- }
509
- });
510
- function ee(t, e) {
511
- if (!(e != null && e.length)) return t;
512
- const n = new Map(
513
- e.map((o) => [o.key, o])
514
- );
515
- return t.map((o) => {
516
- const r = n.get(o.key);
517
- return r ? {
518
- ...o,
519
- visible: typeof r.visible == "boolean" ? r.visible : o.visible
520
- } : o;
521
- });
522
- }
523
- function We(t, e) {
524
- const { cacheKey: n, storage: o = localStorage } = e || {}, r = n ? o.getItem(n) : null, l = R(
525
- ee(
526
- t,
527
- r ? JSON.parse(r) : []
528
- )
529
- );
530
- return z(
531
- l,
532
- (i) => {
533
- if (!n) return;
534
- const c = i.map((d) => ({
535
- key: d.key,
536
- visible: d.visible,
537
- columnOpts: d.columnOpts
538
- }));
539
- o.setItem(
540
- n,
541
- JSON.stringify(c)
542
- );
543
- },
544
- { deep: !0 }
545
- ), {
546
- /** 当前列配置(响应式) */
547
- columns: l,
548
- /**
549
- * 主动设置列配置
550
- * 常用于:列设置弹窗 / 拖拽排序完成
551
- */
552
- setColumns(i) {
553
- l.value = ee(
554
- t,
555
- i
556
- ), n && o.setItem(
557
- n,
558
- JSON.stringify(i)
559
- );
560
- },
561
- /**
562
- * 重置为默认列配置
563
- */
564
- resetColumns() {
565
- l.value = t, n && o.removeItem(n);
566
- }
567
- };
568
- }
569
- const Ge = /* @__PURE__ */ O({
479
+ const je = ["title"], Xe = /* @__PURE__ */ $({
570
480
  __name: "index",
571
481
  props: {
572
482
  data: { type: Array, default: () => [] },
@@ -588,59 +498,165 @@ const Ge = /* @__PURE__ */ O({
588
498
  "cell-click"
589
499
  ],
590
500
  setup(t, { expose: e, emit: n }) {
591
- const o = t, r = n, { columns: l } = We(o.columns, {
592
- cacheKey: o.cacheKey ?? ""
501
+ const r = t, i = n, { columns: l } = xe(r.columns, {
502
+ cacheKey: r.cacheKey ?? ""
593
503
  });
594
- z(
504
+ R(
595
505
  l,
596
- (m) => r("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
+ },
597
515
  { deep: !0, immediate: !0 }
598
516
  );
599
- const i = (m, k) => r("cellChange", m, k), c = (m, k) => {
600
- r("cellBlur", m, k);
601
- }, d = (m, k) => {
602
- console.log("enter"), r("cellEnter", m, k);
603
- }, g = (m, k) => {
604
- k && r("cell-click", m, k);
605
- }, 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();
606
565
  return e({
607
- tableRef: b
608
- }), (m, k) => {
609
- const s = M("el-table"), y = ye("loading");
610
- 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({
611
570
  ref_key: "tableRef",
612
- ref: b
613
- }, m.$attrs, {
571
+ ref: Q
572
+ }, o.$attrs, {
614
573
  data: t.data,
615
574
  "row-key": t.rowKey,
616
575
  class: "smart_table"
617
- }), {
618
- default: A(() => [
619
- (h(!0), K(H, null, L(a(l), (p) => (h(), _(Ie, {
620
- key: p.key,
621
- col: p,
622
- permissions: t.permissions,
623
- pagination: t.pagination,
624
- onCellChange: i,
625
- onCellBlur: c,
626
- onCellEnter: d,
627
- onCellClick: g
628
- }, ge({ _: 2 }, [
629
- L(a(l), (S) => ({
630
- name: S.key,
631
- fn: A((N) => [
632
- ne(m.$slots, S.key, B({ ref_for: !0 }, N))
633
- ])
634
- }))
635
- ]), 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))
636
645
  ]),
637
- _: 3
638
- }, 16, ["data", "row-key"])), [
639
- [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]
640
656
  ]);
641
657
  };
642
658
  }
643
- }), te = {
659
+ }), ne = {
644
660
  defaultPagination: {
645
661
  page: 1,
646
662
  size: 10,
@@ -649,9 +665,9 @@ const Ge = /* @__PURE__ */ O({
649
665
  defaultTableProps: {},
650
666
  defaultColumnProps: {}
651
667
  };
652
- class Pe {
668
+ class qe {
653
669
  constructor() {
654
- I(this, "config", { ...te });
670
+ W(this, "config", { ...ne });
655
671
  }
656
672
  /**
657
673
  * 获取所有配置
@@ -663,7 +679,7 @@ class Pe {
663
679
  * 设置配置
664
680
  */
665
681
  setConfig(e) {
666
- 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);
667
683
  }
668
684
  /**
669
685
  * 获取特定配置项
@@ -675,46 +691,46 @@ class Pe {
675
691
  * 重置为默认配置
676
692
  */
677
693
  reset() {
678
- this.config = { ...te };
694
+ this.config = { ...ne };
679
695
  }
680
696
  /**
681
697
  * 深度合并配置
682
698
  */
683
699
  mergeConfig(e, n) {
684
- const o = { ...e };
685
- for (const r in n)
686
- n[r] && typeof n[r] == "object" && !Array.isArray(n[r]) ? o[r] = this.mergeConfig(e[r] || {}, n[r]) : o[r] = n[r];
687
- return o;
700
+ const r = { ...e };
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];
703
+ return r;
688
704
  }
689
705
  }
690
706
  let j = null;
691
- function re() {
692
- return j || (j = new Pe()), j;
707
+ function le() {
708
+ return j || (j = new qe()), j;
693
709
  }
694
- function Qe(t) {
695
- re().setConfig(t);
710
+ function Ze(t) {
711
+ le().setConfig(t);
696
712
  }
697
- function Xe() {
698
- return re().getConfig();
713
+ function et() {
714
+ return le().getConfig();
699
715
  }
700
- function Ze(t, e) {
716
+ function tt(t, e) {
701
717
  return {
702
718
  key: t,
703
719
  ...e
704
720
  };
705
721
  }
706
722
  export {
707
- Ge as SmartTable,
708
- le as builtInRenderers,
709
- E as createFunctionalRenderer,
710
- Ye as createRenderer,
711
- Ge as default,
712
- Ze as defineColumn,
713
- J as getRendererManager,
714
- Xe as getSmartTableConfig,
715
- Le as registerBuiltInRenderers,
716
- Qe as setSmartTableConfig,
717
- He as validateRendererProps,
718
- 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
719
735
  };
720
736
  //# sourceMappingURL=vue3-smart-table.es.js.map