@vanstack/solid-ark 0.0.14 → 0.0.16

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,17 +1,3 @@
1
1
  import "../solid-ark.css";
2
- import { className as e, effect as t, insert as n, template as r } from "solid-js/web";
3
- //#region src/badge/Badge.tsx
4
- var i = /*#__PURE__*/ r("<span>");
5
- function a(r) {
6
- return (() => {
7
- var a = i();
8
- return n(a, () => r.children), t(() => e(a, [
9
- "van-badge",
10
- `van-badge-${r.variant ?? "primary"}`,
11
- `van-badge-${r.size ?? "default"}`,
12
- r.className
13
- ].filter(Boolean).join(" "))), a;
14
- })();
15
- }
16
- //#endregion
17
- export { a as Badge };
2
+ import { t as e } from "../badge-D4G--N46.js";
3
+ export { e as Badge };
@@ -0,0 +1,17 @@
1
+ import "./solid-ark.css";
2
+ import { className as e, effect as t, insert as n, template as r } from "solid-js/web";
3
+ //#region src/badge/Badge.tsx
4
+ var i = /*#__PURE__*/ r("<span>");
5
+ function a(r) {
6
+ return (() => {
7
+ var a = i();
8
+ return n(a, () => r.children), t(() => e(a, [
9
+ "van-badge",
10
+ `van-badge-${r.variant ?? "primary"}`,
11
+ `van-badge-${r.size ?? "default"}`,
12
+ r.className
13
+ ].filter(Boolean).join(" "))), a;
14
+ })();
15
+ }
16
+ //#endregion
17
+ export { a as t };
@@ -1,4 +1,4 @@
1
1
  export type { FieldConfig } from '../form/type';
2
2
  export { DataTable } from './DataTable';
3
- export type { DataTableAction, DataTableColumnDef, DataTableProps, DataTableQuery, DataTableResult, DataTableSearchHandler, } from './type';
3
+ export type { DataTableAction, DataTableBadgeConfig, DataTableColumnDef, DataTableProps, DataTableQuery, DataTableResult, DataTableSearchHandler, } from './type';
4
4
  export type { ColumnDef, SortingState } from '@tanstack/solid-table';
@@ -1,50 +1,51 @@
1
1
  import "../solid-ark.css";
2
2
  import { t as e } from "../button-Br_upy12.js";
3
- import { t } from "../form-IwL17HZI.js";
4
- import { t as n } from "../table-D3DgojFM.js";
5
- import { className as r, createComponent as i, effect as a, insert as o, memo as s, setAttribute as c, setStyleProperty as l, template as u, use as d } from "solid-js/web";
6
- import { For as f, Show as p, createEffect as m, createMemo as h, createSignal as g, mergeProps as _, on as v, onCleanup as ee, onMount as y } from "solid-js";
7
- import { formatDate as te, formatDateTime as b, formatShortDateTime as ne } from "@vanstack/shared";
3
+ import { t } from "../badge-D4G--N46.js";
4
+ import { t as n } from "../form-IwL17HZI.js";
5
+ import { t as r } from "../table-D3DgojFM.js";
6
+ import { className as i, createComponent as a, effect as o, insert as s, memo as c, setAttribute as l, setStyleProperty as u, template as d, use as f } from "solid-js/web";
7
+ import { For as p, Show as m, createEffect as ee, createMemo as h, createSignal as g, mergeProps as te, on as _, onCleanup as v, onMount as y } from "solid-js";
8
+ import { formatDate as ne, formatDateTime as re, formatShortDateTime as b } from "@vanstack/shared";
8
9
  import { Pagination as x } from "@ark-ui/solid/pagination";
9
10
  //#region src/data-table/EllipsisCell.tsx
