@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.
|
@@ -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
|
|
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
|
|
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
|
|
24
|
-
function
|
|
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 =
|
|
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
|
|
30
|
+
function M(e) {
|
|
31
31
|
return (() => {
|
|
32
|
-
var t =
|
|
32
|
+
var t = w();
|
|
33
33
|
return s(t, (() => {
|
|
34
34
|
var t = c(() => e.direction === "left");
|
|
35
|
-
return () => t() ? [
|
|
35
|
+
return () => t() ? [T(), E()] : [D(), O()];
|
|
36
36
|
})()), t;
|
|
37
37
|
})();
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function ae(e) {
|
|
40
40
|
let t = () => Math.max(1, Math.ceil(e.count / e.pageSize));
|
|
41
41
|
return (() => {
|
|
42
|
-
var n =
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
113
|
-
function
|
|
114
|
-
return
|
|
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
|
|
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),
|
|
127
|
-
ee(
|
|
128
|
-
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 [
|
|
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 }) => (
|
|
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 =
|
|
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
|
|
195
|
+
return E(n, t.original);
|
|
186
196
|
},
|
|
187
197
|
get children() {
|
|
188
198
|
return a(e, {
|
|
189
199
|
get disabled() {
|
|
190
|
-
return
|
|
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 =
|
|
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(
|
|
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, [
|
|
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
|
-
|
|
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]") ||
|
|
276
|
+
e.relatedTarget?.closest?.(".van-data-table-ellipsis[data-ellipsis]") || G(null);
|
|
267
277
|
};
|
|
268
|
-
e.addEventListener("mouseover", t), e.addEventListener("mouseout", n),
|
|
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 [
|
|
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
|
-
|
|
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
|
|
294
|
+
let r = await Z(e, t);
|
|
285
295
|
if (n !== Q) return;
|
|
286
|
-
|
|
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() || $(
|
|
305
|
+
S() || $(A(), X(M(), z(), V()));
|
|
296
306
|
});
|
|
297
|
-
let
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
|
|
302
|
-
},
|
|
303
|
-
e !==
|
|
304
|
-
},
|
|
305
|
-
e !==
|
|
306
|
-
},
|
|
307
|
-
H(e), l.onSortingChange?.(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 =
|
|
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 =
|
|
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 }) =>
|
|
322
|
-
onValuesChange:
|
|
338
|
+
onSubmit: ({ value: e }) => _e(e),
|
|
339
|
+
onValuesChange: ge,
|
|
323
340
|
get values() {
|
|
324
|
-
return
|
|
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 =
|
|
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
|
|
353
|
+
return Y();
|
|
337
354
|
},
|
|
338
|
-
onClick:
|
|
355
|
+
onClick: ve,
|
|
339
356
|
variant: "outline",
|
|
340
357
|
get children() {
|
|
341
|
-
return a(
|
|
358
|
+
return a(R, {});
|
|
342
359
|
}
|
|
343
360
|
}), null), s(t, a(e, {
|
|
344
361
|
get disabled() {
|
|
345
|
-
return
|
|
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 =
|
|
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
|
|
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:
|
|
398
|
+
onSortingChange: xe,
|
|
382
399
|
get rowId() {
|
|
383
400
|
return l.rowId;
|
|
384
401
|
},
|
|
385
402
|
get selectable() {
|
|
386
|
-
return
|
|
403
|
+
return T();
|
|
387
404
|
},
|
|
388
405
|
get selectedRowIds() {
|
|
389
406
|
return l.selectedRowIds;
|
|
390
407
|
}
|
|
391
|
-
}), null), s(t, a(
|
|
408
|
+
}), null), s(t, a(ae, {
|
|
392
409
|
get count() {
|
|
393
|
-
return
|
|
410
|
+
return he();
|
|
394
411
|
},
|
|
395
|
-
onPageChange:
|
|
396
|
-
onPageSizeChange:
|
|
412
|
+
onPageChange: ye,
|
|
413
|
+
onPageSizeChange: be,
|
|
397
414
|
get page() {
|
|
398
|
-
return
|
|
415
|
+
return M();
|
|
399
416
|
},
|
|
400
417
|
get pageSize() {
|
|
401
|
-
return
|
|
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
|
|
425
|
+
return ue();
|
|
406
426
|
},
|
|
407
427
|
children: (e) => (() => {
|
|
408
|
-
var t =
|
|
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 {
|
|
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
|
-
/**
|
|
12
|
-
export interface
|
|
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:
|
|
53
|
-
|
|
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
|
|
60
|
-
onSearchValuesChange?: (values: TSearch, query:
|
|
63
|
+
* 与 onSearch 一致,额外传出当前查询参数 */
|
|
64
|
+
onSearchValuesChange?: (values: TSearch, query: TQuery) => void;
|
|
61
65
|
/** 是否显示搜索区底部的"重置/查询"按钮,默认 true */
|
|
62
66
|
showSearchActions?: boolean;
|
|
63
67
|
/** 取数函数:内部模式挂载/查询/重置/翻页/排序时调用,受控模式仅作为变化通知 */
|
|
64
|
-
onSearch
|
|
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.
|
|
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.
|
|
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/
|
|
78
|
+
"@vanstack/tsconfig": "0.0.1"
|
|
78
79
|
},
|
|
79
80
|
"scripts": {
|
|
80
81
|
"build": "tsc --noEmit && vite build",
|