@vanstack/solid-ark 0.0.39 → 0.0.41

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.
@@ -2,6 +2,7 @@ interface PaginationProps {
2
2
  page: number;
3
3
  pageSize: number;
4
4
  count: number;
5
+ showControls?: boolean;
5
6
  onPageChange: (page: number) => void;
6
7
  onPageSizeChange: (pageSize: number) => void;
7
8
  }
@@ -1,4 +1,4 @@
1
1
  export type { FieldConfig } from '../form/type';
2
2
  export { DataTable } from './DataTable';
3
- export type { DataTableAction, DataTableBadgeConfig, DataTableBadgeValue, DataTableColumnDef, DataTableProps, DataTableQuery, DataTableResult, DataTableSearchHandler, } from './type';
3
+ export type { DataTableAction, DataTableBadgeConfig, DataTableBadgeValue, DataTableColumnDef, DataTableProps, DataTableQuery, DataTableQueryWithoutPagination, DataTableResult, DataTableSearchHandler, } from './type';
4
4
  export type { ColumnDef, SortingState } from '@tanstack/solid-table';
@@ -4,12 +4,12 @@ import { t } from "../badge-Dt0uZnmA.js";
4
4
  import { t as n } from "../form-jqVwcqEp.js";
5
5
  import { t as r } from "../table-ByBUErrC.js";
6
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 _, on as te, onCleanup as v, onMount as y } from "solid-js";
7
+ import { For as p, Show as m, createEffect as ee, createMemo as h, createSignal as g, mergeProps as _, on as v, onCleanup as te, onMount as y } from "solid-js";
8
8
  import { formatDate as b, formatDateTime as ne, formatShortDateTime as re } from "@vanstack/shared";
9
9
  import { Pagination as x } from "@ark-ui/solid/pagination";
10
10
  //#region src/data-table/EllipsisCell.tsx
11
11
  var S = /*#__PURE__*/ d("<span class=van-data-table-ellipsis>");
