@vanstack/solid-ark 0.0.38 → 0.0.40

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,33 +267,33 @@ 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);
285
+ return;
286
+ }
287
+ if (!c.onSearch) {
288
+ console.error("非受控模式下请定义onSearch事件");
279
289
  return;
280
290
  }
281
291
  let n = ++Q;
282
292
  q(!0);
283
293
  try {
284
- let r = await c.onSearch(e, t);
294
+ let r = await Z(e, t);
285
295
  if (n !== Q) return;
286
- ce(r.data), ue(r.total);
296
+ K(r.data), pe(r.total);
287
297
  } catch (e) {
288
298
  if (n !== Q) return;
289
299
  c.onError?.(e);
@@ -292,57 +302,64 @@ function V(c) {
292
302
  }
293
303
  };
294
304
  y(() => {
295
- S() || $(k(), Z(j(), N(), V()));
305
+ S() || $(A(), X(M(), z(), V()));
296
306
  });
297
- let fe = (e) => {
298
- A(() => e), M(1), $(e, Z(1, N(), V()));
299
- }, 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 = () => {
300
317
  let e = Object.fromEntries(d().map((e) => [e.name, void 0]));
301
- O(() => e), A(() => e), M(1), $(e, Z(1, N(), V()));
302
- }, me = (e) => {
303
- e !== j() && (M(e), l.onPageChange?.(e), $(k(), Z(e, N(), V())));
304
- }, he = (e) => {
305
- e !== N() && (P(e), M(1), l.onPageSizeChange?.(e), $(k(), Z(1, e, V())));
306
- }, ge = (e) => {
307
- 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));
308
325
  };
309
326
  return (() => {
310
- var t = L(), p = W;
327
+ var t = F(), p = W;
311
328
  return typeof p == "function" ? f(p, t) : W = t, s(t, a(m, {
312
329
  get when() {
313
330
  return d().length > 0;
314
331
  },
315
332
  get children() {
316
- var t = F();
333
+ var t = le();
317
334
  return s(t, a(n, {
318
335
  get fields() {
319
336
  return x();
320
337
  },
321
- onSubmit: ({ value: e }) => fe(e),
322
- onValuesChange: (e) => l.onSearchValuesChange?.(e, Z(j(), N(), V())),
338
+ onSubmit: ({ value: e }) => _e(e),
339
+ onValuesChange: ge,
323
340
  get values() {
324
- return D();
341
+ return O();
325
342
  },
326
343
  children: () => a(m, {
327
344
  get when() {
328
345
  return l.showSearchActions;
329
346
  },
330
347
  get children() {
331
- var t = R();
348
+ var t = I();
332
349
  return s(t, a(e, {
333
350
  "aria-label": "重置",
334
351
  class: "van-btn-icon-only",
335
352
  get disabled() {
336
- return X();
353
+ return Y();
337
354
  },
338
- onClick: pe,
355
+ onClick: ve,
339
356
  variant: "outline",
340
357
  get children() {
341
- return a(B, {});
358
+ return a(R, {});
342
359
  }
343
360
  }), null), s(t, a(e, {
344
361
  get disabled() {
345
- return X();
362
+ return Y();
346
363
  },
347
364
  type: "submit",
348
365
  children: "查询"
@@ -356,7 +373,7 @@ function V(c) {
356
373
  return l.children;
357
374
  },
358
375
  get children() {
359
- var e = I();
376
+ var e = P();
360
377
  return s(e, () => l.children), e;
361
378
  }
362
379
  }), null), s(t, a(r, {
@@ -370,7 +387,7 @@ function V(c) {
370
387
  return l.emptyText;
371
388
  },
372
389
  get loading() {
373
- return X();
390
+ return Y();
374
391
  },
375
392
  get onRowClick() {
376
393
  return l.onRowClick;
@@ -378,34 +395,37 @@ function V(c) {
378
395
  get onSelectionChange() {
379
396
  return l.onSelectionChange;
380
397
  },
381
- onSortingChange: ge,
398
+ onSortingChange: xe,
382
399
  get rowId() {
383
400
  return l.rowId;
384
401
  },
385
402
  get selectable() {
386
- return w();
403
+ return T();
387
404
  },
388
405
  get selectedRowIds() {
389
406
  return l.selectedRowIds;
390
407
  }
391
- }), null), s(t, a(ie, {
408
+ }), null), s(t, a(ae, {
392
409
  get count() {
393
- return Y();
410
+ return he();
394
411
  },
395
- onPageChange: me,
396
- onPageSizeChange: he,
412
+ onPageChange: ye,
413
+ onPageSizeChange: be,
397
414
  get page() {
398
- return j();
415
+ return M();
399
416
  },
400
417
  get pageSize() {
401
- return N();
418
+ return z();
419
+ },
420
+ get showControls() {
421
+ return C();
402
422
  }
403
423
  }), null), s(t, a(m, {
404
424
  get when() {
405
- return G();
425
+ return ue();
406
426
  },
407
427
  children: (e) => (() => {
408
- var t = z();
428
+ var t = L();
409
429
  return s(t, () => e().text), o((n) => {
410
430
  var r = `${e().left}px`, i = `${e().top}px`;
411
431
  return r !== n.e && u(t, "left", n.e = r), i !== n.t && u(t, "top", n.t = i), n;
@@ -418,4 +438,4 @@ function V(c) {
418
438
  })();
419
439
  }
420
440
  //#endregion
421
- 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.38",
3
+ "version": "0.0.40",
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.4"
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",
75
+ "@vanstack/vite-config": "0.0.2",
74
76
  "@vanstack/eslint-config": "0.0.1",
75
- "@vanstack/tsconfig": "0.0.1",
76
77
  "@vanstack/prettier-config": "0.0.1",
77
- "@vanstack/vite-config": "0.0.2"
78
+ "@vanstack/tsconfig": "0.0.1"
78
79
  },
79
80
  "scripts": {
80
81
  "build": "tsc --noEmit && vite build",