@vanstack/solid-ark 0.0.39 → 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,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
|
-
|
|
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);
|
|
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
|
|
294
|
+
let r = await Z(e, t);
|
|
289
295
|
if (n !== Q) return;
|
|
290
|
-
|
|
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() || $(
|
|
305
|
+
S() || $(A(), X(M(), z(), V()));
|
|
300
306
|
});
|
|
301
|
-
let
|
|
302
|
-
|
|
303
|
-
|
|
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
|
-
|
|
306
|
-
},
|
|
307
|
-
e !==
|
|
308
|
-
},
|
|
309
|
-
e !==
|
|
310
|
-
},
|
|
311
|
-
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));
|
|
312
325
|
};
|
|
313
326
|
return (() => {
|
|
314
|
-
var t =
|
|
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 =
|
|
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 }) =>
|
|
326
|
-
onValuesChange:
|
|
338
|
+
onSubmit: ({ value: e }) => _e(e),
|
|
339
|
+
onValuesChange: ge,
|
|
327
340
|
get values() {
|
|
328
|
-
return
|
|
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 =
|
|
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
|
|
353
|
+
return Y();
|
|
341
354
|
},
|
|
342
|
-
onClick:
|
|
355
|
+
onClick: ve,
|
|
343
356
|
variant: "outline",
|
|
344
357
|
get children() {
|
|
345
|
-
return a(
|
|
358
|
+
return a(R, {});
|
|
346
359
|
}
|
|
347
360
|
}), null), s(t, a(e, {
|
|
348
361
|
get disabled() {
|
|
349
|
-
return
|
|
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 =
|
|
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
|
|
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:
|
|
398
|
+
onSortingChange: xe,
|
|
386
399
|
get rowId() {
|
|
387
400
|
return l.rowId;
|
|
388
401
|
},
|
|
389
402
|
get selectable() {
|
|
390
|
-
return
|
|
403
|
+
return T();
|
|
391
404
|
},
|
|
392
405
|
get selectedRowIds() {
|
|
393
406
|
return l.selectedRowIds;
|
|
394
407
|
}
|
|
395
|
-
}), null), s(t, a(
|
|
408
|
+
}), null), s(t, a(ae, {
|
|
396
409
|
get count() {
|
|
397
|
-
return
|
|
410
|
+
return he();
|
|
398
411
|
},
|
|
399
|
-
onPageChange:
|
|
400
|
-
onPageSizeChange:
|
|
412
|
+
onPageChange: ye,
|
|
413
|
+
onPageSizeChange: be,
|
|
401
414
|
get page() {
|
|
402
|
-
return
|
|
415
|
+
return M();
|
|
403
416
|
},
|
|
404
417
|
get pageSize() {
|
|
405
|
-
return
|
|
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
|
|
425
|
+
return ue();
|
|
410
426
|
},
|
|
411
427
|
children: (e) => (() => {
|
|
412
|
-
var t =
|
|
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 {
|
|
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?: 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.
|
|
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",
|
|
74
|
-
"@vanstack/tsconfig": "0.0.1",
|
|
75
75
|
"@vanstack/vite-config": "0.0.2",
|
|
76
|
+
"@vanstack/eslint-config": "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",
|