@pathscale/ui 1.1.13 → 1.1.15
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.
- package/dist/components/colorpicker/ColorWheelFlower.js +287 -62
- package/dist/components/glass-panel/GlassPanel.js +5 -3
- package/dist/components/select/Select.css +244 -0
- package/dist/components/select/Select.d.ts +44 -13
- package/dist/components/select/Select.js +618 -41
- package/dist/components/select/index.d.ts +2 -1
- package/dist/components/table/EnhancedTable.js +79 -160
- package/dist/components/table/Table.css +50 -9
- package/dist/components/table/Table.d.ts +19 -1
- package/dist/components/table/Table.js +100 -18
- package/dist/components/table/hooks/helpers.d.ts +7 -0
- package/dist/components/table/hooks/helpers.js +26 -0
- package/dist/components/table/hooks/index.d.ts +9 -0
- package/dist/components/table/hooks/index.js +18 -0
- package/dist/components/table/hooks/useAnchoredOverlayPosition.d.ts +16 -0
- package/dist/components/table/hooks/useAnchoredOverlayPosition.js +61 -0
- package/dist/components/table/hooks/useTableExpansion.d.ts +13 -0
- package/dist/components/table/hooks/useTableExpansion.js +17 -0
- package/dist/components/table/hooks/useTableFiltering.d.ts +30 -0
- package/dist/components/table/hooks/useTableFiltering.js +67 -0
- package/dist/components/table/hooks/useTableModel.d.ts +27 -0
- package/dist/components/table/hooks/useTableModel.js +56 -0
- package/dist/components/table/hooks/useTablePagination.d.ts +20 -0
- package/dist/components/table/hooks/useTablePagination.js +48 -0
- package/dist/components/table/hooks/useTableSelection.d.ts +14 -0
- package/dist/components/table/hooks/useTableSelection.js +17 -0
- package/dist/components/table/hooks/useTableSorting.d.ts +19 -0
- package/dist/components/table/hooks/useTableSorting.js +21 -0
- package/dist/components/table/index.d.ts +4 -2
- package/dist/components/table/index.js +13 -1
- package/dist/components/theme-color-picker/ThemeColorPicker.d.ts +4 -0
- package/dist/components/theme-color-picker/ThemeColorPicker.js +3 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +10 -1
- package/package.json +2 -1
- package/dist/components/select/select.css +0 -351
|
@@ -2,7 +2,7 @@ import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web
|
|
|
2
2
|
import "./Table.css";
|
|
3
3
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
4
4
|
import * as __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__ from "tailwind-merge";
|
|
5
|
-
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-scroll-container>"), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<table data-slot=table-content>"), _tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<thead data-slot=table-header>"), _tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<th data-slot=table-column>"), _tmpl$6 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tbody data-slot=table-body>"), _tmpl$7 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tr data-slot=table-row>"), _tmpl$8 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<td data-slot=table-cell>"), _tmpl$9 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-footer>"), _tmpl$0 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-resizable-container>"), _tmpl$
|
|
5
|
+
var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table>"), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-scroll-container>"), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<table data-slot=table-content>"), _tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<thead data-slot=table-header>"), _tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<th data-slot=table-column>"), _tmpl$6 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tbody data-slot=table-body>"), _tmpl$7 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tr data-slot=table-row>"), _tmpl$8 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<td data-slot=table-cell>"), _tmpl$9 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-footer>"), _tmpl$0 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<label data-slot=table-page-size><span class=table__page-size-label data-slot=table-page-size-label></span><select>"), _tmpl$1 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<option>"), _tmpl$10 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-resizable-container>"), _tmpl$11 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-column-resizer>"), _tmpl$12 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<tr data-slot=table-load-more>"), _tmpl$13 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)("<div data-slot=table-load-more-content>");
|
|
6
6
|
const TABLE_VARIANT_CLASS_MAP = {
|
|
7
7
|
primary: "table-root--primary",
|
|
8
8
|
secondary: "table-root--secondary"
|
|
@@ -276,6 +276,44 @@ const TableCell = (props)=>{
|
|
|
276
276
|
return _el$8;
|
|
277
277
|
})();
|
|
278
278
|
};
|
|
279
|
+
const TableExpandedRow = (props)=>{
|
|
280
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
281
|
+
"children",
|
|
282
|
+
"class",
|
|
283
|
+
"className",
|
|
284
|
+
"dataTheme",
|
|
285
|
+
"colSpan",
|
|
286
|
+
"cellClass",
|
|
287
|
+
"cellClassName",
|
|
288
|
+
"cellDataTheme"
|
|
289
|
+
]);
|
|
290
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(TableRow, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
291
|
+
get ["class"] () {
|
|
292
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__expanded-row", local.class, local.className);
|
|
293
|
+
},
|
|
294
|
+
get ["data-theme"] () {
|
|
295
|
+
return local.dataTheme;
|
|
296
|
+
},
|
|
297
|
+
"data-slot": "table-expanded-row"
|
|
298
|
+
}, rest, {
|
|
299
|
+
get children () {
|
|
300
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(TableCell, {
|
|
301
|
+
get colSpan () {
|
|
302
|
+
return local.colSpan;
|
|
303
|
+
},
|
|
304
|
+
get ["class"] () {
|
|
305
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__expanded-cell", local.cellClass, local.cellClassName);
|
|
306
|
+
},
|
|
307
|
+
get dataTheme () {
|
|
308
|
+
return local.cellDataTheme ?? local.dataTheme;
|
|
309
|
+
},
|
|
310
|
+
get children () {
|
|
311
|
+
return local.children;
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}));
|
|
316
|
+
};
|
|
279
317
|
const TableFooter = (props)=>{
|
|
280
318
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
281
319
|
"children",
|
|
@@ -297,6 +335,48 @@ const TableFooter = (props)=>{
|
|
|
297
335
|
return _el$9;
|
|
298
336
|
})();
|
|
299
337
|
};
|
|
338
|
+
const TablePageSize = (props)=>{
|
|
339
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
340
|
+
"class",
|
|
341
|
+
"className",
|
|
342
|
+
"dataTheme",
|
|
343
|
+
"value",
|
|
344
|
+
"options",
|
|
345
|
+
"onChange",
|
|
346
|
+
"label",
|
|
347
|
+
"selectClass",
|
|
348
|
+
"selectClassName"
|
|
349
|
+
]);
|
|
350
|
+
return (()=>{
|
|
351
|
+
var _el$0 = _tmpl$0(), _el$1 = _el$0.firstChild, _el$10 = _el$1.nextSibling;
|
|
352
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$1, ()=>local.label ?? "Rows");
|
|
353
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$10, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)(rest, {
|
|
354
|
+
get ["class"] () {
|
|
355
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__page-size-select", local.selectClass, local.selectClassName);
|
|
356
|
+
},
|
|
357
|
+
get value () {
|
|
358
|
+
return local.value;
|
|
359
|
+
},
|
|
360
|
+
onChange: (event)=>local.onChange(Number(event.currentTarget.value))
|
|
361
|
+
}), false, true);
|
|
362
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$10, ()=>local.options.map((option)=>(()=>{
|
|
363
|
+
var _el$11 = _tmpl$1();
|
|
364
|
+
_el$11.value = option;
|
|
365
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$11, option);
|
|
366
|
+
return _el$11;
|
|
367
|
+
})()));
|
|
368
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)((_p$)=>{
|
|
369
|
+
var _v$ = (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__page-size", local.class, local.className), _v$2 = local.dataTheme;
|
|
370
|
+
_v$ !== _p$.e && (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.className)(_el$0, _p$.e = _v$);
|
|
371
|
+
_v$2 !== _p$.t && (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.setAttribute)(_el$0, "data-theme", _p$.t = _v$2);
|
|
372
|
+
return _p$;
|
|
373
|
+
}, {
|
|
374
|
+
e: void 0,
|
|
375
|
+
t: void 0
|
|
376
|
+
});
|
|
377
|
+
return _el$0;
|
|
378
|
+
})();
|
|
379
|
+
};
|
|
300
380
|
const TableResizableContainer = (props)=>{
|
|
301
381
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
302
382
|
"children",
|
|
@@ -305,8 +385,8 @@ const TableResizableContainer = (props)=>{
|
|
|
305
385
|
"dataTheme"
|
|
306
386
|
]);
|
|
307
387
|
return (()=>{
|
|
308
|
-
var _el$
|
|
309
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$
|
|
388
|
+
var _el$12 = _tmpl$10();
|
|
389
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$12, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
310
390
|
get ["class"] () {
|
|
311
391
|
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__resizable-container", local.class, local.className);
|
|
312
392
|
},
|
|
@@ -314,8 +394,8 @@ const TableResizableContainer = (props)=>{
|
|
|
314
394
|
return local.dataTheme;
|
|
315
395
|
}
|
|
316
396
|
}, rest), false, true);
|
|
317
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$
|
|
318
|
-
return _el$
|
|
397
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$12, ()=>local.children);
|
|
398
|
+
return _el$12;
|
|
319
399
|
})();
|
|
320
400
|
};
|
|
321
401
|
const TableColumnResizer = (props)=>{
|
|
@@ -328,8 +408,8 @@ const TableColumnResizer = (props)=>{
|
|
|
328
408
|
"aria-orientation"
|
|
329
409
|
]);
|
|
330
410
|
return (()=>{
|
|
331
|
-
var _el$
|
|
332
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$
|
|
411
|
+
var _el$13 = _tmpl$11();
|
|
412
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$13, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
333
413
|
get role () {
|
|
334
414
|
return local.role ?? "separator";
|
|
335
415
|
},
|
|
@@ -343,8 +423,8 @@ const TableColumnResizer = (props)=>{
|
|
|
343
423
|
return local.dataTheme;
|
|
344
424
|
}
|
|
345
425
|
}, rest), false, true);
|
|
346
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$
|
|
347
|
-
return _el$
|
|
426
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$13, ()=>local.children);
|
|
427
|
+
return _el$13;
|
|
348
428
|
})();
|
|
349
429
|
};
|
|
350
430
|
const TableLoadMore = (props)=>{
|
|
@@ -355,8 +435,8 @@ const TableLoadMore = (props)=>{
|
|
|
355
435
|
"dataTheme"
|
|
356
436
|
]);
|
|
357
437
|
return (()=>{
|
|
358
|
-
var _el$
|
|
359
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$
|
|
438
|
+
var _el$14 = _tmpl$12();
|
|
439
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$14, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
360
440
|
get ["class"] () {
|
|
361
441
|
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__load-more", local.class, local.className);
|
|
362
442
|
},
|
|
@@ -364,8 +444,8 @@ const TableLoadMore = (props)=>{
|
|
|
364
444
|
return local.dataTheme;
|
|
365
445
|
}
|
|
366
446
|
}, rest), false, true);
|
|
367
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$
|
|
368
|
-
return _el$
|
|
447
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$14, ()=>local.children);
|
|
448
|
+
return _el$14;
|
|
369
449
|
})();
|
|
370
450
|
};
|
|
371
451
|
const TableLoadMoreContent = (props)=>{
|
|
@@ -376,8 +456,8 @@ const TableLoadMoreContent = (props)=>{
|
|
|
376
456
|
"dataTheme"
|
|
377
457
|
]);
|
|
378
458
|
return (()=>{
|
|
379
|
-
var _el$
|
|
380
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$
|
|
459
|
+
var _el$15 = _tmpl$13();
|
|
460
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$15, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
381
461
|
get ["class"] () {
|
|
382
462
|
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__load-more-content", local.class, local.className);
|
|
383
463
|
},
|
|
@@ -385,8 +465,8 @@ const TableLoadMoreContent = (props)=>{
|
|
|
385
465
|
return local.dataTheme;
|
|
386
466
|
}
|
|
387
467
|
}, rest), false, true);
|
|
388
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$
|
|
389
|
-
return _el$
|
|
468
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$15, ()=>local.children);
|
|
469
|
+
return _el$15;
|
|
390
470
|
})();
|
|
391
471
|
};
|
|
392
472
|
const Table = Object.assign(TableRoot, {
|
|
@@ -398,7 +478,9 @@ const Table = Object.assign(TableRoot, {
|
|
|
398
478
|
Body: TableBody,
|
|
399
479
|
Row: TableRow,
|
|
400
480
|
Cell: TableCell,
|
|
481
|
+
ExpandedRow: TableExpandedRow,
|
|
401
482
|
Footer: TableFooter,
|
|
483
|
+
PageSize: TablePageSize,
|
|
402
484
|
ResizableContainer: TableResizableContainer,
|
|
403
485
|
ColumnResizer: TableColumnResizer,
|
|
404
486
|
LoadMore: TableLoadMore,
|
|
@@ -408,4 +490,4 @@ const Table = Object.assign(TableRoot, {
|
|
|
408
490
|
"click",
|
|
409
491
|
"keydown"
|
|
410
492
|
]);
|
|
411
|
-
export { TableBody, TableCell, TableColumn, TableColumnResizer, TableContent, TableFooter, TableHeader, TableLoadMore, TableLoadMoreContent, TableResizableContainer, TableRoot, TableRow, TableScrollContainer, Table as default, useTableContentContext, useTableContext };
|
|
493
|
+
export { TableBody, TableCell, TableColumn, TableColumnResizer, TableContent, TableExpandedRow, TableFooter, TableHeader, TableLoadMore, TableLoadMoreContent, TablePageSize, TableResizableContainer, TableRoot, TableRow, TableScrollContainer, Table as default, useTableContentContext, useTableContext };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Accessor } from "solid-js";
|
|
2
|
+
import type { SortingState, Updater } from "@tanstack/solid-table";
|
|
3
|
+
import type { HookSortDescriptor } from "./useTableSorting";
|
|
4
|
+
export declare const resolveUpdater: <T>(previous: T, updater: Updater<T>) => T;
|
|
5
|
+
export declare const asAccessor: <T>(value: Accessor<T> | T) => Accessor<T>;
|
|
6
|
+
export declare const toSortDescriptor: (sorting: SortingState) => HookSortDescriptor | undefined;
|
|
7
|
+
export declare const toSortingState: (descriptor: HookSortDescriptor | undefined) => SortingState;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const resolveUpdater = (previous, updater)=>{
|
|
2
|
+
if ("function" == typeof updater) return updater(previous);
|
|
3
|
+
return updater;
|
|
4
|
+
};
|
|
5
|
+
const asAccessor = (value)=>{
|
|
6
|
+
if ("function" == typeof value) return value;
|
|
7
|
+
return ()=>value;
|
|
8
|
+
};
|
|
9
|
+
const toSortDescriptor = (sorting)=>{
|
|
10
|
+
const activeSort = sorting[0];
|
|
11
|
+
if (!activeSort) return;
|
|
12
|
+
return {
|
|
13
|
+
column: activeSort.id,
|
|
14
|
+
direction: activeSort.desc ? "descending" : "ascending"
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const toSortingState = (descriptor)=>{
|
|
18
|
+
if (!descriptor) return [];
|
|
19
|
+
return [
|
|
20
|
+
{
|
|
21
|
+
id: descriptor.column,
|
|
22
|
+
desc: "descending" === descriptor.direction
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
};
|
|
26
|
+
export { asAccessor, resolveUpdater, toSortDescriptor, toSortingState };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { useTableSorting, type UseTableSortingOptions, type UseTableSortingResult, type HookSortDirection, type HookSortDescriptor, } from "./useTableSorting";
|
|
2
|
+
export { useTablePagination, type UseTablePaginationOptions, type UseTablePaginationResult, } from "./useTablePagination";
|
|
3
|
+
export { useTableFiltering, type UseTableFilteringOptions, type UseTableFilteringResult, } from "./useTableFiltering";
|
|
4
|
+
export { useTableSelection, type UseTableSelectionOptions, type UseTableSelectionResult, type TableSelectionState, } from "./useTableSelection";
|
|
5
|
+
export { useTableExpansion, type UseTableExpansionOptions, type UseTableExpansionResult, } from "./useTableExpansion";
|
|
6
|
+
export { useTableModel, type UseTableModelOptions, } from "./useTableModel";
|
|
7
|
+
export { toSortDescriptor, toSortingState } from "./helpers";
|
|
8
|
+
export { useAnchoredOverlayPosition } from "./useAnchoredOverlayPosition";
|
|
9
|
+
export type { UseAnchoredOverlayPositionOptions } from "./useAnchoredOverlayPosition";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTableSorting_js_bcbcf7e7__ from "./useTableSorting.js";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTablePagination_js_221a602e__ from "./useTablePagination.js";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTableFiltering_js_c008d8f8__ from "./useTableFiltering.js";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTableSelection_js_6791c7a2__ from "./useTableSelection.js";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTableExpansion_js_e1dc5a4d__ from "./useTableExpansion.js";
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useTableModel_js_1f373411__ from "./useTableModel.js";
|
|
7
|
+
import * as __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__ from "./helpers.js";
|
|
8
|
+
import * as __WEBPACK_EXTERNAL_MODULE__useAnchoredOverlayPosition_js_ef09d6e3__ from "./useAnchoredOverlayPosition.js";
|
|
9
|
+
var __webpack_exports__toSortDescriptor = __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.toSortDescriptor;
|
|
10
|
+
var __webpack_exports__toSortingState = __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.toSortingState;
|
|
11
|
+
var __webpack_exports__useAnchoredOverlayPosition = __WEBPACK_EXTERNAL_MODULE__useAnchoredOverlayPosition_js_ef09d6e3__.useAnchoredOverlayPosition;
|
|
12
|
+
var __webpack_exports__useTableExpansion = __WEBPACK_EXTERNAL_MODULE__useTableExpansion_js_e1dc5a4d__.useTableExpansion;
|
|
13
|
+
var __webpack_exports__useTableFiltering = __WEBPACK_EXTERNAL_MODULE__useTableFiltering_js_c008d8f8__.useTableFiltering;
|
|
14
|
+
var __webpack_exports__useTableModel = __WEBPACK_EXTERNAL_MODULE__useTableModel_js_1f373411__.useTableModel;
|
|
15
|
+
var __webpack_exports__useTablePagination = __WEBPACK_EXTERNAL_MODULE__useTablePagination_js_221a602e__.useTablePagination;
|
|
16
|
+
var __webpack_exports__useTableSelection = __WEBPACK_EXTERNAL_MODULE__useTableSelection_js_6791c7a2__.useTableSelection;
|
|
17
|
+
var __webpack_exports__useTableSorting = __WEBPACK_EXTERNAL_MODULE__useTableSorting_js_bcbcf7e7__.useTableSorting;
|
|
18
|
+
export { __webpack_exports__toSortDescriptor as toSortDescriptor, __webpack_exports__toSortingState as toSortingState, __webpack_exports__useAnchoredOverlayPosition as useAnchoredOverlayPosition, __webpack_exports__useTableExpansion as useTableExpansion, __webpack_exports__useTableFiltering as useTableFiltering, __webpack_exports__useTableModel as useTableModel, __webpack_exports__useTablePagination as useTablePagination, __webpack_exports__useTableSelection as useTableSelection, __webpack_exports__useTableSorting as useTableSorting };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Accessor, type JSX } from "solid-js";
|
|
2
|
+
export interface UseAnchoredOverlayPositionOptions {
|
|
3
|
+
isOpen: Accessor<boolean>;
|
|
4
|
+
getAnchor: Accessor<HTMLElement | undefined>;
|
|
5
|
+
getOverlay: Accessor<HTMLElement | undefined>;
|
|
6
|
+
offset?: number;
|
|
7
|
+
viewportPadding?: number;
|
|
8
|
+
align?: "start" | "end";
|
|
9
|
+
width?: number | Accessor<number | undefined>;
|
|
10
|
+
minWidth?: number | Accessor<number | undefined>;
|
|
11
|
+
zIndex?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const useAnchoredOverlayPosition: (options: UseAnchoredOverlayPositionOptions) => {
|
|
14
|
+
style: Accessor<JSX.CSSProperties>;
|
|
15
|
+
updatePosition: () => void;
|
|
16
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
2
|
+
const resolveNumber = (value)=>{
|
|
3
|
+
if ("function" == typeof value) return value();
|
|
4
|
+
return value;
|
|
5
|
+
};
|
|
6
|
+
const useAnchoredOverlayPosition = (options)=>{
|
|
7
|
+
const [style, setStyle] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)({
|
|
8
|
+
position: "fixed",
|
|
9
|
+
top: "0px",
|
|
10
|
+
left: "0px",
|
|
11
|
+
"z-index": options.zIndex?.toString() ?? "1300"
|
|
12
|
+
});
|
|
13
|
+
const updatePosition = ()=>{
|
|
14
|
+
const anchor = options.getAnchor();
|
|
15
|
+
if (!anchor || "undefined" == typeof window) return;
|
|
16
|
+
const overlay = options.getOverlay();
|
|
17
|
+
const offset = options.offset ?? 6;
|
|
18
|
+
const viewportPadding = options.viewportPadding ?? 8;
|
|
19
|
+
const rect = anchor.getBoundingClientRect();
|
|
20
|
+
const desiredWidth = resolveNumber(options.width);
|
|
21
|
+
const desiredMinWidth = resolveNumber(options.minWidth);
|
|
22
|
+
const overlayRect = overlay?.getBoundingClientRect();
|
|
23
|
+
const measuredWidth = desiredWidth ?? overlayRect?.width ?? 0;
|
|
24
|
+
const measuredHeight = overlayRect?.height ?? 0;
|
|
25
|
+
const widthForBounds = desiredWidth ?? desiredMinWidth ?? measuredWidth;
|
|
26
|
+
let left = "start" === options.align ? rect.left : rect.right - widthForBounds;
|
|
27
|
+
left = Math.max(viewportPadding, Math.min(left, window.innerWidth - widthForBounds - viewportPadding));
|
|
28
|
+
let top = rect.bottom + offset;
|
|
29
|
+
if (measuredHeight > 0 && top + measuredHeight > window.innerHeight - viewportPadding) {
|
|
30
|
+
const above = rect.top - measuredHeight - offset;
|
|
31
|
+
top = above >= viewportPadding ? above : Math.max(viewportPadding, window.innerHeight - measuredHeight - viewportPadding);
|
|
32
|
+
}
|
|
33
|
+
setStyle({
|
|
34
|
+
position: "fixed",
|
|
35
|
+
top: `${top}px`,
|
|
36
|
+
left: `${left}px`,
|
|
37
|
+
width: desiredWidth ? `${desiredWidth}px` : void 0,
|
|
38
|
+
"min-width": desiredMinWidth ? `${desiredMinWidth}px` : void 0,
|
|
39
|
+
"z-index": options.zIndex?.toString() ?? "1300"
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
|
|
43
|
+
if (!options.isOpen()) return;
|
|
44
|
+
requestAnimationFrame(()=>{
|
|
45
|
+
updatePosition();
|
|
46
|
+
requestAnimationFrame(updatePosition);
|
|
47
|
+
});
|
|
48
|
+
const onViewportChange = ()=>updatePosition();
|
|
49
|
+
window.addEventListener("resize", onViewportChange);
|
|
50
|
+
window.addEventListener("scroll", onViewportChange, true);
|
|
51
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
|
|
52
|
+
window.removeEventListener("resize", onViewportChange);
|
|
53
|
+
window.removeEventListener("scroll", onViewportChange, true);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
style,
|
|
58
|
+
updatePosition
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export { useAnchoredOverlayPosition };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Accessor } from "solid-js";
|
|
2
|
+
import type { ExpandedState, OnChangeFn } from "@tanstack/solid-table";
|
|
3
|
+
export interface UseTableExpansionOptions {
|
|
4
|
+
expanded?: Accessor<ExpandedState>;
|
|
5
|
+
setExpanded?: OnChangeFn<ExpandedState>;
|
|
6
|
+
initialExpanded?: ExpandedState;
|
|
7
|
+
}
|
|
8
|
+
export interface UseTableExpansionResult {
|
|
9
|
+
expanded: Accessor<ExpandedState>;
|
|
10
|
+
setExpanded: OnChangeFn<ExpandedState>;
|
|
11
|
+
collapseAll: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const useTableExpansion: (options?: UseTableExpansionOptions) => UseTableExpansionResult;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__ from "./helpers.js";
|
|
3
|
+
const useTableExpansion = (options = {})=>{
|
|
4
|
+
const [internalExpanded, setInternalExpanded] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(options.initialExpanded ?? {});
|
|
5
|
+
const expanded = ()=>options.expanded?.() ?? internalExpanded();
|
|
6
|
+
const setExpanded = (updater)=>{
|
|
7
|
+
if (options.setExpanded) return void options.setExpanded(updater);
|
|
8
|
+
setInternalExpanded((prev)=>(0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.resolveUpdater)(prev, updater));
|
|
9
|
+
};
|
|
10
|
+
const collapseAll = ()=>setExpanded({});
|
|
11
|
+
return {
|
|
12
|
+
expanded,
|
|
13
|
+
setExpanded,
|
|
14
|
+
collapseAll
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export { useTableExpansion };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Accessor, type JSX } from "solid-js";
|
|
2
|
+
import type { ColumnFiltersState, OnChangeFn } from "@tanstack/solid-table";
|
|
3
|
+
export interface UseTableFilteringOptions {
|
|
4
|
+
columnFilters?: Accessor<ColumnFiltersState>;
|
|
5
|
+
setColumnFilters?: OnChangeFn<ColumnFiltersState>;
|
|
6
|
+
initialColumnFilters?: ColumnFiltersState;
|
|
7
|
+
globalFilter?: Accessor<string>;
|
|
8
|
+
setGlobalFilter?: OnChangeFn<string>;
|
|
9
|
+
initialGlobalFilter?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface UseTableFilteringResult {
|
|
12
|
+
columnFilters: Accessor<ColumnFiltersState>;
|
|
13
|
+
setColumnFilters: OnChangeFn<ColumnFiltersState>;
|
|
14
|
+
globalFilter: Accessor<string>;
|
|
15
|
+
setGlobalFilter: OnChangeFn<string>;
|
|
16
|
+
getColumnFilterValue: (columnId: string) => string;
|
|
17
|
+
setColumnFilterValue: (columnId: string, value: string) => void;
|
|
18
|
+
getColumnFilterProps: (columnId: string, options?: {
|
|
19
|
+
afterChange?: (value: string) => void;
|
|
20
|
+
}) => {
|
|
21
|
+
readonly value: string;
|
|
22
|
+
onInput: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;
|
|
23
|
+
onChange: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement, Event>;
|
|
24
|
+
};
|
|
25
|
+
openFilterFor: Accessor<string | null>;
|
|
26
|
+
closeFilter: () => void;
|
|
27
|
+
toggleFilter: (columnId: string) => void;
|
|
28
|
+
anyFilterActive: Accessor<boolean>;
|
|
29
|
+
}
|
|
30
|
+
export declare const useTableFiltering: (options?: UseTableFilteringOptions) => UseTableFilteringResult;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__ from "./helpers.js";
|
|
3
|
+
const useTableFiltering = (options = {})=>{
|
|
4
|
+
const [internalColumnFilters, setInternalColumnFilters] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(options.initialColumnFilters ?? []);
|
|
5
|
+
const [internalGlobalFilter, setInternalGlobalFilter] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(options.initialGlobalFilter ?? "");
|
|
6
|
+
const [openFilterFor, setOpenFilterFor] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(null);
|
|
7
|
+
const columnFilters = ()=>options.columnFilters?.() ?? internalColumnFilters();
|
|
8
|
+
const globalFilter = ()=>options.globalFilter?.() ?? internalGlobalFilter();
|
|
9
|
+
const setColumnFilters = (updater)=>{
|
|
10
|
+
if (options.setColumnFilters) return void options.setColumnFilters(updater);
|
|
11
|
+
setInternalColumnFilters((prev)=>(0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.resolveUpdater)(prev, updater));
|
|
12
|
+
};
|
|
13
|
+
const setGlobalFilter = (updater)=>{
|
|
14
|
+
if (options.setGlobalFilter) return void options.setGlobalFilter(updater);
|
|
15
|
+
setInternalGlobalFilter((prev)=>(0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.resolveUpdater)(prev, updater));
|
|
16
|
+
};
|
|
17
|
+
const closeFilter = ()=>setOpenFilterFor(null);
|
|
18
|
+
const toggleFilter = (columnId)=>{
|
|
19
|
+
setOpenFilterFor((current)=>current === columnId ? null : columnId);
|
|
20
|
+
};
|
|
21
|
+
const getColumnFilterValue = (columnId)=>{
|
|
22
|
+
const filter = columnFilters().find((entry)=>entry.id === columnId);
|
|
23
|
+
return "string" == typeof filter?.value ? filter.value : "";
|
|
24
|
+
};
|
|
25
|
+
const setColumnFilterValue = (columnId, value)=>{
|
|
26
|
+
setColumnFilters((previous)=>{
|
|
27
|
+
const next = previous.filter((entry)=>entry.id !== columnId);
|
|
28
|
+
if (value.trim().length > 0) next.push({
|
|
29
|
+
id: columnId,
|
|
30
|
+
value
|
|
31
|
+
});
|
|
32
|
+
return next;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const getColumnFilterProps = (columnId, bindingOptions)=>{
|
|
36
|
+
const applyValue = (value)=>{
|
|
37
|
+
setColumnFilterValue(columnId, value);
|
|
38
|
+
bindingOptions?.afterChange?.(value);
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
get value () {
|
|
42
|
+
return getColumnFilterValue(columnId);
|
|
43
|
+
},
|
|
44
|
+
onInput: (event)=>{
|
|
45
|
+
applyValue(event.currentTarget.value);
|
|
46
|
+
},
|
|
47
|
+
onChange: (event)=>{
|
|
48
|
+
applyValue(event.currentTarget.value);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const anyFilterActive = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>columnFilters().length > 0);
|
|
53
|
+
return {
|
|
54
|
+
columnFilters,
|
|
55
|
+
setColumnFilters,
|
|
56
|
+
globalFilter,
|
|
57
|
+
setGlobalFilter,
|
|
58
|
+
getColumnFilterValue,
|
|
59
|
+
setColumnFilterValue,
|
|
60
|
+
getColumnFilterProps,
|
|
61
|
+
openFilterFor,
|
|
62
|
+
closeFilter,
|
|
63
|
+
toggleFilter,
|
|
64
|
+
anyFilterActive
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export { useTableFiltering };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Accessor } from "solid-js";
|
|
2
|
+
import { type ColumnDef, type ColumnFiltersState, type ExpandedState, type OnChangeFn, type PaginationState, type Row, type SortingState, type Table } from "@tanstack/solid-table";
|
|
3
|
+
import type { TableSelectionState } from "./useTableSelection";
|
|
4
|
+
export interface UseTableModelOptions<TData> {
|
|
5
|
+
data: Accessor<TData[]> | TData[];
|
|
6
|
+
columns: Accessor<ColumnDef<TData, any>[]> | ColumnDef<TData, any>[];
|
|
7
|
+
getRowId?: (originalRow: TData, index: number, parent?: Row<TData>) => string;
|
|
8
|
+
sorting?: Accessor<SortingState>;
|
|
9
|
+
setSorting?: OnChangeFn<SortingState>;
|
|
10
|
+
columnFilters?: Accessor<ColumnFiltersState>;
|
|
11
|
+
setColumnFilters?: OnChangeFn<ColumnFiltersState>;
|
|
12
|
+
pagination?: Accessor<PaginationState>;
|
|
13
|
+
setPagination?: OnChangeFn<PaginationState>;
|
|
14
|
+
globalFilter?: Accessor<string>;
|
|
15
|
+
setGlobalFilter?: OnChangeFn<string>;
|
|
16
|
+
rowSelection?: Accessor<TableSelectionState>;
|
|
17
|
+
setRowSelection?: OnChangeFn<TableSelectionState>;
|
|
18
|
+
expanded?: Accessor<ExpandedState>;
|
|
19
|
+
setExpanded?: OnChangeFn<ExpandedState>;
|
|
20
|
+
enableSorting?: boolean;
|
|
21
|
+
enableFilters?: boolean;
|
|
22
|
+
enablePagination?: boolean;
|
|
23
|
+
enableRowSelection?: boolean;
|
|
24
|
+
enableExpanding?: boolean;
|
|
25
|
+
getRowCanExpand?: (row: Row<TData>) => boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare const useTableModel: <TData>(options: UseTableModelOptions<TData>) => Table<TData>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__ from "@tanstack/solid-table";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__ from "./helpers.js";
|
|
3
|
+
const useTableModel = (options)=>{
|
|
4
|
+
const dataAccessor = (0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.asAccessor)(options.data);
|
|
5
|
+
const columnsAccessor = (0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.asAccessor)(options.columns);
|
|
6
|
+
return (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.createSolidTable)({
|
|
7
|
+
get data () {
|
|
8
|
+
return dataAccessor();
|
|
9
|
+
},
|
|
10
|
+
get columns () {
|
|
11
|
+
return columnsAccessor();
|
|
12
|
+
},
|
|
13
|
+
getRowId: options.getRowId,
|
|
14
|
+
state: {
|
|
15
|
+
get sorting () {
|
|
16
|
+
return options.sorting?.() ?? [];
|
|
17
|
+
},
|
|
18
|
+
get columnFilters () {
|
|
19
|
+
return options.columnFilters?.() ?? [];
|
|
20
|
+
},
|
|
21
|
+
get pagination () {
|
|
22
|
+
return options.pagination?.() ?? {
|
|
23
|
+
pageIndex: 0,
|
|
24
|
+
pageSize: 10
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
get globalFilter () {
|
|
28
|
+
return options.globalFilter?.() ?? "";
|
|
29
|
+
},
|
|
30
|
+
get rowSelection () {
|
|
31
|
+
return options.rowSelection?.() ?? {};
|
|
32
|
+
},
|
|
33
|
+
get expanded () {
|
|
34
|
+
return options.expanded?.() ?? {};
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
onSortingChange: options.setSorting,
|
|
38
|
+
onColumnFiltersChange: options.setColumnFilters,
|
|
39
|
+
onPaginationChange: options.setPagination,
|
|
40
|
+
onGlobalFilterChange: options.setGlobalFilter,
|
|
41
|
+
onRowSelectionChange: options.setRowSelection,
|
|
42
|
+
onExpandedChange: options.setExpanded,
|
|
43
|
+
getCoreRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getCoreRowModel)(),
|
|
44
|
+
getSortedRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getSortedRowModel)(),
|
|
45
|
+
getFilteredRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getFilteredRowModel)(),
|
|
46
|
+
getPaginationRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getPaginationRowModel)(),
|
|
47
|
+
getExpandedRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getExpandedRowModel)(),
|
|
48
|
+
enableSorting: options.enableSorting,
|
|
49
|
+
enableFilters: options.enableFilters,
|
|
50
|
+
manualPagination: void 0 === options.enablePagination ? false : !options.enablePagination,
|
|
51
|
+
enableRowSelection: options.enableRowSelection,
|
|
52
|
+
enableExpanding: options.enableExpanding,
|
|
53
|
+
getRowCanExpand: options.getRowCanExpand
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
export { useTableModel };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Accessor } from "solid-js";
|
|
2
|
+
import type { OnChangeFn, PaginationState } from "@tanstack/solid-table";
|
|
3
|
+
export interface UseTablePaginationOptions {
|
|
4
|
+
pagination?: Accessor<PaginationState>;
|
|
5
|
+
setPagination?: OnChangeFn<PaginationState>;
|
|
6
|
+
initialPagination?: PaginationState;
|
|
7
|
+
pageSizeOptions?: readonly number[];
|
|
8
|
+
}
|
|
9
|
+
export interface UseTablePaginationResult {
|
|
10
|
+
pagination: Accessor<PaginationState>;
|
|
11
|
+
setPagination: OnChangeFn<PaginationState>;
|
|
12
|
+
pageSizeOptions: Accessor<readonly number[]>;
|
|
13
|
+
setPageIndex: (index: number) => void;
|
|
14
|
+
setPageSize: (size: number) => void;
|
|
15
|
+
firstPage: () => void;
|
|
16
|
+
previousPage: () => void;
|
|
17
|
+
nextPage: (maxPageIndex: number) => void;
|
|
18
|
+
lastPage: (maxPageIndex: number) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const useTablePagination: (options?: UseTablePaginationOptions) => UseTablePaginationResult;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__ from "solid-js";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__ from "./helpers.js";
|
|
3
|
+
const DEFAULT_PAGE_SIZE_OPTIONS = [
|
|
4
|
+
10,
|
|
5
|
+
25,
|
|
6
|
+
50,
|
|
7
|
+
100
|
|
8
|
+
];
|
|
9
|
+
const useTablePagination = (options = {})=>{
|
|
10
|
+
const [internalPagination, setInternalPagination] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(options.initialPagination ?? {
|
|
11
|
+
pageIndex: 0,
|
|
12
|
+
pageSize: 10
|
|
13
|
+
});
|
|
14
|
+
const pagination = ()=>options.pagination?.() ?? internalPagination();
|
|
15
|
+
const pageSizeOptions = ()=>options.pageSizeOptions ?? DEFAULT_PAGE_SIZE_OPTIONS;
|
|
16
|
+
const setPagination = (updater)=>{
|
|
17
|
+
if (options.setPagination) return void options.setPagination(updater);
|
|
18
|
+
setInternalPagination((prev)=>(0, __WEBPACK_EXTERNAL_MODULE__helpers_js_87289b43__.resolveUpdater)(prev, updater));
|
|
19
|
+
};
|
|
20
|
+
const setPageIndex = (index)=>{
|
|
21
|
+
setPagination((prev)=>({
|
|
22
|
+
...prev,
|
|
23
|
+
pageIndex: Math.max(0, index)
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
const setPageSize = (size)=>{
|
|
27
|
+
setPagination((prev)=>({
|
|
28
|
+
...prev,
|
|
29
|
+
pageSize: size
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
const firstPage = ()=>setPageIndex(0);
|
|
33
|
+
const previousPage = ()=>setPageIndex(pagination().pageIndex - 1);
|
|
34
|
+
const nextPage = (maxPageIndex)=>setPageIndex(Math.min(maxPageIndex, pagination().pageIndex + 1));
|
|
35
|
+
const lastPage = (maxPageIndex)=>setPageIndex(maxPageIndex);
|
|
36
|
+
return {
|
|
37
|
+
pagination,
|
|
38
|
+
setPagination,
|
|
39
|
+
pageSizeOptions,
|
|
40
|
+
setPageIndex,
|
|
41
|
+
setPageSize,
|
|
42
|
+
firstPage,
|
|
43
|
+
previousPage,
|
|
44
|
+
nextPage,
|
|
45
|
+
lastPage
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export { useTablePagination };
|