10
- var S = /*#__PURE__*/ u("<span class=van-data-table-ellipsis>");
11
+ var S = /*#__PURE__*/ d("<span class=van-data-table-ellipsis>");
11
12
  function C(e) {
12
13
  let t;
13
14
  return y(() => {
14
15
  t && t.scrollWidth > t.clientWidth && (t.dataset.ellipsis = "true", t.dataset.text = e.text);
15
16
  }), (() => {
16
17
  var n = S(), r = t;
17
- return typeof r == "function" ? d(r, n) : t = n, o(n, () => e.children), n;
18
+ return typeof r == "function" ? f(r, n) : t = n, s(n, () => e.children), n;
18
19
  })();
19
20
  }
20
21
  //#endregion
21
22
  //#region src/data-table/Pagination.tsx
22
- var w = /*#__PURE__*/ u("<svg class=van-data-table-pagination-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"><path>"), T = /*#__PURE__*/ u("<svg class=van-data-table-pagination-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\">"), E = /*#__PURE__*/ u("<svg><path d=\"M11 6l-6 6 6 6\"></svg>", !1, !0, !1), D = /*#__PURE__*/ u("<svg><path d=\"M18 6l-6 6 6 6\"></svg>", !1, !0, !1), O = /*#__PURE__*/ u("<svg><path d=\"M13 6l6 6-6 6\"></svg>", !1, !0, !1), k = /*#__PURE__*/ u("<svg><path d=\"M6 6l6 6-6 6\"></svg>", !1, !0, !1), A = /*#__PURE__*/ u("<div class=van-data-table-pagination-buttons>"), j = /*#__PURE__*/ u("<div class=van-data-table-pagination><span class=van-data-table-pagination-info>共 <!> 条");
23
+ var w = /*#__PURE__*/ d("<svg class=van-data-table-pagination-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"><path>"), T = /*#__PURE__*/ d("<svg class=van-data-table-pagination-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\">"), E = /*#__PURE__*/ d("<svg><path d=\"M11 6l-6 6 6 6\"></svg>", !1, !0, !1), D = /*#__PURE__*/ d("<svg><path d=\"M18 6l-6 6 6 6\"></svg>", !1, !0, !1), O = /*#__PURE__*/ d("<svg><path d=\"M13 6l6 6-6 6\"></svg>", !1, !0, !1), k = /*#__PURE__*/ d("<svg><path d=\"M6 6l6 6-6 6\"></svg>", !1, !0, !1), A = /*#__PURE__*/ d("<div class=van-data-table-pagination-buttons>"), j = /*#__PURE__*/ d("<div class=van-data-table-pagination><span class=van-data-table-pagination-info>共 <!> 条");
23
24
  function M(e) {
24
25
  return (() => {
25
26
  var t = w(), n = t.firstChild;
26
- return a(() => c(n, "d", e.direction === "left" ? "M15 6l-6 6 6 6" : "M9 6l6 6-6 6")), t;
27
+ return o(() => l(n, "d", e.direction === "left" ? "M15 6l-6 6 6 6" : "M9 6l6 6-6 6")), t;
27
28
  })();
28
29
  }
