@fewangsit/wangsvue-gsts 1.0.0-alpha.38 → 1.0.0-alpha.39

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,52 +1,52 @@
1
- import { reactive as P, defineComponent as _, mergeModels as q, useModel as U, ref as F, shallowRef as J, computed as M, watch as K, createElementBlock as x, openBlock as y, Fragment as B, renderList as T, createCommentVNode as z, mergeProps as I, withModifiers as g, createVNode as E } from "vue";
2
- import { _ as G } from "../checkbox/index.es.js";
3
- import { _ as H } from "../icon/index.es.js";
4
- import { c as Q } from "../vendor/lodash-es/cloneDeep.es.js";
5
- const W = (o, u, l) => {
6
- if (u && l > u) {
1
+ import { reactive as $, defineComponent as _, mergeModels as q, useModel as U, ref as J, shallowRef as K, computed as B, watch as T, createElementBlock as w, openBlock as k, Fragment as E, renderList as z, createCommentVNode as G, mergeProps as I, withModifiers as C, createVNode as A } from "vue";
2
+ import { _ as Q } from "../checkbox/index.es.js";
3
+ import { _ as W } from "../icon/index.es.js";
4
+ import { c as X } from "../vendor/lodash-es/cloneDeep.es.js";
5
+ const Y = (o, d, l) => {
6
+ if (d && l > d) {
7
7
  let r = 0;
8
8
  return o.map((n) => {
9
- const c = u !== void 0 && r < u, d = n.checkedByDefault !== !1 && u === void 0 || n.checkedByDefault !== !1 && c;
10
- return d && r++, {
9
+ const m = d !== void 0 && r < d, c = n.checkedByDefault !== !1 && d === void 0 || n.checkedByDefault !== !1 && m;
10
+ return c && r++, {
11
11
  ...n,
12
- visible: d
12
+ visible: c
13
13
  };
14
14
  });
15
15
  }
16
16
  return o;
17
- }, b = "tableConfigs", X = () => "user-" + (JSON.parse(localStorage.getItem("user") ?? "{}")._id ?? "unknown"), A = async () => {
17
+ }, x = "tableConfigs", Z = () => "user-" + (JSON.parse(localStorage.getItem("user") ?? "{}")._id ?? "unknown"), N = async () => {
18
18
  let o = null;
19
- return new Promise((u) => {
20
- const l = indexedDB.open(X(), 1);
19
+ return new Promise((d) => {
20
+ const l = indexedDB.open(Z(), 1);
21
21
  l.onupgradeneeded = (r) => {
22
- o = r.target.result, o.createObjectStore(b);
22
+ o = r.target.result, o.createObjectStore(x);
23
23
  }, l.onsuccess = (r) => {
24
- o = r.target.result, u(o);
24
+ o = r.target.result, d(o);
25
25
  };
26
26
  });
27
- }, Y = async () => {
28
- const l = (await A()).transaction(b, "readonly").objectStore(b);
27
+ }, ee = async () => {
28
+ const l = (await N()).transaction(x, "readonly").objectStore(x);
29
29
  return new Promise((r) => {
30
- let n, c;
31
- l.getAllKeys().onsuccess = (d) => {
32
- n = d.target.result;
33
- }, l.getAll().onsuccess = (d) => {
34
- c = d.target.result;
35
- const v = {};
36
- n.forEach((m, p) => {
37
- v[m] = c[p];
38
- }), r(v);
30
+ let n, m;
31
+ l.getAllKeys().onsuccess = (c) => {
32
+ n = c.target.result;
33
+ }, l.getAll().onsuccess = (c) => {
34
+ m = c.target.result;
35
+ const b = {};
36
+ n.forEach((g, y) => {
37
+ b[g] = m[y];
38
+ }), r(b);
39
39
  };
40
40
  });
41
- }, h = P({}), Z = async () => {
42
- const o = async (u, l) => {
43
- h[u] = l, (await A()).transaction(b, "readwrite").objectStore(b).put(l, u);
41
+ }, S = $({}), te = async () => {
42
+ const o = async (d, l) => {
43
+ S[d] = l, (await N()).transaction(x, "readwrite").objectStore(x).put(l, d);
44
44
  };
45
- return Object.assign(h, await Y()), {
46
- config: h,
45
+ return Object.assign(S, await ee()), {
46
+ config: S,
47
47
  setConfig: o
48
48
  };
49
- }, ee = ["id", "data-item-dragable", "draggable", "onDragenter", "onDragstart"], se = /* @__PURE__ */ _({
49
+ }, ae = ["id", "data-item-dragable", "draggable", "onDragenter", "onDragstart"], re = /* @__PURE__ */ _({
50
50
  __name: "ColumnList",
51
51
  props: /* @__PURE__ */ q({
52
52
  tableId: {},
@@ -60,88 +60,110 @@ const W = (o, u, l) => {
60
60
  modelModifiers: {}
61
61
  }),
62
62
  emits: ["update:modelValue"],
63
- setup(o, { expose: u }) {
64
- const l = o, r = U(o, "modelValue"), n = F([]), c = J(), d = M(() => [...n.value].filter((a) => a.visible !== !1)), v = M(() => l.maxColumn ? d.value.length >= l.maxColumn : !1), m = (a) => a.dragable !== !1 && p(a), p = (a) => {
65
- if (!v.value) return !0;
63
+ setup(o, { expose: d }) {
64
+ const l = o, r = U(o, "modelValue"), n = J([]), m = K(), c = B(() => [...n.value].filter((a) => a.visible !== !1)), b = B(() => l.maxColumn ? c.value.length >= l.maxColumn : !1), g = (a) => a.dragable !== !1 && y(a), y = (a) => {
65
+ if (!b.value) return !0;
66
66
  const t = r.value.findIndex((e) => e.field === a.field) > 0;
67
- return v.value && t;
68
- }, S = () => {
69
- n.value = W(
67
+ return b.value && t;
68
+ }, H = (a) => {
69
+ const t = [];
70
+ for (const e of a)
71
+ if (e.parentHeader) {
72
+ const s = t.find(
73
+ (f) => f.parentHeaderField === e.parentHeader.field
74
+ );
75
+ s ? s.siblingHeaders.push(e) : t.push({
76
+ ...e,
77
+ parentHeaderField: e.parentHeader.field,
78
+ siblingHeaders: []
79
+ });
80
+ } else
81
+ t.push(e);
82
+ return t;
83
+ }, D = (a) => {
84
+ const t = [];
85
+ for (const e of a)
86
+ e.parentHeaderField ? t.push(e, ...e.siblingHeaders) : t.push(e);
87
+ return t;
88
+ }, V = () => {
89
+ n.value = Y(
70
90
  n.value,
71
91
  l.maxColumn,
72
- d.value.length
73
- ), r.value = [...d.value];
74
- }, C = async () => {
75
- const a = n.value.map(
76
- (e) => ({
77
- field: e.field,
78
- width: e.width ?? "max-content",
79
- visible: e.visible !== !1,
80
- fixed: !!e.fixed
81
- })
82
- ), { setConfig: t } = await Z();
92
+ c.value.length
93
+ ), r.value = D([...c.value]);
94
+ }, h = async () => {
95
+ const a = D(
96
+ n.value
97
+ ).map((e) => ({
98
+ field: e.field,
99
+ width: e.width ?? "max-content",
100
+ visible: e.visible !== !1,
101
+ fixed: !!e.fixed
102
+ })), { setConfig: t } = await te();
83
103
  await t(l.tableId, a);
84
- }, N = () => {
85
- r.value = [...n.value];
86
- }, R = (a, t, e) => {
87
- const { dataTransfer: i } = a;
88
- c.value = t, i && (i.dropEffect = "move", i.effectAllowed = "move", i.setData("field", t.field), i.setData("index", e.toString()));
89
- }, L = async () => {
90
- c.value = void 0, N(), await C();
91
- }, j = (a, t) => {
92
- var e, i;
93
- if (a.preventDefault(), m(t)) {
94
- const f = a.target, s = f.tagName === "LI" ? f : f.closest("li");
95
- if (s == null || s.classList.add("bg-primary-50"), (e = s == null ? void 0 : s.nextElementSibling) == null || e.classList.remove("bg-primary-50"), (i = s == null ? void 0 : s.previousElementSibling) == null || i.classList.remove("bg-primary-50"), !s || !c.value) return;
96
- const D = n.value.findIndex(
97
- (k) => {
98
- var V;
99
- return k.field === ((V = c.value) == null ? void 0 : V.field);
104
+ }, R = () => {
105
+ r.value = D([...n.value]);
106
+ }, L = (a, t, e) => {
107
+ const { dataTransfer: s } = a;
108
+ m.value = t, s && (s.dropEffect = "move", s.effectAllowed = "move", s.setData("field", t.field), s.setData("index", e.toString()));
109
+ }, j = async () => {
110
+ m.value = void 0, R(), await h();
111
+ }, F = (a, t) => {
112
+ var e, s;
113
+ if (a.preventDefault(), g(t)) {
114
+ const f = a.target, u = f.tagName === "LI" ? f : f.closest("li");
115
+ if (u == null || u.classList.add("bg-primary-50"), (e = u == null ? void 0 : u.nextElementSibling) == null || e.classList.remove("bg-primary-50"), (s = u == null ? void 0 : u.previousElementSibling) == null || s.classList.remove("bg-primary-50"), !u || !m.value) return;
116
+ const i = n.value.findIndex(
117
+ (p) => {
118
+ var M;
119
+ return p.field === ((M = m.value) == null ? void 0 : M.field);
100
120
  }
101
- ), w = n.value.findIndex(
102
- (k) => k.field === s.id
121
+ ), v = n.value.findIndex(
122
+ (p) => p.field === u.id
103
123
  );
104
- D !== -1 && w !== -1 && ([
105
- n.value[D],
106
- n.value[w]
124
+ i !== -1 && v !== -1 && ([
125
+ n.value[i],
126
+ n.value[v]
107
127
  ] = [
108
- n.value[w],
109
- n.value[D]
128
+ n.value[v],
129
+ n.value[i]
110
130
  ]);
111
131
  }
112
132
  }, O = (a) => {
113
133
  const t = a.target.querySelector("label");
114
134
  t && t.click();
115
- }, $ = () => {
116
- const a = Q(l.defaultColumns);
135
+ }, P = () => {
136
+ const a = X(l.defaultColumns);
117
137
  if (l.maxColumn && a.length > l.maxColumn) {
118
138
  let t = 0;
119
- n.value = a.map((e) => {
120
- const i = l.maxColumn !== void 0 && t < l.maxColumn, f = e.checkedByDefault !== !1 && l.maxColumn === void 0 || e.checkedByDefault !== !1 && i;
121
- return f && t++, {
122
- ...e,
123
- visible: f
124
- };
125
- });
139
+ n.value = H(
140
+ a.map((e) => {
141
+ const s = l.maxColumn !== void 0 && t < l.maxColumn, f = e.checkedByDefault !== !1 && l.maxColumn === void 0 || e.checkedByDefault !== !1 && s;
142
+ return f && t++, {
143
+ ...e,
144
+ visible: f
145
+ };
146
+ })
147
+ );
126
148
  } else
127
- n.value = a;
128
- r.value = [...d.value], C();
149
+ n.value = H(a);
150
+ r.value = D([...c.value]), h();
129
151
  };
130
- return K(
152
+ return T(
131
153
  () => l.savedColumns,
132
154
  (a) => {
133
- n.value = a ?? [];
155
+ n.value = H(a) ?? [];
134
156
  },
135
157
  { immediate: !0 }
136
- ), u({
137
- setColumnVisibilityConfig: C,
138
- resetToDefault: $,
139
- updateVisibleColumnsModel: S
140
- }), (a, t) => (y(), x("ul", null, [
141
- (y(!0), x(B, null, T(n.value, (e, i) => {
142
- var f;
143
- return y(), x(B, null, [
144
- e.reorderable !== !1 ? (y(), x("li", I(
158
+ ), d({
159
+ setColumnVisibilityConfig: h,
160
+ resetToDefault: P,
161
+ updateVisibleColumnsModel: V
162
+ }), (a, t) => (k(), w("ul", null, [
163
+ (k(!0), w(E, null, z(n.value, (e, s) => {
164
+ var f, u;
165
+ return k(), w(E, null, [
166
+ e.reorderable !== !1 ? (k(), w("li", I(
145
167
  {
146
168
  id: e.field,
147
169
  key: e.field,
@@ -149,56 +171,59 @@ const W = (o, u, l) => {
149
171
  },
150
172
  a.$preset.customcolumn.menuitem({
151
173
  props: l,
152
- context: { dragable: m(e) }
174
+ context: { dragable: g(e) }
153
175
  }),
154
176
  {
155
- "data-item-dragable": m(e),
156
- draggable: m(e),
177
+ "data-item-dragable": g(e),
178
+ draggable: g(e),
157
179
  onClick: O,
158
- onDragend: L,
159
- onDragenter: g((s) => j(s, e), ["prevent"]),
160
- onDragleave: t[2] || (t[2] = g(() => {
180
+ onDragend: j,
181
+ onDragenter: C((i) => F(i, e), ["prevent"]),
182
+ onDragleave: t[2] || (t[2] = C(() => {
161
183
  }, ["prevent"])),
162
- onDragover: t[3] || (t[3] = g(() => {
184
+ onDragover: t[3] || (t[3] = C(() => {
163
185
  }, ["prevent"])),
164
- onDragstart: (s) => R(s, e, i),
165
- onMouseenter: t[4] || (t[4] = (s) => s.target.classList.add("bg-primary-50")),
166
- onMouseleave: t[5] || (t[5] = (s) => s.target.classList.remove("bg-primary-50")),
186
+ onDragstart: (i) => L(i, e, s),
187
+ onMouseenter: t[4] || (t[4] = (i) => i.target.classList.add("bg-primary-50")),
188
+ onMouseleave: t[5] || (t[5] = (i) => i.target.classList.remove("bg-primary-50")),
167
189
  "data-wv-section": "custom-column-menu-item"
168
190
  }
169
191
  ), [
170
- E(H, I(
192
+ A(W, I(
171
193
  {
172
- onClick: t[0] || (t[0] = g(() => {
194
+ onClick: t[0] || (t[0] = C(() => {
173
195
  }, ["stop"])),
174
196
  ref_for: !0
175
197
  },
176
198
  (f = a.$preset.customcolumn) == null ? void 0 : f.dragicon({
177
- context: { dragable: m(e) }
199
+ context: { dragable: g(e) }
178
200
  }),
179
201
  { icon: "dragable-menu" }
180
202
  ), null, 16),
181
- E(G, {
203
+ A(Q, {
182
204
  "aria-label": e.header,
183
205
  disabled: e.fixed,
184
- label: e.header,
206
+ label: ((u = e.parentHeader) == null ? void 0 : u.header) ?? e.header,
185
207
  "model-value": e.visible !== !1,
186
- selectable: p(e),
187
- onClick: t[1] || (t[1] = g(() => {
208
+ selectable: y(e),
209
+ onClick: t[1] || (t[1] = C(() => {
188
210
  }, ["stop"])),
189
- "onUpdate:modelValue": (s) => {
190
- e.visible = !!s, S(), C();
211
+ "onUpdate:modelValue": (i) => {
212
+ var v;
213
+ e.visible = !!i, (v = e.siblingHeaders) == null || v.forEach((p) => {
214
+ p.visible = !!i;
215
+ }), V(), h();
191
216
  },
192
217
  class: "!w-full"
193
218
  }, null, 8, ["aria-label", "disabled", "label", "model-value", "selectable", "onUpdate:modelValue"])
194
- ], 16, ee)) : z("", !0)
219
+ ], 16, ae)) : G("", !0)
195
220
  ], 64);
196
221
  }), 256))
197
222
  ]));
198
223
  }
199
224
  });
200
225
  export {
201
- se as _,
202
- W as s,
203
- Z as u
226
+ re as _,
227
+ Y as s,
228
+ te as u
204
229
  };
@@ -5,7 +5,11 @@ export interface CustomColumnLocaleConfig {
5
5
  resetDefaultText: string;
6
6
  }
7
7
 
8
- export type DragableColumn = TableColumn & { order?: number };
8
+ export type DragableColumn = TableColumn & {
9
+ order?: number;
10
+ parentHeaderField?: string;
11
+ siblingHeaders?: TableColumn[];
12
+ };
9
13
 
10
14
  export interface CustomColumnProps {
11
15
  tableId: string;
@@ -245,8 +245,42 @@ export type ColumnPreset =
245
245
  | ColumnMultiRowPreset
246
246
  | ColumnCheckboxPreset;
247
247
 
248
+ export interface CombinedHeaders {
249
+ parent: TableParentHeader[];
250
+ child: TreeTableColumns[];
251
+ }
252
+
253
+ export interface TableParentHeader
254
+ extends Pick<
255
+ TableColumn,
256
+ 'header' | 'info' | 'infoSeverity' | 'headerClass'
257
+ > {
258
+ /**
259
+ * Field is used as the header's key, parent headers with
260
+ * the same field will be grouped into one cell
261
+ */
262
+ field: string;
263
+ /**
264
+ * Note: colspan is calculated automatically
265
+ * @ignore
266
+ */
267
+ colspan?: number;
268
+ /**
269
+ * Note: rowspan is calculated automatically
270
+ * @ignore
271
+ */
272
+ rowspan?: number;
273
+ }
274
+
248
275
  export interface TableColumn {
249
276
  header?: string;
277
+ /**
278
+ * The headers placed above certain child headers. If there are
279
+ * multiple child headers with the same parent header, the parent
280
+ * will have its colspan extended. The parent header will be shown
281
+ * when at least one of its child headers is visible.
282
+ */
283
+ parentHeader?: TableParentHeader;
250
284
  field: string;
251
285
  fieldType?: 'string' | 'number' | 'boolean' | 'array';
252
286
  info?: string;
@@ -666,6 +700,10 @@ export type BaseDataTableEmits = {
666
700
  * Emits when option menu button clicked.
667
701
  */
668
702
  'toggleOption': [data: Data];
703
+ /**
704
+ * Emits when an item is double clicked.
705
+ */
706
+ 'doubleClick': [data: Data];
669
707
  /**
670
708
  * @deprecated use 'v-model:selected-data' instead.
671
709
  */