12
- function C(e) {
12
+ function ie(e) {
13
13
  let t;
14
14
  return y(() => {
15
15
  t && t.scrollWidth > t.clientWidth && (t.dataset.ellipsis = "true", t.dataset.text = e.text);
@@ -20,29 +20,29 @@ function C(e) {
20
20
  }
21
21
  //#endregion
22
22
  //#region src/data-table/Pagination.tsx
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>共 <!> 条");
24
- function M(e) {
23
+ var C = /*#__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>"), 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\">"), T = /*#__PURE__*/ d("<svg><path d=\"M11 6l-6 6 6 6\"></svg>", !1, !0, !1), E = /*#__PURE__*/ d("<svg><path d=\"M18 6l-6 6 6 6\"></svg>", !1, !0, !1), D = /*#__PURE__*/ d("<svg><path d=\"M13 6l6 6-6 6\"></svg>", !1, !0, !1), O = /*#__PURE__*/ d("<svg><path d=\"M6 6l6 6-6 6\"></svg>", !1, !0, !1), k = /*#__PURE__*/ d("<div class=van-data-table-pagination-buttons>"), A = /*#__PURE__*/ d("<div class=van-data-table-pagination><span class=van-data-table-pagination-info>共 <!> 条");
24
+ function j(e) {
25
25
  return (() => {
26
- var t = w(), n = t.firstChild;
26
+ var t = C(), n = t.firstChild;
27
27
  return o(() => l(n, "d", e.direction === "left" ? "M15 6l-6 6 6 6" : "M9 6l6 6-6 6")), t;
28
28
  })();
29
29
  }
30
- function N(e) {
30
+ function M(e) {
31
31
  return (() => {
32
- var t = T();
32
+ var t = w();
33
33
  return s(t, (() => {
34
34
  var t = c(() => e.direction === "left");
35
- return () => t() ? [E(), D()] : [O(), k()];
35
+ return () => t() ? [T(), E()] : [D(), O()];
36
36
  })()), t;
37
37
  })();
38
38
  }
39
- function ie(e) {
39
+ function ae(e) {
40
40
  let t = () => Math.max(1, Math.ceil(e.count / e.pageSize));
41
41
  return (() => {
42
- var n = j(), r = n.firstChild, i = r.firstChild.nextSibling;
42
+ var n = A(), r = n.firstChild, i = r.firstChild.nextSibling;
43
43
  return i.nextSibling, s(r, () => e.count, i), s(n, a(m, {
44
44
  get when() {
45
- return t() > 1;
45
+ return c(() => e.showControls !== !1)() && t() > 1;
46
46
  },
47
47
  get children() {
48
48
  return a(x.Root, {
@@ -59,16 +59,16 @@ function ie(e) {
59
59
  },
60
60
  translations: { rootLabel: "分页" },
61
61
  get children() {
62
- var e = A();
62
+ var e = k();
63
63
  return s(e, a(x.FirstTrigger, {
64
64
  class: "van-data-table-pagination-btn",
65
65
  get children() {
66
- return a(N, { direction: "left" });
66
+ return a(M, { direction: "left" });
67
67
  }
68
68
  }), null), s(e, a(x.PrevTrigger, {
69
69
  class: "van-data-table-pagination-btn",
70
70
  get children() {
71
- return a(M, { direction: "left" });
71
+ return a(j, { direction: "left" });
72
72
  }
73
73
  }), null), s(e, a(x.Context, { children: (e) => a(p, {
74
74
  get each() {
@@ -93,12 +93,12 @@ function ie(e) {
93
93
  }) }), null), s(e, a(x.NextTrigger, {
94
94
  class: "van-data-table-pagination-btn",
95
95
  get children() {
96
- return a(M, { direction: "right" });
96
+ return a(j, { direction: "right" });
97
97
  }
98
98
  }), null), s(e, a(x.LastTrigger, {
99
99
  class: "van-data-table-pagination-btn",
100
100
  get children() {
101
- return a(N, { direction: "right" });
101
+ return a(M, { direction: "right" });
102
102
  }
103
103
  }), null), e;
104
104
  }
@@ -108,12 +108,22 @@ function ie(e) {
108
108
  })();
109
109
  }
110
110
  //#endregion
111
+ //#region src/data-table/query.ts
112
+ function oe(e, t, n, r, i) {
113
+ let a = t ? { sorting: i } : {};
114
+ return e ? {
115
+ page: n,
116
+ pageSize: r,
117
+ ...a
118
+ } : a;
119
+ }
120
+ //#endregion
111
121
  //#region src/data-table/DataTable.tsx
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>"), oe = /*#__PURE__*/ d("<div class=van-data-table-badges>"), 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() {
114
- return P();
122
+ var N = /*#__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\">"), se = /*#__PURE__*/ d("<div class=van-data-table-actions>"), ce = /*#__PURE__*/ d("<div class=van-data-table-badges>"), le = /*#__PURE__*/ d("<div class=van-data-table-search>"), P = /*#__PURE__*/ d("<div class=van-data-table-toolbar>"), F = /*#__PURE__*/ d("<div>"), I = /*#__PURE__*/ d("<div class=van-data-table-search-actions>"), L = /*#__PURE__*/ d("<div class=van-data-table-tooltip>");
123
+ function R() {
124
+ return N();
115
125
  }
116
- function V(c) {
126
+ function z(c) {
117
127
  let l = _({
118
128
  defaultPage: 1,
119
129
  defaultPageSize: 10,
@@ -123,11 +133,11 @@ function V(c) {
123
133
  ...e,
124
134
  label: void 0,
125
135
  clearable: e.clearable ?? !0
126
- }))), 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 = (e, t) => typeof e.disabled == "function" ? e.disabled(t) : e.disabled === !0, [D, O] = g(l.searchValues ?? {}), [k, A] = g(l.searchValues ?? {});
127
- ee(te(() => l.searchValues, (e) => {
128
- e && O(() => e);
136
+ }))), S = h(() => l.data !== void 0), C = h(() => l.pagination !== !1), w = h(() => l.columns.some((e) => e.enableSorting === !0)), T = h(() => c.selectable ?? !!c.onSelectionChange), E = (e, t) => typeof e.show == "function" ? e.show(t) : e.show !== !1, D = (e, t) => typeof e.disabled == "function" ? e.disabled(t) : e.disabled === !0, [O, k] = g(l.searchValues ?? {}), [A, j] = g(l.searchValues ?? {});
137
+ ee(v(() => l.searchValues, (e) => {
138
+ e && k(() => e);
129
139
  }));
130
- let [j, M] = g(l.defaultPage), [N, P] = g(l.defaultPageSize), [V, H] = g([]), U = h(() => {
140
+ let [M, N] = g(l.defaultPage), [z, B] = g(l.defaultPageSize), [V, H] = g([]), U = h(() => {
131
141
  let n = 0, r = 0, i = [];
132
142
  for (let o of l.columns) {
133
143
  let c = o.type;
@@ -142,7 +152,7 @@ function V(c) {
142
152
  enableColumnFilter: !1,
143
153
  enableHiding: !1,
144
154
  ...o,
145
- cell: ({ row: e }) => (j() - 1) * N() + e.index + 1
155
+ cell: ({ row: e }) => (C() ? (M() - 1) * z() : 0) + e.index + 1
146
156
  };
147
157
  i.push(e);
148
158
  continue;
@@ -177,17 +187,17 @@ function V(c) {
177
187
  enableSorting: !1,
178
188
  ...t,
179
189
  cell: ({ row: t }) => (() => {
180
- var n = ae();
190
+ var n = se();
181
191
  return s(n, a(p, {
182
192
  each: r,
183
193
  children: (n) => a(m, {
184
194
  get when() {
185
- return T(n, t.original);
195
+ return E(n, t.original);
186
196
  },
187
197
  get children() {
188
198
  return a(e, {
189
199
  get disabled() {
190
- return E(n, t.original);
200
+ return D(n, t.original);
191
201
  },
192
202
  onClick: () => n.onClick(t.original),
193
203
  get variant() {
@@ -214,7 +224,7 @@ function V(c) {
214
224
  cell: ({ row: e }) => {
215
225
  let r = typeof n == "function" ? n(e.original) : n, i = Array.isArray(r) ? r : r ? [r] : [];
216
226
  return i.length === 0 ? "-" : (() => {
217
- var e = oe();
227
+ var e = ce();
218
228
  return s(e, a(p, {
219
229
  each: i,
220
230
  children: (e) => a(t, {
@@ -237,7 +247,7 @@ function V(c) {
237
247
  let e = o.cell;
238
248
  i.push({
239
249
  ...o,
240
- cell: (t) => a(C, {
250
+ cell: (t) => a(ie, {
241
251
  get text() {
242
252
  return String(t.getValue() ?? "");
243
253
  },
@@ -249,7 +259,7 @@ function V(c) {
249
259
  i.push(o);
250
260
  }
251
261
  return i;
252
- }), W, [G, K] = g(null);
262
+ }), W, [ue, G] = g(null);
253
263
  y(() => {
254
264
  let e = W;
255
265
  if (!e) return;
@@ -257,25 +267,21 @@ function V(c) {
257
267
  let t = e.target.closest(".van-data-table-ellipsis[data-ellipsis]");
258
268
  if (!t) return;
259
269
  let n = t.getBoundingClientRect();
260
- K({
270
+ G({
261
271
  left: n.left,
262
272
  text: t.dataset.text ?? "",
263
273
  top: n.bottom + 6
264
274
  });
265
275
  }, n = (e) => {
266
- e.relatedTarget?.closest?.(".van-data-table-ellipsis[data-ellipsis]") || K(null);
276
+ e.relatedTarget?.closest?.(".van-data-table-ellipsis[data-ellipsis]") || G(null);
267
277
  };
268
- e.addEventListener("mouseover", t), e.addEventListener("mouseout", n), v(() => {
278
+ e.addEventListener("mouseover", t), e.addEventListener("mouseout", n), te(() => {
269
279
  e.removeEventListener("mouseover", t), e.removeEventListener("mouseout", n);
270
280
  });
271
281
  });
272
- let [se, ce] = g([]), [le, ue] = g(0), [de, q] = g(!1), J = h(() => S() ? l.data : se()), Y = h(() => S() ? l.total ?? J().length : le()), X = h(() => S() ? l.loading ?? !1 : de()), Z = (e, t, n) => ({
273
- page: e,
274
- pageSize: t,
275
- sorting: n
276
- }), Q = 0, $ = async (e, t) => {
282
+ let [de, K] = g([]), [fe, pe] = g(0), [me, q] = g(!1), J = h(() => S() ? l.data : de()), he = h(() => S() ? l.total ?? J().length : fe()), Y = h(() => S() ? l.loading ?? !1 : me()), X = (e, t, n) => oe(C(), w(), e, t, n), Z = (e, t) => (c.pagination, c.onSearch?.(e, t)), Q = 0, $ = async (e, t) => {
277
283
  if (S()) {
278
- c.onSearch?.(e, t);
284
+ Z(e, t);
279
285
  return;
280
286
  }
281
287
  if (!c.onSearch) {
@@ -285,9 +291,9 @@ function V(c) {
285
291
  let n = ++Q;
286
292
  q(!0);
287
293
  try {
288
- let r = await c.onSearch(e, t);
294
+ let r = await Z(e, t);
289
295
  if (n !== Q) return;
290
- ce(r.data), ue(r.total);
296
+ K(r.data), pe(r.total);
291
297
  } catch (e) {
292
298
  if (n !== Q) return;
293
299
  c.onError?.(e);
@@ -296,57 +302,64 @@ function V(c) {
296
302
  }
297
303
  };
298
304
  y(() => {
299
- S() || $(k(), Z(j(), N(), V()));
305
+ S() || $(A(), X(M(), z(), V()));
300
306
  });
301
- let fe = (e) => {
302
- A(() => e), M(1), $(e, Z(1, N(), V()));
303
- }, pe = () => {
307
+ let ge = (e) => {
308
+ let t = X(M(), z(), V());
309
+ if (c.pagination === !1) {
310
+ c.onSearchValuesChange?.(e, t);
311
+ return;
312
+ }
313
+ c.onSearchValuesChange?.(e, t);
314
+ }, _e = (e) => {
315
+ j(() => e), N(1), $(e, X(1, z(), V()));
316
+ }, ve = () => {
304
317
  let e = Object.fromEntries(d().map((e) => [e.name, void 0]));
305
- O(() => e), A(() => e), M(1), $(e, Z(1, N(), V()));
306
- }, me = (e) => {
307
- e !== j() && (M(e), l.onPageChange?.(e), $(k(), Z(e, N(), V())));
308
- }, he = (e) => {
309
- e !== N() && (P(e), M(1), l.onPageSizeChange?.(e), $(k(), Z(1, e, V())));
310
- }, ge = (e) => {
311
- H(e), l.onSortingChange?.(e), M(1), $(k(), Z(1, N(), e));
318
+ k(() => e), j(() => e), N(1), $(e, X(1, z(), V()));
319
+ }, ye = (e) => {
320
+ e !== M() && (N(e), l.onPageChange?.(e), $(A(), X(e, z(), V())));
321
+ }, be = (e) => {
322
+ e !== z() && (B(e), N(1), l.onPageSizeChange?.(e), $(A(), X(1, e, V())));
323
+ }, xe = (e) => {
324
+ H(e), l.onSortingChange?.(e), N(1), $(A(), X(1, z(), e));
312
325
  };
313
326
  return (() => {
314
- var t = L(), p = W;
327
+ var t = F(), p = W;
315
328
  return typeof p == "function" ? f(p, t) : W = t, s(t, a(m, {
316
329
  get when() {
317
330
  return d().length > 0;
318
331
  },
319
332
  get children() {
320
- var t = F();
333
+ var t = le();
321
334
  return s(t, a(n, {
322
335
  get fields() {
323
336
  return x();
324
337
  },
325
- onSubmit: ({ value: e }) => fe(e),
326
- onValuesChange: (e) => l.onSearchValuesChange?.(e, Z(j(), N(), V())),
338
+ onSubmit: ({ value: e }) => _e(e),
339
+ onValuesChange: ge,
327
340
  get values() {
328
- return D();
341
+ return O();
329
342
  },
330
343
  children: () => a(m, {
331
344
  get when() {
332
345
  return l.showSearchActions;
333
346
  },
334
347
  get children() {
335
- var t = R();
348
+ var t = I();
336
349
  return s(t, a(e, {
337
350
  "aria-label": "重置",
338
351
  class: "van-btn-icon-only",
339
352
  get disabled() {
340
- return X();
353
+ return Y();
341
354
  },
342
- onClick: pe,
355
+ onClick: ve,
343
356
  variant: "outline",
344
357
  get children() {
345
- return a(B, {});
358
+ return a(R, {});
346
359
  }
347
360
  }), null), s(t, a(e, {
348
361
  get disabled() {
349
- return X();
362
+ return Y();
350
363
  },
351
364
  type: "submit",
352
365
  children: "查询"
@@ -360,7 +373,7 @@ function V(c) {
360
373
  return l.children;
361
374
  },
362
375
  get children() {
363
- var e = I();
376
+ var e = P();
364
377
  return s(e, () => l.children), e;
365
378
  }
366
379
  }), null), s(t, a(r, {
@@ -374,7 +387,7 @@ function V(c) {
374
387
  return l.emptyText;
375
388
  },
376
389
  get loading() {
377
- return X();
390
+ return Y();
378
391
  },
379
392
  get onRowClick() {
380
393
  return l.onRowClick;
@@ -382,34 +395,37 @@ function V(c) {
382
395
  get onSelectionChange() {
383
396
  return l.onSelectionChange;
384
397
  },
385
- onSortingChange: ge,
398
+ onSortingChange: xe,
386
399
  get rowId() {
387
400
  return l.rowId;
388
401
  },
389
402
  get selectable() {
390
- return w();
403
+ return T();
391
404
  },
392
405
  get selectedRowIds() {
393
406
  return l.selectedRowIds;
394
407
  }
395
- }), null), s(t, a(ie, {
408
+ }), null), s(t, a(ae, {
396
409
  get count() {
397
- return Y();
410
+ return he();
398
411
  },
399
- onPageChange: me,
400
- onPageSizeChange: he,
412
+ onPageChange: ye,
413
+ onPageSizeChange: be,
401
414
  get page() {
402
- return j();
415
+ return M();
403
416
  },
404
417
  get pageSize() {
405
- return N();
418
+ return z();
419
+ },
420
+ get showControls() {
421
+ return C();
406
422
  }
407
423
  }), null), s(t, a(m, {
408
424
  get when() {
409
- return G();
425
+ return ue();
410
426
  },
411
427
  children: (e) => (() => {
412
- var t = z();
428
+ var t = L();
413
429
  return s(t, () => e().text), o((n) => {
414
430
  var r = `${e().left}px`, i = `${e().top}px`;
415
431
  return r !== n.e && u(t, "left", n.e = r), i !== n.t && u(t, "top", n.t = i), n;
@@ -422,4 +438,4 @@ function V(c) {
422
438
  })();
423
439
  }
424
440
  //#endregion
425
- export { V as DataTable };
441
+ export { z as DataTable };
@@ -0,0 +1,3 @@
1
+ import { SortingState } from '@tanstack/solid-table';
2
+ import { DataTableQuery, DataTableQueryWithoutPagination } from './type';
3
+ export declare function buildDataTableQuery(pagination: boolean, sortingEnabled: boolean, page: number, pageSize: number, sorting: SortingState): DataTableQuery | DataTableQueryWithoutPagination;
@@ -8,11 +8,15 @@ export interface DataTableResult<TData> {
8
8
  data: TData[];
9
9
  total: number;
10
10
  }
11
- /** 传给 onSearch 的查询参数(page 从 1 起) */
12
- export interface DataTableQuery {
11
+ /** 关闭分页时传给 onSearch 的查询参数;未启用排序时为空对象 */
12
+ export interface DataTableQueryWithoutPagination {
13
+ /** 仅当至少一列配置 enableSorting: true 时提供 */
14
+ sorting?: SortingState;
15
+ }
16
+ /** 开启分页时传给 onSearch 的查询参数(page 从 1 起) */
17
+ export interface DataTableQuery extends DataTableQueryWithoutPagination {
13
18
  page: number;
14
19
  pageSize: number;
15
- sorting: SortingState;
16
20
  }
17
21
  /** 操作列按钮配置 */
18
22
  export interface DataTableAction<TData> {
@@ -48,20 +52,20 @@ export type DataTableColumnDef<TData> = {
48
52
  /** 特殊列类型:index=序号列;date/dateTime/shortDateTime=时间戳格式化列(默认列宽 114/172/156,内容不折行);action=操作按钮列 */
49
53
  type?: "action" | "badge" | "date" | "dateTime" | "index" | "shortDateTime";
50
54
  } & Partial<UnionToIntersection<ColumnDef<TData>>>;
51
- /** 取数函数:接收表单值与查询参数,返回当前页数据与总条数 */
52
- export type DataTableSearchHandler<TData, TSearch> = (values: TSearch, query: DataTableQuery) => DataTableResult<TData> | Promise<DataTableResult<TData>> | Promise<void> | undefined | void;
53
- export interface DataTableProps<TData, TSearch extends Record<string, unknown> = Record<string, unknown>> {
55
+ /** 取数函数:接收表单值与查询参数,返回数据与总条数 */
56
+ export type DataTableSearchHandler<TData, TSearch, TQuery extends DataTableQueryWithoutPagination = DataTableQuery> = (values: TSearch, query: TQuery) => DataTableResult<TData> | Promise<DataTableResult<TData>> | Promise<void> | undefined | void;
57
+ interface DataTableBaseProps<TData, TSearch extends Record<string, unknown>, TQuery extends DataTableQueryWithoutPagination> {
54
58
  /** 搜索表单字段;不传或为空数组时不渲染搜索区;默认开启 clearable,字段上显式 clearable: false 可关闭 */
55
59
  searchFields?: FieldConfig[];
56
60
  /** 搜索表单初始值;引用变化时同步进表单(不自动触发查询) */
57
61
  searchValues?: Partial<TSearch>;
58
62
  /** 搜索表单值变化通知,透传到 Form 的 onValuesChange(用户输入、外部 values 同步都会触发);
59
- * 与 onSearch 一致,额外传出当前查询参数(page/pageSize/sorting) */
60
- onSearchValuesChange?: (values: TSearch, query: DataTableQuery) => void;
63
+ * 与 onSearch 一致,额外传出当前查询参数 */
64
+ onSearchValuesChange?: (values: TSearch, query: TQuery) => void;
61
65
  /** 是否显示搜索区底部的"重置/查询"按钮,默认 true */
62
66
  showSearchActions?: boolean;
63
67
  /** 取数函数:内部模式挂载/查询/重置/翻页/排序时调用,受控模式仅作为变化通知 */
64
- onSearch?: DataTableSearchHandler<TData, TSearch>;
68
+ onSearch?: DataTableSearchHandler<TData, TSearch, TQuery>;
65
69
  /** 表格数据:传入则受控渲染 props.data;不传则由 onSearch 结果内部维护 */
66
70
  data?: TData[];
67
71
  /** 总条数:受控模式配合 data 使用,不传回退为 data.length */
@@ -94,4 +98,13 @@ export interface DataTableProps<TData, TSearch extends Record<string, unknown> =
94
98
  children?: JSX.Element;
95
99
  className?: string;
96
100
  }
101
+ interface PaginatedDataTableProps<TData, TSearch extends Record<string, unknown>> extends DataTableBaseProps<TData, TSearch, DataTableQuery> {
102
+ /** 是否开启分页,默认 true */
103
+ pagination?: true;
104
+ }
105
+ interface UnpaginatedDataTableProps<TData, TSearch extends Record<string, unknown>> extends DataTableBaseProps<TData, TSearch, DataTableQueryWithoutPagination> {
106
+ /** 关闭分页;仅显示总条数,查询参数不包含 page/pageSize */
107
+ pagination: false;
108
+ }
109
+ export type DataTableProps<TData, TSearch extends Record<string, unknown> = Record<string, unknown>> = PaginatedDataTableProps<TData, TSearch> | UnpaginatedDataTableProps<TData, TSearch>;
97
110
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vanstack/solid-ark",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,7 +46,8 @@
46
46
  }
47
47
  },
48
48
  "publishConfig": {
49
- "access": "public"
49
+ "access": "public",
50
+ "registry": "https://registry.npmjs.org/"
50
51
  },
51
52
  "peerDependencies": {
52
53
  "@ark-ui/solid": "^5.0.0",
@@ -58,7 +59,7 @@
58
59
  "dependencies": {
59
60
  "@internationalized/date": "^3.12.2",
60
61
  "fast-equals": "^6.0.2",
61
- "@vanstack/shared": "0.0.1"
62
+ "@vanstack/shared": "0.0.5"
62
63
  },
63
64
  "devDependencies": {
64
65
  "@ark-ui/solid": "^5.0.0",
@@ -71,10 +72,10 @@
71
72
  "vite-plugin-solid": "^2.11.0",
72
73
  "vitest": "^4.1.10",
73
74
  "zod": "^4.4.0",
74
- "@vanstack/tsconfig": "0.0.1",
75
+ "@vanstack/eslint-config": "0.0.1",
75
76
  "@vanstack/vite-config": "0.0.2",
76
- "@vanstack/prettier-config": "0.0.1",
77
- "@vanstack/eslint-config": "0.0.1"
77
+ "@vanstack/tsconfig": "0.0.1",
78
+ "@vanstack/prettier-config": "0.0.1"
78
79
  },
79
80
  "scripts": {
80
81
  "build": "tsc --noEmit && vite build",