29
30
  function N(e) {
30
31
  return (() => {
31
32
  var t = T();
32
- return o(t, (() => {
33
- var t = s(() => e.direction === "left");
33
+ return s(t, (() => {
34
+ var t = c(() => e.direction === "left");
34
35
  return () => t() ? [E(), D()] : [O(), k()];
35
36
  })()), t;
36
37
  })();
37
38
  }
38
- function re(e) {
39
+ function ie(e) {
39
40
  let t = () => Math.max(1, Math.ceil(e.count / e.pageSize));
40
41
  return (() => {
41
- var n = j(), r = n.firstChild, a = r.firstChild.nextSibling;
42
- return a.nextSibling, o(r, () => e.count, a), o(n, i(p, {
42
+ var n = j(), r = n.firstChild, i = r.firstChild.nextSibling;
43
+ return i.nextSibling, s(r, () => e.count, i), s(n, a(m, {
43
44
  get when() {
44
45
  return t() > 1;
45
46
  },
46
47
  get children() {
47
- return i(x.Root, {
48
+ return a(x.Root, {
48
49
  get count() {
49
50
  return e.count;
50
51
  },
@@ -59,21 +60,21 @@ function re(e) {
59
60
  translations: { rootLabel: "分页" },
60
61
  get children() {
61
62
  var e = A();
62
- return o(e, i(x.FirstTrigger, {
63
+ return s(e, a(x.FirstTrigger, {
63
64
  class: "van-data-table-pagination-btn",
64
65
  get children() {
65
- return i(N, { direction: "left" });
66
+ return a(N, { direction: "left" });
66
67
  }
67
- }), null), o(e, i(x.PrevTrigger, {
68
+ }), null), s(e, a(x.PrevTrigger, {
68
69
  class: "van-data-table-pagination-btn",
69
70
  get children() {
70
- return i(M, { direction: "left" });
71
+ return a(M, { direction: "left" });
71
72
  }
72
- }), null), o(e, i(x.Context, { children: (e) => i(f, {
73
+ }), null), s(e, a(x.Context, { children: (e) => a(p, {
73
74
  get each() {
74
75
  return e().pages;
75
76
  },
76
- children: (e, t) => e.type === "page" ? i(x.Item, {
77
+ children: (e, t) => e.type === "page" ? a(x.Item, {
77
78
  class: "van-data-table-pagination-btn",
78
79
  type: "page",
79
80
  get value() {
@@ -82,22 +83,22 @@ function re(e) {
82
83
  get children() {
83
84
  return e.value;
84
85
  }
85
- }) : i(x.Ellipsis, {
86
+ }) : a(x.Ellipsis, {
86
87
  class: "van-data-table-pagination-ellipsis",
87
88
  get index() {
88
89
  return t();
89
90
  },
90
91
  children: "…"
91
92
  })
92
- }) }), null), o(e, i(x.NextTrigger, {
93
+ }) }), null), s(e, a(x.NextTrigger, {
93
94
  class: "van-data-table-pagination-btn",
94
95
  get children() {
95
- return i(M, { direction: "right" });
96
+ return a(M, { direction: "right" });
96
97
  }
97
- }), null), o(e, i(x.LastTrigger, {
98
+ }), null), s(e, a(x.LastTrigger, {
98
99
  class: "van-data-table-pagination-btn",
99
100
  get children() {
100
- return i(N, { direction: "right" });
101
+ return a(N, { direction: "right" });
101
102
  }
102
103
  }), null), e;
103
104
  }
@@ -108,29 +109,29 @@ function re(e) {
108
109
  }
109
110
  //#endregion
110
111
  //#region src/data-table/DataTable.tsx
111
- var P = /*#__PURE__*/ u("<svg fill=none height=16 stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"width=16 xmlns=http://www.w3.org/2000/svg><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path><path d=\"M3 3v5h5\">"), ie = /*#__PURE__*/ u("<div class=van-data-table-actions>"), ae = /*#__PURE__*/ u("<div class=van-data-table-search>"), F = /*#__PURE__*/ u("<div class=van-data-table-toolbar>"), I = /*#__PURE__*/ u("<div>"), L = /*#__PURE__*/ u("<div class=van-data-table-search-actions>"), R = /*#__PURE__*/ u("<div class=van-data-table-tooltip>");
112
- function z() {
112
+ var P = /*#__PURE__*/ d("<svg fill=none height=16 stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"width=16 xmlns=http://www.w3.org/2000/svg><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"></path><path d=\"M3 3v5h5\">"), ae = /*#__PURE__*/ d("<div class=van-data-table-actions>"), F = /*#__PURE__*/ d("<div class=van-data-table-search>"), I = /*#__PURE__*/ d("<div class=van-data-table-toolbar>"), L = /*#__PURE__*/ d("<div>"), R = /*#__PURE__*/ d("<div class=van-data-table-search-actions>"), z = /*#__PURE__*/ d("<div class=van-data-table-tooltip>");
113
+ function B() {
113
114
  return P();
114
115
  }
115
- function B(s) {
116
- let c = _({
116
+ function V(c) {
117
+ let l = te({
117
118
  defaultPage: 1,
118
119
  defaultPageSize: 10,
119
120
  emptyText: "暂无数据",
120
121
  showSearchActions: !0
121
- }, s), u = h(() => c.searchFields ?? []), x = h(() => u().map((e) => ({
122
+ }, c), d = h(() => l.searchFields ?? []), x = h(() => d().map((e) => ({
122
123
  ...e,
123
124
  label: void 0
124
- }))), S = h(() => c.data !== void 0), w = h(() => s.selectable ?? !!s.onSelectionChange), [T, E] = g(c.searchValues ?? {}), [D, O] = g(c.searchValues ?? {});
125
- m(v(() => c.searchValues, (e) => {
126
- e && E(() => e);
125
+ }))), S = h(() => l.data !== void 0), w = h(() => c.selectable ?? !!c.onSelectionChange), T = (e, t) => typeof e.show == "function" ? e.show(t) : e.show !== !1, [E, D] = g(l.searchValues ?? {}), [O, k] = g(l.searchValues ?? {});
126
+ ee(_(() => l.searchValues, (e) => {
127
+ e && D(() => e);
127
128
  }));
128
- let [k, A] = g(c.defaultPage), [j, M] = g(c.defaultPageSize), [N, P] = g([]), B = h(() => {
129
- let t = 0, n = [];
130
- for (let r of c.columns) {
131
- let a = r.type;
132
- if (a === "index") {
133
- if (t += 1, t > 1) throw Error("[solid-ark] DataTable columns 只允许一个 type=\"index\" 列");
129
+ let [A, j] = g(l.defaultPage), [M, N] = g(l.defaultPageSize), [P, V] = g([]), H = h(() => {
130
+ let n = 0, r = 0, i = [];
131
+ for (let o of l.columns) {
132
+ let c = o.type;
133
+ if (c === "index") {
134
+ if (n += 1, n > 1) throw Error("[solid-ark] DataTable columns 只允许一个 type=\"index\" 列");
134
135
  let e = {
135
136
  id: "__index__",
136
137
  header: "#",
@@ -139,43 +140,52 @@ function B(s) {
139
140
  enableSorting: !1,
140
141
  enableColumnFilter: !1,
141
142
  enableHiding: !1,
142
- ...r,
143
- cell: ({ row: e }) => (k() - 1) * j() + e.index + 1
143
+ ...o,
144
+ cell: ({ row: e }) => (A() - 1) * M() + e.index + 1
144
145
  };
145
- n.push(e);
146
+ i.push(e);
146
147
  continue;
147
148
  }
148
- if (a === "date" || a === "dateTime" || a === "shortDateTime") {
149
- let e = r;
149
+ if (c === "date" || c === "dateTime" || c === "shortDateTime") {
150
+ let e = o;
150
151
  if (!e.accessorKey) throw Error("[solid-ark] 时间戳列(type=\"date/dateTime/shortDateTime\")必须提供 accessorKey");
151
- let t = e.accessorKey, i = e.type === "date" ? te : e.type === "dateTime" ? b : ne;
152
- n.push({
152
+ let t = e.accessorKey, n = e.type === "date" ? ne : e.type === "dateTime" ? re : b;
153
+ i.push({
153
154
  id: t,
154
155
  accessorKey: t,
155
156
  header: e.header ?? t,
156
157
  enableSorting: e.enableSorting ?? !1,
157
- cell: (e) => i(e.getValue())
158
+ cell: (e) => n(e.getValue())
158
159
  });
159
160
  continue;
160
161
  }
161
- if (a === "action") {
162
- let t = r, a = t.actions ?? [];
163
- if (a.length === 0) continue;
164
- n.push({
162
+ if (c === "action") {
163
+ let t = o, n = t.actions ?? [];
164
+ if (n.length === 0) continue;
165
+ let r = n.some((e) => typeof e.show == "function") ? n : n.filter((e) => e.show !== !1);
166
+ if (r.length === 0) continue;
167
+ i.push({
165
168
  id: "__actions__",
166
169
  header: t.header ?? "操作",
167
170
  enableSorting: !1,
168
171
  cell: ({ row: t }) => (() => {
169
- var n = ie();
170
- return o(n, i(f, {
171
- each: a,
172
- children: (n) => i(e, {
173
- onClick: () => n.onClick(t.original),
174
- get variant() {
175
- return n.variant ?? "outline";
172
+ var n = ae();
173
+ return s(n, a(p, {
174
+ each: r,
175
+ children: (n) => a(m, {
176
+ get when() {
177
+ return T(n, t.original);
176
178
  },
177
179
  get children() {
178
- return n.label;
180
+ return a(e, {
181
+ onClick: () => n.onClick(t.original),
182
+ get variant() {
183
+ return n.variant ?? "outline";
184
+ },
185
+ get children() {
186
+ return n.label;
187
+ }
188
+ });
179
189
  }
180
190
  })
181
191
  })), n;
@@ -183,12 +193,35 @@ function B(s) {
183
193
  });
184
194
  continue;
185
195
  }
186
- let s = r.ellipsis === !0, c = r.size;
187
- if (s && typeof c == "number") {
188
- let e = r.cell;
189
- n.push({
190
- ...r,
191
- cell: (t) => i(C, {
196
+ if (c === "badge") {
197
+ let e = o, n = e.badge;
198
+ if (!n) continue;
199
+ let s = `__badge__${r}`;
200
+ r += 1, i.push({
201
+ id: s,
202
+ header: e.header,
203
+ enableSorting: !1,
204
+ cell: ({ row: e }) => {
205
+ let r = typeof n == "function" ? n(e.original) : n;
206
+ return a(t, {
207
+ size: "default",
208
+ get variant() {
209
+ return r.variant;
210
+ },
211
+ get children() {
212
+ return r.value;
213
+ }
214
+ });
215
+ }
216
+ });
217
+ continue;
218
+ }
219
+ let l = o.ellipsis === !0, u = o.size;
220
+ if (l && typeof u == "number") {
221
+ let e = o.cell;
222
+ i.push({
223
+ ...o,
224
+ cell: (t) => a(C, {
192
225
  get text() {
193
226
  return String(t.getValue() ?? "");
194
227
  },
@@ -197,103 +230,103 @@ function B(s) {
197
230
  });
198
231
  continue;
199
232
  }
200
- n.push(r);
233
+ i.push(o);
201
234
  }
202
- return n;
203
- }), V, [H, U] = g(null);
235
+ return i;
236
+ }), U, [W, G] = g(null);
204
237
  y(() => {
205
- let e = V;
238
+ let e = U;
206
239
  if (!e) return;
207
240
  let t = (e) => {
208
241
  let t = e.target.closest(".van-data-table-ellipsis[data-ellipsis]");
209
242
  if (!t) return;
210
243
  let n = t.getBoundingClientRect();
211
- U({
244
+ G({
212
245
  left: n.left,
213
246
  text: t.dataset.text ?? "",
214
247
  top: n.bottom + 6
215
248
  });
216
249
  }, n = (e) => {
217
- e.relatedTarget?.closest?.(".van-data-table-ellipsis[data-ellipsis]") || U(null);
250
+ e.relatedTarget?.closest?.(".van-data-table-ellipsis[data-ellipsis]") || G(null);
218
251
  };
219
- e.addEventListener("mouseover", t), e.addEventListener("mouseout", n), ee(() => {
252
+ e.addEventListener("mouseover", t), e.addEventListener("mouseout", n), v(() => {
220
253
  e.removeEventListener("mouseover", t), e.removeEventListener("mouseout", n);
221
254
  });
222
255
  });
223
- let [W, G] = g([]), [K, q] = g(0), [oe, J] = g(!1), Y = h(() => S() ? c.data : W()), se = h(() => S() ? c.total ?? Y().length : K()), X = h(() => S() ? c.loading ?? !1 : oe()), Z = (e, t, n) => ({
256
+ let [K, q] = g([]), [oe, se] = g(0), [ce, J] = g(!1), Y = h(() => S() ? l.data : K()), le = h(() => S() ? l.total ?? Y().length : oe()), X = h(() => S() ? l.loading ?? !1 : ce()), Z = (e, t, n) => ({
224
257
  page: e,
225
258
  pageSize: t,
226
259
  sorting: n
227
260
  }), Q = 0, $ = async (e, t) => {
228
261
  if (S()) {
229
- s.onSearch(e, t);
262
+ c.onSearch(e, t);
230
263
  return;
231
264
  }
232
265
  let n = ++Q;
233
266
  J(!0);
234
267
  try {
235
- let r = await s.onSearch(e, t);
268
+ let r = await c.onSearch(e, t);
236
269
  if (n !== Q) return;
237
- G(r.data), q(r.total);
270
+ q(r.data), se(r.total);
238
271
  } catch (e) {
239
272
  if (n !== Q) return;
240
- s.onError?.(e);
273
+ c.onError?.(e);
241
274
  } finally {
242
275
  n === Q && J(!1);
243
276
  }
244
277
  };
245
278
  y(() => {
246
- S() || $(D(), Z(k(), j(), N()));
279
+ S() || $(O(), Z(A(), M(), P()));
247
280
  });
248
- let ce = (e) => {
249
- O(() => e), A(1), $(e, Z(1, j(), N()));
250
- }, le = () => {
251
- let e = Object.fromEntries(u().map((e) => [e.name, void 0]));
252
- E(() => e), O(() => e), A(1), $(e, Z(1, j(), N()));
253
- }, ue = (e) => {
254
- e !== k() && (A(e), c.onPageChange?.(e), $(D(), Z(e, j(), N())));
255
- }, de = (e) => {
256
- e !== j() && (M(e), A(1), c.onPageSizeChange?.(e), $(D(), Z(1, e, N())));
281
+ let ue = (e) => {
282
+ k(() => e), j(1), $(e, Z(1, M(), P()));
283
+ }, de = () => {
284
+ let e = Object.fromEntries(d().map((e) => [e.name, void 0]));
285
+ D(() => e), k(() => e), j(1), $(e, Z(1, M(), P()));
257
286
  }, fe = (e) => {
258
- P(e), c.onSortingChange?.(e), A(1), $(D(), Z(1, j(), e));
287
+ e !== A() && (j(e), l.onPageChange?.(e), $(O(), Z(e, M(), P())));
288
+ }, pe = (e) => {
289
+ e !== M() && (N(e), j(1), l.onPageSizeChange?.(e), $(O(), Z(1, e, P())));
290
+ }, me = (e) => {
291
+ V(e), l.onSortingChange?.(e), j(1), $(O(), Z(1, M(), e));
259
292
  };
260
293
  return (() => {
261
- var f = I(), m = V;
262
- return typeof m == "function" ? d(m, f) : V = f, o(f, i(p, {
294
+ var t = L(), p = U;
295
+ return typeof p == "function" ? f(p, t) : U = t, s(t, a(m, {
263
296
  get when() {
264
- return u().length > 0;
297
+ return d().length > 0;
265
298
  },
266
299
  get children() {
267
- var n = ae();
268
- return o(n, i(t, {
300
+ var t = F();
301
+ return s(t, a(n, {
269
302
  get fields() {
270
303
  return x();
271
304
  },
272
- onSubmit: ({ value: e }) => ce(e),
305
+ onSubmit: ({ value: e }) => ue(e),
273
306
  get onValuesChange() {
274
- return c.onSearchValuesChange;
307
+ return l.onSearchValuesChange;
275
308
  },
276
309
  get values() {
277
- return T();
310
+ return E();
278
311
  },
279
- children: () => i(p, {
312
+ children: () => a(m, {
280
313
  get when() {
281
- return c.showSearchActions;
314
+ return l.showSearchActions;
282
315
  },
283
316
  get children() {
284
- var t = L();
285
- return o(t, i(e, {
317
+ var t = R();
318
+ return s(t, a(e, {
286
319
  "aria-label": "重置",
287
320
  class: "van-btn-icon-only",
288
321
  get disabled() {
289
322
  return X();
290
323
  },
291
- onClick: le,
324
+ onClick: de,
292
325
  variant: "outline",
293
326
  get children() {
294
- return i(z, {});
327
+ return a(B, {});
295
328
  }
296
- }), null), o(t, i(e, {
329
+ }), null), s(t, a(e, {
297
330
  get disabled() {
298
331
  return X();
299
332
  },
@@ -302,73 +335,73 @@ function B(s) {
302
335
  }), null), t;
303
336
  }
304
337
  })
305
- })), n;
338
+ })), t;
306
339
  }
307
- }), null), o(f, i(p, {
340
+ }), null), s(t, a(m, {
308
341
  get when() {
309
- return c.children;
342
+ return l.children;
310
343
  },
311
344
  get children() {
312
- var e = F();
313
- return o(e, () => c.children), e;
345
+ var e = I();
346
+ return s(e, () => l.children), e;
314
347
  }
315
- }), null), o(f, i(n, {
348
+ }), null), s(t, a(r, {
316
349
  get columns() {
317
- return B();
350
+ return H();
318
351
  },
319
352
  get data() {
320
353
  return Y();
321
354
  },
322
355
  get emptyText() {
323
- return c.emptyText;
356
+ return l.emptyText;
324
357
  },
325
358
  get loading() {
326
359
  return X();
327
360
  },
328
361
  get onRowClick() {
329
- return c.onRowClick;
362
+ return l.onRowClick;
330
363
  },
331
364
  get onSelectionChange() {
332
- return c.onSelectionChange;
365
+ return l.onSelectionChange;
333
366
  },
334
- onSortingChange: fe,
367
+ onSortingChange: me,
335
368
  get rowId() {
336
- return c.rowId;
369
+ return l.rowId;
337
370
  },
338
371
  get selectable() {
339
372
  return w();
340
373
  },
341
374
  get selectedRowIds() {
342
- return c.selectedRowIds;
375
+ return l.selectedRowIds;
343
376
  }
344
- }), null), o(f, i(re, {
377
+ }), null), s(t, a(ie, {
345
378
  get count() {
346
- return se();
379
+ return le();
347
380
  },
348
- onPageChange: ue,
349
- onPageSizeChange: de,
381
+ onPageChange: fe,
382
+ onPageSizeChange: pe,
350
383
  get page() {
351
- return k();
384
+ return A();
352
385
  },
353
386
  get pageSize() {
354
- return j();
387
+ return M();
355
388
  }
356
- }), null), o(f, i(p, {
389
+ }), null), s(t, a(m, {
357
390
  get when() {
358
- return H();
391
+ return W();
359
392
  },
360
393
  children: (e) => (() => {
361
- var t = R();
362
- return o(t, () => e().text), a((n) => {
394
+ var t = z();
395
+ return s(t, () => e().text), o((n) => {
363
396
  var r = `${e().left}px`, i = `${e().top}px`;
364
- return r !== n.e && l(t, "left", n.e = r), i !== n.t && l(t, "top", n.t = i), n;
397
+ return r !== n.e && u(t, "left", n.e = r), i !== n.t && u(t, "top", n.t = i), n;
365
398
  }, {
366
399
  e: void 0,
367
400
  t: void 0
368
401
  }), t;
369
402
  })()
370
- }), null), a(() => r(f, `van-data-table ${s.className ?? ""}`)), f;
403
+ }), null), o(() => i(t, `van-data-table ${c.className ?? ""}`)), t;
371
404
  })();
372
405
  }
373
406
  //#endregion
374
- export { B as DataTable };
407
+ export { V as DataTable };
@@ -1,5 +1,6 @@
1
1
  import { ColumnDef, SortingState } from '@tanstack/solid-table';
2
2
  import { JSX } from 'solid-js';
3
+ import { BadgeVariant } from '../badge';
3
4
  import { ButtonVariant } from '../button';
4
5
  import { FieldConfig } from '../form/type';
5
6
  /** onSearch 的返回值:当前页数据与总条数 */
@@ -21,16 +22,27 @@ export interface DataTableAction<TData> {
21
22
  onClick: (row: TData) => void;
22
23
  /** 按钮变体,默认 "outline" */
23
24
  variant?: ButtonVariant;
25
+ /** 是否显示该按钮,默认 true;可为函数(按行判断,读取信号时响应式更新) */
26
+ show?: ((row: TData) => boolean) | boolean;
27
+ }
28
+ /** type="badge" 列的徽标配置:变种 + 展示值 */
29
+ export interface DataTableBadgeConfig {
30
+ /** 徽标变种(Badge 组件 variant) */
31
+ variant: BadgeVariant;
32
+ /** 展示文本 */
33
+ value: string;
24
34
  }
25
35
  type UnionToIntersection<T> = (T extends unknown ? (arg: T) => void : never) extends (arg: infer I) => void ? I : never;
26
36
  /** DataTable 扩展的列类型:包含 ColumnDef 全部属性,另加 type / actions 扩展 */
27
37
  export type DataTableColumnDef<TData> = {
28
38
  /** type="action" 时的操作按钮配置;未提供则忽略该列 */
29
39
  actions?: DataTableAction<TData>[];
40
+ /** type="badge" 时的徽标配置:静态对象或按行函数 `(row) => { variant, value }`;未提供则忽略该列 */
41
+ badge?: ((row: TData) => DataTableBadgeConfig) | DataTableBadgeConfig;
30
42
  /** 单元格超长省略显示,hover 展示完整内容;需同时设置 ColumnDef 的 size 列宽,否则不生效 */
31
43
  ellipsis?: boolean;
32
44
  /** 特殊列类型:index=序号列;date/dateTime/shortDateTime=时间戳格式化列;action=操作按钮列 */
33
- type?: "action" | "date" | "dateTime" | "index" | "shortDateTime";
45
+ type?: "action" | "badge" | "date" | "dateTime" | "index" | "shortDateTime";
34
46
  } & Partial<UnionToIntersection<ColumnDef<TData>>>;
35
47
  /** 取数函数:接收表单值与查询参数,返回当前页数据与总条数 */
36
48
  export type DataTableSearchHandler<TData, TSearch> = (values: TSearch, query: DataTableQuery) => DataTableResult<TData> | Promise<DataTableResult<TData>> | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vanstack/solid-ark",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -71,10 +71,10 @@
71
71
  "vite-plugin-solid": "^2.11.0",
72
72
  "vitest": "^4.1.10",
73
73
  "zod": "^4.4.0",
74
- "@vanstack/prettier-config": "0.0.1",
74
+ "@vanstack/tsconfig": "0.0.1",
75
75
  "@vanstack/eslint-config": "0.0.1",
76
- "@vanstack/vite-config": "0.0.2",
77
- "@vanstack/tsconfig": "0.0.1"
76
+ "@vanstack/prettier-config": "0.0.1",
77
+ "@vanstack/vite-config": "0.0.2"
78
78
  },
79
79
  "scripts": {
80
80
  "build": "tsc --noEmit && vite build",