@epilot/volt-ui-experimental-griffel 0.3.0 → 0.3.1
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/accordion/accordion.js +66 -126
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +138 -238
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +47 -102
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +72 -96
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +48 -56
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +49 -97
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +49 -57
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +31 -55
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +164 -288
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +81 -137
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +48 -96
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +107 -155
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +161 -285
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +54 -114
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +45 -117
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +39 -98
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +58 -90
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +39 -83
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-header.js +54 -88
- package/dist/components/data-table/data-table-header.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +15 -27
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-pagination.js +19 -27
- package/dist/components/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +64 -87
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +16 -24
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +145 -181
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +214 -342
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +92 -132
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +317 -501
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-context.js +60 -64
- package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +149 -249
- package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-panel.js +165 -273
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-popover.js +14 -22
- package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +90 -134
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +132 -198
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/density-provider/density-provider.js +19 -39
- package/dist/components/density-provider/density-provider.js.map +1 -1
- package/dist/components/dialog/dialog.js +145 -253
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +164 -272
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +204 -384
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +243 -435
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field-select.js +19 -23
- package/dist/components/field/field-select.js.map +1 -1
- package/dist/components/field/field.js +189 -297
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/label/label.js +19 -27
- package/dist/components/label/label.js.map +1 -1
- package/dist/components/list/list.js +315 -595
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +159 -323
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +68 -84
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +48 -84
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +49 -89
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +198 -350
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +97 -141
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +200 -396
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +16 -24
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +43 -83
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +20 -44
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/switch/switch.js +83 -155
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +210 -468
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +131 -211
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +58 -94
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/text/text.js +32 -40
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/toast/toast.js +111 -187
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle-group.js +24 -40
- package/dist/components/toggle/toggle-group.js.map +1 -1
- package/dist/components/toggle/toggle.js +39 -47
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +62 -106
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/lib/clear-button.js +15 -27
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/lib/icons.js +6 -18
- package/dist/lib/icons.js.map +1 -1
- package/dist/tokens.json +1 -1
- package/package.json +1 -1
- package/dist/_virtual/jsx-dev-runtime.js +0 -5
- package/dist/_virtual/jsx-dev-runtime.js.map +0 -1
- package/dist/_virtual/react-jsx-dev-runtime.development.js +0 -5
- package/dist/_virtual/react-jsx-dev-runtime.development.js.map +0 -1
- package/dist/_virtual/react-jsx-dev-runtime.production.js +0 -5
- package/dist/_virtual/react-jsx-dev-runtime.production.js.map +0 -1
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js +0 -236
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js.map +0 -1
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js +0 -21
- package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js.map +0 -1
- package/dist/vendor/react/jsx-dev-runtime.js +0 -9
- package/dist/vendor/react/jsx-dev-runtime.js.map +0 -1
|
@@ -1,151 +1,131 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
3
|
-
import { useState as
|
|
4
|
-
import { useReactTable as
|
|
5
|
-
import { SLOT_ATTR as
|
|
6
|
-
import { mergeClasses as
|
|
7
|
-
import { makeVoltStyles as
|
|
8
|
-
import { Checkbox as
|
|
9
|
-
import { canonicalDensity as
|
|
10
|
-
import { DataTableContext as
|
|
11
|
-
import { DataTableColumnHeader as
|
|
12
|
-
import { getPaginationRowModel as
|
|
13
|
-
function
|
|
14
|
-
return
|
|
1
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
2
|
+
import * as Le from "react";
|
|
3
|
+
import { useState as c, useRef as he, useEffect as A, useMemo as d, useCallback as je } from "react";
|
|
4
|
+
import { useReactTable as He } from "../../vendor/@tanstack/react-table/build/lib/index.js";
|
|
5
|
+
import { SLOT_ATTR as _e } from "../../packages/volt-runtime/dist/renderer/contract.js";
|
|
6
|
+
import { mergeClasses as Ee } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
|
|
7
|
+
import { makeVoltStyles as Oe } from "../../styles/make-styles.js";
|
|
8
|
+
import { Checkbox as Z } from "../checkbox/checkbox.js";
|
|
9
|
+
import { canonicalDensity as We, DensityContextBoundary as qe } from "../density-provider/density-provider.js";
|
|
10
|
+
import { DataTableContext as Be } from "./data-table-context.js";
|
|
11
|
+
import { DataTableColumnHeader as Ge } from "./data-table-column-header.js";
|
|
12
|
+
import { getPaginationRowModel as Je, getFilteredRowModel as Ke, getSortedRowModel as Qe, getCoreRowModel as Ue } from "../../vendor/@tanstack/table-core/build/lib/index.js";
|
|
13
|
+
function Xe(n, P) {
|
|
14
|
+
return P ? n.map((s) => {
|
|
15
15
|
var r;
|
|
16
16
|
if (s.enableSorting === !1 || typeof s.header != "string")
|
|
17
17
|
return s;
|
|
18
|
-
const
|
|
18
|
+
const m = s.header;
|
|
19
19
|
return {
|
|
20
20
|
...s,
|
|
21
|
-
header: ({ column:
|
|
22
|
-
fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
|
|
23
|
-
lineNumber: 162,
|
|
24
|
-
columnNumber: 9
|
|
25
|
-
}, this),
|
|
21
|
+
header: ({ column: u }) => /* @__PURE__ */ f(Ge, { column: u, title: m }),
|
|
26
22
|
meta: {
|
|
27
23
|
...s.meta,
|
|
28
24
|
// Preserve original header for visibility dropdown fallback
|
|
29
|
-
visibilityLabel: ((r = s.meta) == null ? void 0 : r.visibilityLabel) ??
|
|
25
|
+
visibilityLabel: ((r = s.meta) == null ? void 0 : r.visibilityLabel) ?? m,
|
|
30
26
|
// Flag to indicate this header was auto-wrapped with DataTableColumnHeader
|
|
31
27
|
_sortableHeaderWrapped: !0
|
|
32
28
|
}
|
|
33
29
|
};
|
|
34
|
-
}) :
|
|
30
|
+
}) : n;
|
|
35
31
|
}
|
|
36
|
-
const
|
|
32
|
+
const Ye = Oe({
|
|
37
33
|
root: {
|
|
38
34
|
width: "100%",
|
|
39
35
|
maxWidth: "100%"
|
|
40
36
|
}
|
|
41
37
|
});
|
|
42
|
-
function
|
|
43
|
-
columns:
|
|
44
|
-
data:
|
|
38
|
+
function Ze({
|
|
39
|
+
columns: n,
|
|
40
|
+
data: P,
|
|
45
41
|
children: s,
|
|
46
|
-
getRowId:
|
|
42
|
+
getRowId: m,
|
|
47
43
|
enableRowSelection: r = !1,
|
|
48
|
-
enableSorting:
|
|
49
|
-
manualSorting:
|
|
50
|
-
enableFiltering:
|
|
51
|
-
manualFiltering:
|
|
52
|
-
enableGlobalFilter:
|
|
44
|
+
enableSorting: u = !1,
|
|
45
|
+
manualSorting: F = !1,
|
|
46
|
+
enableFiltering: $ = !1,
|
|
47
|
+
manualFiltering: V = !1,
|
|
48
|
+
enableGlobalFilter: N = !1,
|
|
53
49
|
pagination: t,
|
|
54
|
-
sorting:
|
|
55
|
-
onSortingChange:
|
|
56
|
-
defaultSorting:
|
|
50
|
+
sorting: C,
|
|
51
|
+
onSortingChange: b,
|
|
52
|
+
defaultSorting: g = [],
|
|
57
53
|
rowSelection: p,
|
|
58
|
-
onRowSelectionChange:
|
|
54
|
+
onRowSelectionChange: y,
|
|
59
55
|
defaultRowSelection: ee = {},
|
|
60
56
|
columnFilters: te,
|
|
61
|
-
onColumnFiltersChange:
|
|
57
|
+
onColumnFiltersChange: x,
|
|
62
58
|
columnVisibility: le,
|
|
63
|
-
onColumnVisibilityChange:
|
|
59
|
+
onColumnVisibilityChange: i,
|
|
64
60
|
globalFilter: se,
|
|
65
|
-
onGlobalFilterChange:
|
|
66
|
-
onRowClick:
|
|
67
|
-
clickableRowClassName:
|
|
68
|
-
selectedRowClassName:
|
|
69
|
-
cellOverflow:
|
|
70
|
-
disableColumnResizing:
|
|
61
|
+
onGlobalFilterChange: w,
|
|
62
|
+
onRowClick: L,
|
|
63
|
+
clickableRowClassName: h,
|
|
64
|
+
selectedRowClassName: j,
|
|
65
|
+
cellOverflow: H = "truncate",
|
|
66
|
+
disableColumnResizing: T = !1,
|
|
71
67
|
columnResizeMode: re = "onChange",
|
|
72
|
-
columnSizing:
|
|
73
|
-
onColumnSizingChange:
|
|
74
|
-
defaultColumnSizing:
|
|
75
|
-
columnPinning:
|
|
76
|
-
onColumnPinningChange:
|
|
77
|
-
defaultColumnPinning:
|
|
78
|
-
autoPinSelection:
|
|
79
|
-
showHeaderBorder:
|
|
80
|
-
showRowBorders:
|
|
81
|
-
fitHeaderWidth:
|
|
82
|
-
density:
|
|
83
|
-
className:
|
|
84
|
-
},
|
|
85
|
-
const
|
|
68
|
+
columnSizing: ce,
|
|
69
|
+
onColumnSizingChange: z,
|
|
70
|
+
defaultColumnSizing: oe = {},
|
|
71
|
+
columnPinning: fe,
|
|
72
|
+
onColumnPinningChange: D,
|
|
73
|
+
defaultColumnPinning: ne = { left: [], right: [] },
|
|
74
|
+
autoPinSelection: _,
|
|
75
|
+
showHeaderBorder: E = !0,
|
|
76
|
+
showRowBorders: O = !0,
|
|
77
|
+
fitHeaderWidth: W = !1,
|
|
78
|
+
density: M,
|
|
79
|
+
className: ue
|
|
80
|
+
}, de) {
|
|
81
|
+
const me = Ye(), [Se, Ie] = c(g), [Pe, be] = c(ee), [ye, xe] = c([]), [ie, we] = c({}), [Te, ze] = c(""), [De, Me] = c(oe), [ve, Re] = c(ne), ae = {
|
|
86
82
|
pageIndex: (t == null ? void 0 : t.pageIndex) ?? 0,
|
|
87
83
|
pageSize: (t == null ? void 0 : t.pageSize) ?? 10
|
|
88
|
-
}, [
|
|
89
|
-
|
|
84
|
+
}, [v, R] = c(ae), a = he(!1);
|
|
85
|
+
A(() => {
|
|
90
86
|
if ((t == null ? void 0 : t.pageIndex) === void 0)
|
|
91
87
|
return;
|
|
92
88
|
const e = t.pageIndex;
|
|
93
|
-
|
|
89
|
+
R(
|
|
94
90
|
(l) => l.pageIndex === e ? l : { ...l, pageIndex: e }
|
|
95
91
|
);
|
|
96
|
-
}, [t == null ? void 0 : t.pageIndex]),
|
|
92
|
+
}, [t == null ? void 0 : t.pageIndex]), A(() => {
|
|
97
93
|
if ((t == null ? void 0 : t.pageSize) === void 0)
|
|
98
94
|
return;
|
|
99
95
|
const e = t.pageSize;
|
|
100
|
-
|
|
96
|
+
R(
|
|
101
97
|
(l) => l.pageSize === e ? l : { ...l, pageSize: e }
|
|
102
98
|
);
|
|
103
99
|
}, [t == null ? void 0 : t.pageSize]);
|
|
104
|
-
const
|
|
105
|
-
if (!(r &&
|
|
106
|
-
return
|
|
107
|
-
const l =
|
|
108
|
-
return l.includes("select") ?
|
|
109
|
-
...
|
|
100
|
+
const q = !T, B = C ?? Se, S = p ?? Pe, G = te ?? ye, J = le ?? ie, K = se ?? Te, Q = ce ?? De, o = fe ?? ve, ke = d(() => {
|
|
101
|
+
if (!(r && _ && Object.keys(S).length > 0))
|
|
102
|
+
return o;
|
|
103
|
+
const l = o.left ?? [];
|
|
104
|
+
return l.includes("select") ? o : {
|
|
105
|
+
...o,
|
|
110
106
|
left: ["select", ...l]
|
|
111
107
|
};
|
|
112
|
-
}, [
|
|
108
|
+
}, [o, S, r, _]), U = d(
|
|
113
109
|
() => ({
|
|
114
110
|
id: "select",
|
|
115
|
-
header: ({ table: e }) => /* @__PURE__ */
|
|
116
|
-
|
|
111
|
+
header: ({ table: e }) => /* @__PURE__ */ f(
|
|
112
|
+
Z,
|
|
117
113
|
{
|
|
118
114
|
"data-fs-element": "DataTable-SelectAll",
|
|
119
115
|
checked: e.getIsAllPageRowsSelected() || e.getIsSomePageRowsSelected() && "indeterminate",
|
|
120
116
|
onCheckedChange: (l) => e.toggleAllPageRowsSelected(!!l),
|
|
121
117
|
"aria-label": "Select all rows"
|
|
122
|
-
}
|
|
123
|
-
void 0,
|
|
124
|
-
!1,
|
|
125
|
-
{
|
|
126
|
-
fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
|
|
127
|
-
lineNumber: 320,
|
|
128
|
-
columnNumber: 9
|
|
129
|
-
},
|
|
130
|
-
this
|
|
118
|
+
}
|
|
131
119
|
),
|
|
132
|
-
cell: ({ row: e }) => /* @__PURE__ */
|
|
133
|
-
|
|
120
|
+
cell: ({ row: e }) => /* @__PURE__ */ f(
|
|
121
|
+
Z,
|
|
134
122
|
{
|
|
135
123
|
"data-fs-element": "DataTable-SelectRow",
|
|
136
124
|
checked: e.getIsSelected(),
|
|
137
125
|
onCheckedChange: (l) => e.toggleSelected(!!l),
|
|
138
126
|
disabled: !e.getCanSelect(),
|
|
139
127
|
"aria-label": "Select row"
|
|
140
|
-
}
|
|
141
|
-
void 0,
|
|
142
|
-
!1,
|
|
143
|
-
{
|
|
144
|
-
fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
|
|
145
|
-
lineNumber: 331,
|
|
146
|
-
columnNumber: 9
|
|
147
|
-
},
|
|
148
|
-
this
|
|
128
|
+
}
|
|
149
129
|
),
|
|
150
130
|
enableSorting: !1,
|
|
151
131
|
enableHiding: !1,
|
|
@@ -153,156 +133,140 @@ function Ye({
|
|
|
153
133
|
size: 40
|
|
154
134
|
}),
|
|
155
135
|
[]
|
|
156
|
-
),
|
|
136
|
+
), k = d(() => Xe(n, u), [n, u]), Ae = d(() => r ? [U, ...k] : k, [k, r, U]), I = !!t, X = I && ((t == null ? void 0 : t.totalItems) !== void 0 || (t == null ? void 0 : t.pageCount) !== void 0), Fe = je(
|
|
157
137
|
(e) => {
|
|
158
|
-
|
|
138
|
+
a.current = !0, R((l) => typeof e == "function" ? e(l) : e);
|
|
159
139
|
},
|
|
160
140
|
[]
|
|
161
141
|
);
|
|
162
|
-
|
|
142
|
+
A(() => {
|
|
163
143
|
var e;
|
|
164
|
-
|
|
165
|
-
}, [
|
|
166
|
-
const
|
|
167
|
-
data:
|
|
168
|
-
columns:
|
|
169
|
-
getRowId:
|
|
170
|
-
getCoreRowModel:
|
|
144
|
+
a.current && ((e = t == null ? void 0 : t.onPaginationChange) == null || e.call(t, v), a.current = !1);
|
|
145
|
+
}, [v, t]);
|
|
146
|
+
const Y = He({
|
|
147
|
+
data: P,
|
|
148
|
+
columns: Ae,
|
|
149
|
+
getRowId: m,
|
|
150
|
+
getCoreRowModel: Ue(),
|
|
171
151
|
// Default column configuration
|
|
172
152
|
defaultColumn: {
|
|
173
153
|
minSize: 50
|
|
174
154
|
},
|
|
175
155
|
// Sorting
|
|
176
|
-
...
|
|
177
|
-
getSortedRowModel:
|
|
156
|
+
...u && !F && {
|
|
157
|
+
getSortedRowModel: Qe()
|
|
178
158
|
},
|
|
179
|
-
...
|
|
159
|
+
...F && {
|
|
180
160
|
manualSorting: !0
|
|
181
161
|
},
|
|
182
162
|
state: {
|
|
183
|
-
sorting:
|
|
184
|
-
rowSelection:
|
|
185
|
-
columnFilters:
|
|
186
|
-
columnVisibility:
|
|
187
|
-
globalFilter:
|
|
188
|
-
columnPinning:
|
|
189
|
-
...
|
|
190
|
-
pagination:
|
|
163
|
+
sorting: B,
|
|
164
|
+
rowSelection: S,
|
|
165
|
+
columnFilters: G,
|
|
166
|
+
columnVisibility: J,
|
|
167
|
+
globalFilter: K,
|
|
168
|
+
columnPinning: ke,
|
|
169
|
+
...I && {
|
|
170
|
+
pagination: v
|
|
191
171
|
},
|
|
192
|
-
...
|
|
193
|
-
columnSizing:
|
|
172
|
+
...q && {
|
|
173
|
+
columnSizing: Q
|
|
194
174
|
}
|
|
195
175
|
},
|
|
196
176
|
onSortingChange: (e) => {
|
|
197
|
-
const l = typeof e == "function" ? e(
|
|
198
|
-
|
|
177
|
+
const l = typeof e == "function" ? e(B) : e;
|
|
178
|
+
Ie(l), b == null || b(l);
|
|
199
179
|
},
|
|
200
180
|
// Row selection
|
|
201
181
|
enableRowSelection: typeof r == "function" ? (e) => r(e) : r,
|
|
202
182
|
onRowSelectionChange: (e) => {
|
|
203
|
-
const l = typeof e == "function" ? e(
|
|
204
|
-
|
|
183
|
+
const l = typeof e == "function" ? e(S) : e;
|
|
184
|
+
be(l), y == null || y(l);
|
|
205
185
|
},
|
|
206
186
|
// Filtering
|
|
207
|
-
...(
|
|
208
|
-
getFilteredRowModel:
|
|
187
|
+
...($ || N) && !V && {
|
|
188
|
+
getFilteredRowModel: Ke()
|
|
209
189
|
},
|
|
210
|
-
...
|
|
190
|
+
...V && {
|
|
211
191
|
manualFiltering: !0
|
|
212
192
|
},
|
|
213
193
|
onColumnFiltersChange: (e) => {
|
|
214
|
-
const l = typeof e == "function" ? e(
|
|
215
|
-
|
|
194
|
+
const l = typeof e == "function" ? e(G) : e;
|
|
195
|
+
xe(l), x == null || x(l);
|
|
216
196
|
},
|
|
217
197
|
onColumnVisibilityChange: (e) => {
|
|
218
|
-
const l = typeof e == "function" ? e(
|
|
219
|
-
|
|
198
|
+
const l = typeof e == "function" ? e(J) : e;
|
|
199
|
+
we(l), i == null || i(l);
|
|
220
200
|
},
|
|
221
201
|
onGlobalFilterChange: (e) => {
|
|
222
|
-
const l = typeof e == "function" ? e(
|
|
223
|
-
|
|
202
|
+
const l = typeof e == "function" ? e(K) : e;
|
|
203
|
+
ze(l), w == null || w(l);
|
|
224
204
|
},
|
|
225
205
|
// Column resizing
|
|
226
|
-
enableColumnResizing:
|
|
206
|
+
enableColumnResizing: q,
|
|
227
207
|
columnResizeMode: re,
|
|
228
208
|
onColumnSizingChange: (e) => {
|
|
229
|
-
const l = typeof e == "function" ? e(
|
|
230
|
-
|
|
209
|
+
const l = typeof e == "function" ? e(Q) : e;
|
|
210
|
+
Me(l), z == null || z(l);
|
|
231
211
|
},
|
|
232
212
|
// Column pinning
|
|
233
213
|
onColumnPinningChange: (e) => {
|
|
234
|
-
const l = typeof e == "function" ? e(
|
|
235
|
-
|
|
214
|
+
const l = typeof e == "function" ? e(o) : e;
|
|
215
|
+
Re(l), D == null || D(l);
|
|
236
216
|
},
|
|
237
217
|
// Pagination
|
|
238
|
-
...
|
|
239
|
-
getPaginationRowModel:
|
|
218
|
+
...I && !X && {
|
|
219
|
+
getPaginationRowModel: Je()
|
|
240
220
|
},
|
|
241
|
-
...
|
|
221
|
+
...X && {
|
|
242
222
|
manualPagination: !0,
|
|
243
223
|
pageCount: t == null ? void 0 : t.pageCount,
|
|
244
224
|
rowCount: t == null ? void 0 : t.totalItems
|
|
245
225
|
},
|
|
246
|
-
...
|
|
247
|
-
onPaginationChange:
|
|
226
|
+
...I && {
|
|
227
|
+
onPaginationChange: Fe
|
|
248
228
|
}
|
|
249
|
-
}),
|
|
229
|
+
}), Ve = d(
|
|
250
230
|
() => ({
|
|
251
|
-
table:
|
|
231
|
+
table: Y,
|
|
252
232
|
pagination: t,
|
|
253
|
-
onRowClick:
|
|
254
|
-
clickableRowClassName:
|
|
255
|
-
selectedRowClassName:
|
|
256
|
-
cellOverflow:
|
|
257
|
-
disableColumnResizing:
|
|
258
|
-
showHeaderBorder:
|
|
259
|
-
showRowBorders:
|
|
260
|
-
fitHeaderWidth:
|
|
233
|
+
onRowClick: L,
|
|
234
|
+
clickableRowClassName: h,
|
|
235
|
+
selectedRowClassName: j,
|
|
236
|
+
cellOverflow: H,
|
|
237
|
+
disableColumnResizing: T,
|
|
238
|
+
showHeaderBorder: E,
|
|
239
|
+
showRowBorders: O,
|
|
240
|
+
fitHeaderWidth: W
|
|
261
241
|
}),
|
|
262
242
|
[
|
|
263
|
-
|
|
243
|
+
Y,
|
|
264
244
|
t,
|
|
265
|
-
E,
|
|
266
|
-
R,
|
|
267
|
-
A,
|
|
268
|
-
F,
|
|
269
|
-
v,
|
|
270
245
|
L,
|
|
246
|
+
h,
|
|
247
|
+
j,
|
|
271
248
|
H,
|
|
272
|
-
|
|
249
|
+
T,
|
|
250
|
+
E,
|
|
251
|
+
O,
|
|
252
|
+
W
|
|
273
253
|
]
|
|
274
254
|
);
|
|
275
|
-
return /* @__PURE__ */
|
|
255
|
+
return /* @__PURE__ */ f(Be.Provider, { value: Ve, children: /* @__PURE__ */ f(
|
|
276
256
|
"div",
|
|
277
257
|
{
|
|
278
|
-
ref:
|
|
258
|
+
ref: de,
|
|
279
259
|
"data-slot": "data-table",
|
|
280
|
-
[
|
|
260
|
+
[_e]: "data-table",
|
|
281
261
|
"data-fs-element": "DataTable",
|
|
282
|
-
className:
|
|
283
|
-
...
|
|
284
|
-
children: /* @__PURE__ */
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
columnNumber: 9
|
|
288
|
-
}, this)
|
|
289
|
-
},
|
|
290
|
-
void 0,
|
|
291
|
-
!1,
|
|
292
|
-
{
|
|
293
|
-
fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
|
|
294
|
-
lineNumber: 529,
|
|
295
|
-
columnNumber: 7
|
|
296
|
-
},
|
|
297
|
-
this
|
|
298
|
-
) }, void 0, !1, {
|
|
299
|
-
fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
|
|
300
|
-
lineNumber: 528,
|
|
301
|
-
columnNumber: 5
|
|
302
|
-
}, this);
|
|
262
|
+
className: Ee(me.root, ue),
|
|
263
|
+
...M !== void 0 ? { "data-density": We(M) } : {},
|
|
264
|
+
children: /* @__PURE__ */ f(qe, { density: M, children: s })
|
|
265
|
+
}
|
|
266
|
+
) });
|
|
303
267
|
}
|
|
304
|
-
const
|
|
268
|
+
const ft = Le.forwardRef(Ze);
|
|
305
269
|
export {
|
|
306
|
-
|
|
270
|
+
ft as DataTable
|
|
307
271
|
};
|
|
308
272
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { type TableDensity } from \"../table/table\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /**\n * Cell density: compact, normal, or comfortable. Omitted inherits ambient CSS density (shell or\n * an outer `DensityProvider`) with no default-normal stamp — explicit only when passed.\n */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n density,\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n }),\n [\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n // Authoritative, normalized, spread last: a raw caller data-density prop must never win\n // over the normalized density prop — same invariant DensityProvider/Table enforce.\n // canonicalDensity is the SAME normalization DensityContextBoundary below applies to the\n // context value, so an invalid density can never make DOM and context disagree\n // (TABLE-DENSITY-REVIEW-1.md #2).\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </div>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsxDEV","DataTableColumnHeader","_a","useStyles","makeVoltStyles","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newSizing","newPinning","getPaginationRowModel","contextValue","DataTableContext","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","DataTable","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { type TableDensity } from \"../table/table\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /**\n * Cell density: compact, normal, or comfortable. Omitted inherits ambient CSS density (shell or\n * an outer `DensityProvider`) with no default-normal stamp — explicit only when passed.\n */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n density,\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n }),\n [\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n // Authoritative, normalized, spread last: a raw caller data-density prop must never win\n // over the normalized density prop — same invariant DensityProvider/Table enforce.\n // canonicalDensity is the SAME normalization DensityContextBoundary below applies to the\n // context value, so an invalid density can never make DOM and context disagree\n // (TABLE-DENSITY-REVIEW-1.md #2).\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </div>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsx","DataTableColumnHeader","_a","useStyles","makeVoltStyles","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newSizing","newPinning","getPaginationRowModel","contextValue","DataTableContext","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","DataTable","React"],"mappings":"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"}
|