@pathscale/ui 1.1.12 → 1.1.14
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/pagination/Pagination.css +121 -0
- package/dist/components/pagination/Pagination.d.ts +8 -2
- package/dist/components/pagination/Pagination.js +113 -7
- 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/streaming-table/StreamingTable.js +39 -92
- package/dist/components/table/EnhancedTable.d.ts +1 -1
- package/dist/components/table/EnhancedTable.js +131 -195
- package/dist/components/table/{table.css → Table.css} +138 -0
- package/dist/components/table/Table.d.ts +69 -7
- package/dist/components/table/Table.js +302 -28
- 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 -1
- package/dist/components/table/index.js +26 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -1
- package/package.json +1 -1
- package/dist/components/select/select.css +0 -351
|
@@ -1,22 +1,78 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { type Component, type JSX } from "solid-js";
|
|
1
|
+
import "./Table.css";
|
|
2
|
+
import { type Accessor, type Component, type JSX } from "solid-js";
|
|
3
3
|
import type { IComponentBaseProps } from "../types";
|
|
4
4
|
type TableVariant = "primary" | "secondary";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
type TableSortDirection = "ascending" | "descending";
|
|
6
|
+
type TableSortDescriptor = {
|
|
7
|
+
column: string;
|
|
8
|
+
direction: TableSortDirection;
|
|
7
9
|
};
|
|
10
|
+
type TableColumnRenderProps = {
|
|
11
|
+
sortDirection: TableSortDirection | undefined;
|
|
12
|
+
};
|
|
13
|
+
type TableColumnChildren = JSX.Element | ((props: TableColumnRenderProps) => JSX.Element);
|
|
14
|
+
type TableContextValue = {
|
|
15
|
+
variant: Accessor<TableVariant>;
|
|
16
|
+
};
|
|
17
|
+
type TableContentContextValue = {
|
|
18
|
+
sortDescriptor: Accessor<TableSortDescriptor | undefined>;
|
|
19
|
+
onSortChange?: (descriptor: TableSortDescriptor) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const useTableContext: () => TableContextValue;
|
|
22
|
+
export declare const useTableContentContext: () => TableContentContextValue;
|
|
8
23
|
export type TableRootProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps & {
|
|
9
24
|
variant?: TableVariant;
|
|
10
25
|
};
|
|
26
|
+
declare const TableRoot: Component<TableRootProps>;
|
|
11
27
|
export type TableScrollContainerProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
|
|
12
|
-
|
|
28
|
+
declare const TableScrollContainer: Component<TableScrollContainerProps>;
|
|
29
|
+
export type TableContentProps = JSX.HTMLAttributes<HTMLTableElement> & IComponentBaseProps & {
|
|
30
|
+
sortDescriptor?: TableSortDescriptor;
|
|
31
|
+
onSortChange?: (descriptor: TableSortDescriptor) => void;
|
|
32
|
+
};
|
|
33
|
+
declare const TableContent: Component<TableContentProps>;
|
|
13
34
|
export type TableHeaderProps = JSX.HTMLAttributes<HTMLTableSectionElement> & IComponentBaseProps;
|
|
14
|
-
|
|
35
|
+
declare const TableHeader: Component<TableHeaderProps>;
|
|
36
|
+
export type TableColumnProps = Omit<JSX.ThHTMLAttributes<HTMLTableCellElement>, "id" | "children"> & IComponentBaseProps & {
|
|
37
|
+
id: string;
|
|
38
|
+
allowsSorting?: boolean;
|
|
39
|
+
children?: TableColumnChildren;
|
|
40
|
+
};
|
|
41
|
+
declare const TableColumn: Component<TableColumnProps>;
|
|
15
42
|
export type TableBodyProps = JSX.HTMLAttributes<HTMLTableSectionElement> & IComponentBaseProps;
|
|
43
|
+
declare const TableBody: Component<TableBodyProps>;
|
|
16
44
|
export type TableRowProps = JSX.HTMLAttributes<HTMLTableRowElement> & IComponentBaseProps;
|
|
45
|
+
declare const TableRow: Component<TableRowProps>;
|
|
17
46
|
export type TableCellProps = JSX.TdHTMLAttributes<HTMLTableCellElement> & IComponentBaseProps;
|
|
47
|
+
declare const TableCell: Component<TableCellProps>;
|
|
48
|
+
export type TableExpandedRowProps = JSX.HTMLAttributes<HTMLTableRowElement> & IComponentBaseProps & {
|
|
49
|
+
colSpan: number;
|
|
50
|
+
cellClass?: string;
|
|
51
|
+
cellClassName?: string;
|
|
52
|
+
cellDataTheme?: string;
|
|
53
|
+
};
|
|
54
|
+
declare const TableExpandedRow: Component<TableExpandedRowProps>;
|
|
18
55
|
export type TableFooterProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
|
|
19
|
-
|
|
56
|
+
declare const TableFooter: Component<TableFooterProps>;
|
|
57
|
+
export type TablePageSizeProps = Omit<JSX.SelectHTMLAttributes<HTMLSelectElement>, "onChange"> & IComponentBaseProps & {
|
|
58
|
+
value: number;
|
|
59
|
+
options: readonly number[];
|
|
60
|
+
onChange: (value: number) => void;
|
|
61
|
+
label?: JSX.Element;
|
|
62
|
+
selectClass?: string;
|
|
63
|
+
selectClassName?: string;
|
|
64
|
+
};
|
|
65
|
+
declare const TablePageSize: Component<TablePageSizeProps>;
|
|
66
|
+
export type TableResizableContainerProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
|
|
67
|
+
declare const TableResizableContainer: Component<TableResizableContainerProps>;
|
|
68
|
+
export type TableColumnResizerProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
|
|
69
|
+
declare const TableColumnResizer: Component<TableColumnResizerProps>;
|
|
70
|
+
export type TableLoadMoreProps = JSX.HTMLAttributes<HTMLTableRowElement> & IComponentBaseProps;
|
|
71
|
+
declare const TableLoadMore: Component<TableLoadMoreProps>;
|
|
72
|
+
export type TableLoadMoreContentProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
|
|
73
|
+
declare const TableLoadMoreContent: Component<TableLoadMoreContentProps>;
|
|
74
|
+
export type { TableVariant, TableSortDirection, TableSortDescriptor, TableColumnRenderProps, };
|
|
75
|
+
export { TableRoot, TableScrollContainer, TableContent, TableHeader, TableColumn, TableBody, TableRow, TableCell, TableExpandedRow, TableFooter, TablePageSize, TableResizableContainer, TableColumnResizer, TableLoadMore, TableLoadMoreContent, };
|
|
20
76
|
declare const _default: Component<TableRootProps> & {
|
|
21
77
|
Root: Component<TableRootProps>;
|
|
22
78
|
ScrollContainer: Component<TableScrollContainerProps>;
|
|
@@ -26,6 +82,12 @@ declare const _default: Component<TableRootProps> & {
|
|
|
26
82
|
Body: Component<TableBodyProps>;
|
|
27
83
|
Row: Component<TableRowProps>;
|
|
28
84
|
Cell: Component<TableCellProps>;
|
|
85
|
+
ExpandedRow: Component<TableExpandedRowProps>;
|
|
29
86
|
Footer: Component<TableFooterProps>;
|
|
87
|
+
PageSize: Component<TablePageSizeProps>;
|
|
88
|
+
ResizableContainer: Component<TableResizableContainerProps>;
|
|
89
|
+
ColumnResizer: Component<TableColumnResizerProps>;
|
|
90
|
+
LoadMore: Component<TableLoadMoreProps>;
|
|
91
|
+
LoadMoreContent: Component<TableLoadMoreContentProps>;
|
|
30
92
|
};
|
|
31
93
|
export default _default;
|
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
import * as __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__ from "solid-js/web";
|
|
2
|
-
import "./
|
|
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>");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
+
const TABLE_VARIANT_CLASS_MAP = {
|
|
7
|
+
primary: "table-root--primary",
|
|
8
|
+
secondary: "table-root--secondary"
|
|
9
|
+
};
|
|
10
|
+
const TableContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
11
|
+
const TableContentContext = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createContext)();
|
|
12
|
+
const useTableContext = ()=>{
|
|
13
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(TableContext);
|
|
14
|
+
if (context) return context;
|
|
15
|
+
return {
|
|
16
|
+
variant: ()=>"primary"
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const useTableContentContext = ()=>{
|
|
20
|
+
const context = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.useContext)(TableContentContext);
|
|
21
|
+
if (context) return context;
|
|
22
|
+
return {
|
|
23
|
+
sortDescriptor: ()=>void 0
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const invokeEventHandler = (handler, event)=>{
|
|
27
|
+
if ("function" == typeof handler) return void handler(event);
|
|
28
|
+
if (Array.isArray(handler) && "function" == typeof handler[0]) handler[0](handler[1], event);
|
|
29
|
+
};
|
|
10
30
|
const TableRoot = (props)=>{
|
|
11
31
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
12
32
|
"children",
|
|
@@ -18,18 +38,19 @@ const TableRoot = (props)=>{
|
|
|
18
38
|
const variant = ()=>local.variant ?? "primary";
|
|
19
39
|
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(TableContext.Provider, {
|
|
20
40
|
value: {
|
|
21
|
-
|
|
22
|
-
return variant();
|
|
23
|
-
}
|
|
41
|
+
variant
|
|
24
42
|
},
|
|
25
43
|
get children () {
|
|
26
44
|
var _el$ = _tmpl$();
|
|
27
45
|
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
28
46
|
get ["class"] () {
|
|
29
|
-
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table-root",
|
|
47
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table-root", TABLE_VARIANT_CLASS_MAP[variant()], local.class, local.className);
|
|
30
48
|
},
|
|
31
49
|
get ["data-theme"] () {
|
|
32
50
|
return local.dataTheme;
|
|
51
|
+
},
|
|
52
|
+
get ["data-variant"] () {
|
|
53
|
+
return variant();
|
|
33
54
|
}
|
|
34
55
|
}, rest), false, true);
|
|
35
56
|
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, ()=>local.children);
|
|
@@ -63,21 +84,37 @@ const TableContent = (props)=>{
|
|
|
63
84
|
"children",
|
|
64
85
|
"class",
|
|
65
86
|
"className",
|
|
66
|
-
"dataTheme"
|
|
87
|
+
"dataTheme",
|
|
88
|
+
"sortDescriptor",
|
|
89
|
+
"onSortChange"
|
|
67
90
|
]);
|
|
68
|
-
return ((
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
91
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(TableContentContext.Provider, {
|
|
92
|
+
get value () {
|
|
93
|
+
return {
|
|
94
|
+
sortDescriptor: ()=>local.sortDescriptor,
|
|
95
|
+
onSortChange: local.onSortChange
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
get children () {
|
|
99
|
+
var _el$3 = _tmpl$3();
|
|
100
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$3, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
101
|
+
get ["class"] () {
|
|
102
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__content", local.class, local.className);
|
|
103
|
+
},
|
|
104
|
+
get ["data-theme"] () {
|
|
105
|
+
return local.dataTheme;
|
|
106
|
+
},
|
|
107
|
+
get ["data-sort-column"] () {
|
|
108
|
+
return local.sortDescriptor?.column;
|
|
109
|
+
},
|
|
110
|
+
get ["data-sort-direction"] () {
|
|
111
|
+
return local.sortDescriptor?.direction;
|
|
112
|
+
}
|
|
113
|
+
}, rest), false, true);
|
|
114
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$3, ()=>local.children);
|
|
115
|
+
return _el$3;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
81
118
|
};
|
|
82
119
|
const TableHeader = (props)=>{
|
|
83
120
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
@@ -101,23 +138,78 @@ const TableHeader = (props)=>{
|
|
|
101
138
|
})();
|
|
102
139
|
};
|
|
103
140
|
const TableColumn = (props)=>{
|
|
141
|
+
const contentContext = useTableContentContext();
|
|
104
142
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
143
|
+
"id",
|
|
144
|
+
"allowsSorting",
|
|
105
145
|
"children",
|
|
106
146
|
"class",
|
|
107
147
|
"className",
|
|
108
|
-
"dataTheme"
|
|
148
|
+
"dataTheme",
|
|
149
|
+
"onClick",
|
|
150
|
+
"onKeyDown",
|
|
151
|
+
"tabIndex"
|
|
109
152
|
]);
|
|
153
|
+
const isSortable = ()=>Boolean(local.allowsSorting);
|
|
154
|
+
const sortDirection = ()=>{
|
|
155
|
+
const descriptor = contentContext.sortDescriptor();
|
|
156
|
+
if (!descriptor || descriptor.column !== local.id) return;
|
|
157
|
+
return descriptor.direction;
|
|
158
|
+
};
|
|
159
|
+
const emitSortChange = ()=>{
|
|
160
|
+
if (!isSortable() || !contentContext.onSortChange) return;
|
|
161
|
+
contentContext.onSortChange({
|
|
162
|
+
column: local.id,
|
|
163
|
+
direction: "ascending" === sortDirection() ? "descending" : "ascending"
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
const handleClick = (event)=>{
|
|
167
|
+
invokeEventHandler(local.onClick, event);
|
|
168
|
+
if (event.defaultPrevented) return;
|
|
169
|
+
emitSortChange();
|
|
170
|
+
};
|
|
171
|
+
const handleKeyDown = (event)=>{
|
|
172
|
+
invokeEventHandler(local.onKeyDown, event);
|
|
173
|
+
if (event.defaultPrevented) return;
|
|
174
|
+
if (!isSortable()) return;
|
|
175
|
+
if ("Enter" !== event.key && " " !== event.key) return;
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
emitSortChange();
|
|
178
|
+
};
|
|
179
|
+
const renderedChildren = ()=>{
|
|
180
|
+
if ("function" == typeof local.children) return local.children({
|
|
181
|
+
sortDirection: sortDirection()
|
|
182
|
+
});
|
|
183
|
+
return local.children;
|
|
184
|
+
};
|
|
110
185
|
return (()=>{
|
|
111
186
|
var _el$5 = _tmpl$5();
|
|
187
|
+
_el$5.$$keydown = handleKeyDown;
|
|
188
|
+
_el$5.$$click = handleClick;
|
|
112
189
|
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.spread)(_el$5, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.mergeProps)({
|
|
113
190
|
get ["class"] () {
|
|
114
191
|
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__column", local.class, local.className);
|
|
115
192
|
},
|
|
116
193
|
get ["data-theme"] () {
|
|
117
194
|
return local.dataTheme;
|
|
195
|
+
},
|
|
196
|
+
get ["data-column-id"] () {
|
|
197
|
+
return local.id;
|
|
198
|
+
},
|
|
199
|
+
get ["data-allows-sorting"] () {
|
|
200
|
+
return isSortable() ? "true" : void 0;
|
|
201
|
+
},
|
|
202
|
+
get ["data-sort-direction"] () {
|
|
203
|
+
return sortDirection();
|
|
204
|
+
},
|
|
205
|
+
get ["aria-sort"] () {
|
|
206
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.memo)(()=>!!isSortable())() ? sortDirection() ?? "none" : void 0;
|
|
207
|
+
},
|
|
208
|
+
get tabIndex () {
|
|
209
|
+
return isSortable() ? local.tabIndex ?? 0 : local.tabIndex;
|
|
118
210
|
}
|
|
119
211
|
}, rest), false, true);
|
|
120
|
-
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$5,
|
|
212
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$5, renderedChildren);
|
|
121
213
|
return _el$5;
|
|
122
214
|
})();
|
|
123
215
|
};
|
|
@@ -184,6 +276,44 @@ const TableCell = (props)=>{
|
|
|
184
276
|
return _el$8;
|
|
185
277
|
})();
|
|
186
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
|
+
};
|
|
187
317
|
const TableFooter = (props)=>{
|
|
188
318
|
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
189
319
|
"children",
|
|
@@ -205,6 +335,140 @@ const TableFooter = (props)=>{
|
|
|
205
335
|
return _el$9;
|
|
206
336
|
})();
|
|
207
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
|
+
};
|
|
380
|
+
const TableResizableContainer = (props)=>{
|
|
381
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
382
|
+
"children",
|
|
383
|
+
"class",
|
|
384
|
+
"className",
|
|
385
|
+
"dataTheme"
|
|
386
|
+
]);
|
|
387
|
+
return (()=>{
|
|
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)({
|
|
390
|
+
get ["class"] () {
|
|
391
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__resizable-container", local.class, local.className);
|
|
392
|
+
},
|
|
393
|
+
get ["data-theme"] () {
|
|
394
|
+
return local.dataTheme;
|
|
395
|
+
}
|
|
396
|
+
}, rest), false, true);
|
|
397
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$12, ()=>local.children);
|
|
398
|
+
return _el$12;
|
|
399
|
+
})();
|
|
400
|
+
};
|
|
401
|
+
const TableColumnResizer = (props)=>{
|
|
402
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
403
|
+
"children",
|
|
404
|
+
"class",
|
|
405
|
+
"className",
|
|
406
|
+
"dataTheme",
|
|
407
|
+
"role",
|
|
408
|
+
"aria-orientation"
|
|
409
|
+
]);
|
|
410
|
+
return (()=>{
|
|
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)({
|
|
413
|
+
get role () {
|
|
414
|
+
return local.role ?? "separator";
|
|
415
|
+
},
|
|
416
|
+
get ["aria-orientation"] () {
|
|
417
|
+
return local["aria-orientation"] ?? "vertical";
|
|
418
|
+
},
|
|
419
|
+
get ["class"] () {
|
|
420
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__column-resizer", local.class, local.className);
|
|
421
|
+
},
|
|
422
|
+
get ["data-theme"] () {
|
|
423
|
+
return local.dataTheme;
|
|
424
|
+
}
|
|
425
|
+
}, rest), false, true);
|
|
426
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$13, ()=>local.children);
|
|
427
|
+
return _el$13;
|
|
428
|
+
})();
|
|
429
|
+
};
|
|
430
|
+
const TableLoadMore = (props)=>{
|
|
431
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
432
|
+
"children",
|
|
433
|
+
"class",
|
|
434
|
+
"className",
|
|
435
|
+
"dataTheme"
|
|
436
|
+
]);
|
|
437
|
+
return (()=>{
|
|
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)({
|
|
440
|
+
get ["class"] () {
|
|
441
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__load-more", local.class, local.className);
|
|
442
|
+
},
|
|
443
|
+
get ["data-theme"] () {
|
|
444
|
+
return local.dataTheme;
|
|
445
|
+
}
|
|
446
|
+
}, rest), false, true);
|
|
447
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$14, ()=>local.children);
|
|
448
|
+
return _el$14;
|
|
449
|
+
})();
|
|
450
|
+
};
|
|
451
|
+
const TableLoadMoreContent = (props)=>{
|
|
452
|
+
const [local, rest] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
|
|
453
|
+
"children",
|
|
454
|
+
"class",
|
|
455
|
+
"className",
|
|
456
|
+
"dataTheme"
|
|
457
|
+
]);
|
|
458
|
+
return (()=>{
|
|
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)({
|
|
461
|
+
get ["class"] () {
|
|
462
|
+
return (0, __WEBPACK_EXTERNAL_MODULE_tailwind_merge_e05e3e95__.twMerge)("table__load-more-content", local.class, local.className);
|
|
463
|
+
},
|
|
464
|
+
get ["data-theme"] () {
|
|
465
|
+
return local.dataTheme;
|
|
466
|
+
}
|
|
467
|
+
}, rest), false, true);
|
|
468
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$15, ()=>local.children);
|
|
469
|
+
return _el$15;
|
|
470
|
+
})();
|
|
471
|
+
};
|
|
208
472
|
const Table = Object.assign(TableRoot, {
|
|
209
473
|
Root: TableRoot,
|
|
210
474
|
ScrollContainer: TableScrollContainer,
|
|
@@ -214,6 +478,16 @@ const Table = Object.assign(TableRoot, {
|
|
|
214
478
|
Body: TableBody,
|
|
215
479
|
Row: TableRow,
|
|
216
480
|
Cell: TableCell,
|
|
217
|
-
|
|
481
|
+
ExpandedRow: TableExpandedRow,
|
|
482
|
+
Footer: TableFooter,
|
|
483
|
+
PageSize: TablePageSize,
|
|
484
|
+
ResizableContainer: TableResizableContainer,
|
|
485
|
+
ColumnResizer: TableColumnResizer,
|
|
486
|
+
LoadMore: TableLoadMore,
|
|
487
|
+
LoadMoreContent: TableLoadMoreContent
|
|
218
488
|
});
|
|
219
|
-
|
|
489
|
+
(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.delegateEvents)([
|
|
490
|
+
"click",
|
|
491
|
+
"keydown"
|
|
492
|
+
]);
|
|
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;
|