@epilot/volt-ui-experimental-griffel 0.2.3 → 0.3.0

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.
Files changed (169) hide show
  1. package/ADOPTING.md +416 -0
  2. package/README.md +32 -31
  3. package/dist/_virtual/jsx-dev-runtime.js +5 -0
  4. package/dist/_virtual/jsx-dev-runtime.js.map +1 -0
  5. package/dist/_virtual/react-jsx-dev-runtime.development.js +5 -0
  6. package/dist/_virtual/react-jsx-dev-runtime.development.js.map +1 -0
  7. package/dist/_virtual/react-jsx-dev-runtime.production.js +5 -0
  8. package/dist/_virtual/react-jsx-dev-runtime.production.js.map +1 -0
  9. package/dist/components/accordion/accordion.js +126 -66
  10. package/dist/components/accordion/accordion.js.map +1 -1
  11. package/dist/components/alert-dialog/alert-dialog.js +239 -137
  12. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  13. package/dist/components/avatar/avatar-group.js +102 -47
  14. package/dist/components/avatar/avatar-group.js.map +1 -1
  15. package/dist/components/avatar/avatar.js +97 -73
  16. package/dist/components/avatar/avatar.js.map +1 -1
  17. package/dist/components/badge/badge.js +53 -37
  18. package/dist/components/badge/badge.js.map +1 -1
  19. package/dist/components/breadcrumb/breadcrumb.js +97 -49
  20. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  21. package/dist/components/button/button.js +88 -77
  22. package/dist/components/button/button.js.map +1 -1
  23. package/dist/components/button-group/button-group.js +55 -31
  24. package/dist/components/button-group/button-group.js.map +1 -1
  25. package/dist/components/callout/callout.js +288 -164
  26. package/dist/components/callout/callout.js.map +1 -1
  27. package/dist/components/card/card.js +137 -81
  28. package/dist/components/card/card.js.map +1 -1
  29. package/dist/components/checkbox/checkbox.js +100 -49
  30. package/dist/components/checkbox/checkbox.js.map +1 -1
  31. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +155 -107
  32. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  33. package/dist/components/command/command.js +297 -158
  34. package/dist/components/command/command.js.map +1 -1
  35. package/dist/components/data-table/data-table-body.js +114 -54
  36. package/dist/components/data-table/data-table-body.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-header.js +117 -45
  38. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  39. package/dist/components/data-table/data-table-column-visibility.js +98 -39
  40. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  41. package/dist/components/data-table/data-table-content.js +90 -58
  42. package/dist/components/data-table/data-table-content.js.map +1 -1
  43. package/dist/components/data-table/data-table-error.js +83 -39
  44. package/dist/components/data-table/data-table-error.js.map +1 -1
  45. package/dist/components/data-table/data-table-header.js +88 -54
  46. package/dist/components/data-table/data-table-header.js.map +1 -1
  47. package/dist/components/data-table/data-table-loading.js +27 -15
  48. package/dist/components/data-table/data-table-loading.js.map +1 -1
  49. package/dist/components/data-table/data-table-pagination.js +27 -19
  50. package/dist/components/data-table/data-table-pagination.js.map +1 -1
  51. package/dist/components/data-table/data-table-row.js +87 -64
  52. package/dist/components/data-table/data-table-row.js.map +1 -1
  53. package/dist/components/data-table/data-table-toolbar.js +24 -16
  54. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  55. package/dist/components/data-table/data-table.js +182 -145
  56. package/dist/components/data-table/data-table.js.map +1 -1
  57. package/dist/components/date-range-picker/date-range-picker.js +342 -214
  58. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  59. package/dist/components/date-range-picker/range-calendar.js +132 -92
  60. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  61. package/dist/components/date-time-picker/calendar.js +501 -317
  62. package/dist/components/date-time-picker/calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/date-time-picker-context.js +64 -60
  64. package/dist/components/date-time-picker/date-time-picker-context.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-input.js +249 -149
  66. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker-panel.js +273 -165
  68. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  69. package/dist/components/date-time-picker/date-time-picker-popover.js +22 -14
  70. package/dist/components/date-time-picker/date-time-picker-popover.js.map +1 -1
  71. package/dist/components/date-time-picker/date-time-picker.js +134 -90
  72. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  73. package/dist/components/date-time-picker/time-picker.js +198 -132
  74. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  75. package/dist/components/density-provider/density-provider.js +48 -0
  76. package/dist/components/density-provider/density-provider.js.map +1 -0
  77. package/dist/components/dialog/dialog.js +280 -150
  78. package/dist/components/dialog/dialog.js.map +1 -1
  79. package/dist/components/drawer/drawer.js +273 -163
  80. package/dist/components/drawer/drawer.js.map +1 -1
  81. package/dist/components/dropdown-menu/dropdown-menu.js +378 -195
  82. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  83. package/dist/components/field/field-combobox.js +447 -240
  84. package/dist/components/field/field-combobox.js.map +1 -1
  85. package/dist/components/field/field-select.js +23 -19
  86. package/dist/components/field/field-select.js.map +1 -1
  87. package/dist/components/field/field.js +318 -209
  88. package/dist/components/field/field.js.map +1 -1
  89. package/dist/components/label/label.js +27 -19
  90. package/dist/components/label/label.js.map +1 -1
  91. package/dist/components/list/list.js +623 -369
  92. package/dist/components/list/list.js.map +1 -1
  93. package/dist/components/option-card/option-card.js +323 -159
  94. package/dist/components/option-card/option-card.js.map +1 -1
  95. package/dist/components/pill/pill.js +82 -64
  96. package/dist/components/pill/pill.js.map +1 -1
  97. package/dist/components/popover/popover.js +101 -56
  98. package/dist/components/popover/popover.js.map +1 -1
  99. package/dist/components/radio/radio.js +94 -51
  100. package/dist/components/radio/radio.js.map +1 -1
  101. package/dist/components/scroll-overflow/scroll-overflow.js +350 -198
  102. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  103. package/dist/components/segmented-control/segmented-control.js +141 -97
  104. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  105. package/dist/components/select/select.js +452 -227
  106. package/dist/components/select/select.js.map +1 -1
  107. package/dist/components/separator/separator.js +24 -16
  108. package/dist/components/separator/separator.js.map +1 -1
  109. package/dist/components/skeleton/skeleton.js +83 -43
  110. package/dist/components/skeleton/skeleton.js.map +1 -1
  111. package/dist/components/spinner/spinner.js +44 -20
  112. package/dist/components/spinner/spinner.js.map +1 -1
  113. package/dist/components/switch/switch.js +163 -86
  114. package/dist/components/switch/switch.js.map +1 -1
  115. package/dist/components/table/table-pagination.js +465 -205
  116. package/dist/components/table/table-pagination.js.map +1 -1
  117. package/dist/components/table/table.js +212 -144
  118. package/dist/components/table/table.js.map +1 -1
  119. package/dist/components/tabs/tabs.js +94 -58
  120. package/dist/components/tabs/tabs.js.map +1 -1
  121. package/dist/components/text/text.js +40 -32
  122. package/dist/components/text/text.js.map +1 -1
  123. package/dist/components/toast/toast.js +187 -111
  124. package/dist/components/toast/toast.js.map +1 -1
  125. package/dist/components/toggle/toggle-group.js +40 -24
  126. package/dist/components/toggle/toggle-group.js.map +1 -1
  127. package/dist/components/toggle/toggle.js +48 -40
  128. package/dist/components/toggle/toggle.js.map +1 -1
  129. package/dist/components/tooltip/tooltip.js +101 -55
  130. package/dist/components/tooltip/tooltip.js.map +1 -1
  131. package/dist/index.d.ts +600 -427
  132. package/dist/index.js +215 -212
  133. package/dist/index.js.map +1 -1
  134. package/dist/lib/clear-button.js +27 -15
  135. package/dist/lib/clear-button.js.map +1 -1
  136. package/dist/lib/icons.js +18 -6
  137. package/dist/lib/icons.js.map +1 -1
  138. package/dist/packages/volt-runtime/dist/sheet.js +27 -10
  139. package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
  140. package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
  141. package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
  142. package/dist/styles/document-context.js +12 -0
  143. package/dist/styles/document-context.js.map +1 -0
  144. package/dist/styles/make-styles.js +18 -10
  145. package/dist/styles/make-styles.js.map +1 -1
  146. package/dist/tokens/core.generated.js +1238 -1166
  147. package/dist/tokens/core.generated.js.map +1 -1
  148. package/dist/tokens/index.d.ts +442 -415
  149. package/dist/tokens/index.js +1105 -1078
  150. package/dist/tokens/index.js.map +1 -1
  151. package/dist/tokens/install.js +9 -5
  152. package/dist/tokens/install.js.map +1 -1
  153. package/dist/tokens/use-palette-tokens.js +20 -0
  154. package/dist/tokens/use-palette-tokens.js.map +1 -0
  155. package/dist/tokens.json +83 -2
  156. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js +236 -0
  157. package/dist/vendor/react/cjs/react-jsx-dev-runtime.development.js.map +1 -0
  158. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js +21 -0
  159. package/dist/vendor/react/cjs/react-jsx-dev-runtime.production.js.map +1 -0
  160. package/dist/vendor/react/jsx-dev-runtime.js +9 -0
  161. package/dist/vendor/react/jsx-dev-runtime.js.map +1 -0
  162. package/package.json +13 -5
  163. package/scripts/migration-diagnostics-core.mjs +859 -0
  164. package/scripts/migration-diagnostics.mjs +353 -0
  165. package/scripts/migration-sweep.mjs +179 -0
  166. package/AGENTS.md +0 -153
  167. package/AUTHORING.md +0 -292
  168. package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
  169. package/dist/packages/volt-runtime/dist/styles/make-styles.js.map +0 -1
@@ -1,131 +1,151 @@
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 m, 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 { TableDensityContext as We } from "../table/table.js";
10
- import { DataTableContext as qe } 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, b) {
14
- return b ? n.map((s) => {
1
+ import { j as n } from "../../vendor/react/jsx-dev-runtime.js";
2
+ import * as Ee from "react";
3
+ import { useState as o, useRef as Re, useEffect as j, useMemo as m, useCallback as Ae } from "react";
4
+ import { useReactTable as Fe } from "../../vendor/@tanstack/react-table/build/lib/index.js";
5
+ import { SLOT_ATTR as Ue } from "../../packages/volt-runtime/dist/renderer/contract.js";
6
+ import { mergeClasses as Le } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
7
+ import { makeVoltStyles as He } from "../../styles/make-styles.js";
8
+ import { Checkbox as Y } from "../checkbox/checkbox.js";
9
+ import { canonicalDensity as _e, DensityContextBoundary as Oe } from "../density-provider/density-provider.js";
10
+ import { DataTableContext as We } from "./data-table-context.js";
11
+ import { DataTableColumnHeader as qe } from "./data-table-column-header.js";
12
+ import { getPaginationRowModel as Be, getFilteredRowModel as Ge, getSortedRowModel as Je, getCoreRowModel as Ke } from "../../vendor/@tanstack/table-core/build/lib/index.js";
13
+ function Qe(f, b) {
14
+ return b ? f.map((s) => {
15
15
  var r;
16
16
  if (s.enableSorting === !1 || typeof s.header != "string")
17
17
  return s;
18
- const d = s.header;
18
+ const i = s.header;
19
19
  return {
20
20
  ...s,
21
- header: ({ column: u }) => /* @__PURE__ */ f(Ge, { column: u, title: d }),
21
+ header: ({ column: a }) => /* @__PURE__ */ n.jsxDEV(qe, { column: a, title: i }, void 0, !1, {
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),
22
26
  meta: {
23
27
  ...s.meta,
24
28
  // Preserve original header for visibility dropdown fallback
25
- visibilityLabel: ((r = s.meta) == null ? void 0 : r.visibilityLabel) ?? d,
29
+ visibilityLabel: ((r = s.meta) == null ? void 0 : r.visibilityLabel) ?? i,
26
30
  // Flag to indicate this header was auto-wrapped with DataTableColumnHeader
27
31
  _sortableHeaderWrapped: !0
28
32
  }
29
33
  };
30
- }) : n;
34
+ }) : f;
31
35
  }
32
- const Ye = Oe({
36
+ const Xe = He({
33
37
  root: {
34
38
  width: "100%",
35
39
  maxWidth: "100%"
36
40
  }
37
41
  });
38
- function Ze({
39
- columns: n,
42
+ function Ye({
43
+ columns: f,
40
44
  data: b,
41
45
  children: s,
42
- getRowId: d,
46
+ getRowId: i,
43
47
  enableRowSelection: r = !1,
44
- enableSorting: u = !1,
45
- manualSorting: F = !1,
46
- enableFiltering: $ = !1,
47
- manualFiltering: a = !1,
48
- enableGlobalFilter: B = !1,
48
+ enableSorting: a = !1,
49
+ manualSorting: M = !1,
50
+ enableFiltering: Z = !1,
51
+ manualFiltering: h = !1,
52
+ enableGlobalFilter: $ = !1,
49
53
  pagination: t,
50
- sorting: N,
51
- onSortingChange: I,
54
+ sorting: g,
55
+ onSortingChange: x,
52
56
  defaultSorting: C = [],
53
- rowSelection: g,
54
- onRowSelectionChange: y,
55
- defaultRowSelection: p = {},
56
- columnFilters: ee,
57
- onColumnFiltersChange: x,
58
- columnVisibility: te,
59
- onColumnVisibilityChange: T,
60
- globalFilter: le,
61
- onGlobalFilterChange: w,
62
- onRowClick: V,
63
- clickableRowClassName: L,
64
- selectedRowClassName: h,
65
- cellOverflow: j = "truncate",
66
- disableColumnResizing: i = !1,
67
- columnResizeMode: se = "onChange",
68
- columnSizing: re,
69
- onColumnSizingChange: z,
57
+ rowSelection: p,
58
+ onRowSelectionChange: S,
59
+ defaultRowSelection: ee = {},
60
+ columnFilters: te,
61
+ onColumnFiltersChange: I,
62
+ columnVisibility: le,
63
+ onColumnVisibilityChange: P,
64
+ globalFilter: se,
65
+ onGlobalFilterChange: y,
66
+ onRowClick: E,
67
+ clickableRowClassName: R,
68
+ selectedRowClassName: A,
69
+ cellOverflow: F = "truncate",
70
+ disableColumnResizing: v = !1,
71
+ columnResizeMode: re = "onChange",
72
+ columnSizing: oe,
73
+ onColumnSizingChange: w,
70
74
  defaultColumnSizing: ce = {},
71
- columnPinning: oe,
72
- onColumnPinningChange: M,
75
+ columnPinning: ne,
76
+ onColumnPinningChange: N,
73
77
  defaultColumnPinning: fe = { left: [], right: [] },
74
- autoPinSelection: H,
75
- showHeaderBorder: _ = !0,
76
- showRowBorders: E = !0,
77
- fitHeaderWidth: O = !1,
78
- density: ne = "normal",
79
- className: ue
78
+ autoPinSelection: U,
79
+ showHeaderBorder: L = !0,
80
+ showRowBorders: H = !0,
81
+ fitHeaderWidth: _ = !1,
82
+ density: D,
83
+ className: ae
80
84
  }, me) {
81
- const de = Ye(), [Se, Pe] = c(C), [be, Ie] = c(p), [ye, xe] = c([]), [Te, we] = c({}), [ie, ze] = c(""), [Me, ve] = c(ce), [De, Re] = c(fe), ke = {
85
+ const ie = Xe(), [ue, de] = o(C), [be, xe] = o(ee), [Se, Ie] = o([]), [Pe, ye] = o({}), [ve, we] = o(""), [Ne, De] = o(ce), [ke, Te] = o(fe), ze = {
82
86
  pageIndex: (t == null ? void 0 : t.pageIndex) ?? 0,
83
87
  pageSize: (t == null ? void 0 : t.pageSize) ?? 10
84
- }, [v, D] = c(ke), R = he(!1);
85
- A(() => {
88
+ }, [k, T] = o(ze), z = Re(!1);
89
+ j(() => {
86
90
  if ((t == null ? void 0 : t.pageIndex) === void 0)
87
91
  return;
88
92
  const e = t.pageIndex;
89
- D(
93
+ T(
90
94
  (l) => l.pageIndex === e ? l : { ...l, pageIndex: e }
91
95
  );
92
- }, [t == null ? void 0 : t.pageIndex]), A(() => {
96
+ }, [t == null ? void 0 : t.pageIndex]), j(() => {
93
97
  if ((t == null ? void 0 : t.pageSize) === void 0)
94
98
  return;
95
99
  const e = t.pageSize;
96
- D(
100
+ T(
97
101
  (l) => l.pageSize === e ? l : { ...l, pageSize: e }
98
102
  );
99
103
  }, [t == null ? void 0 : t.pageSize]);
100
- const W = !i, q = N ?? Se, S = g ?? be, G = ee ?? ye, J = te ?? Te, K = le ?? ie, Q = re ?? Me, o = oe ?? De, Ae = m(() => {
101
- if (!(r && H && Object.keys(S).length > 0))
102
- return o;
103
- const l = o.left ?? [];
104
- return l.includes("select") ? o : {
105
- ...o,
104
+ const O = !v, W = g ?? ue, u = p ?? be, q = te ?? Se, B = le ?? Pe, G = se ?? ve, J = oe ?? Ne, c = ne ?? ke, Ve = m(() => {
105
+ if (!(r && U && Object.keys(u).length > 0))
106
+ return c;
107
+ const l = c.left ?? [];
108
+ return l.includes("select") ? c : {
109
+ ...c,
106
110
  left: ["select", ...l]
107
111
  };
108
- }, [o, S, r, H]), U = m(
112
+ }, [c, u, r, U]), K = m(
109
113
  () => ({
110
114
  id: "select",
111
- header: ({ table: e }) => /* @__PURE__ */ f(
112
- Z,
115
+ header: ({ table: e }) => /* @__PURE__ */ n.jsxDEV(
116
+ Y,
113
117
  {
114
118
  "data-fs-element": "DataTable-SelectAll",
115
119
  checked: e.getIsAllPageRowsSelected() || e.getIsSomePageRowsSelected() && "indeterminate",
116
120
  onCheckedChange: (l) => e.toggleAllPageRowsSelected(!!l),
117
121
  "aria-label": "Select all rows"
118
- }
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
119
131
  ),
120
- cell: ({ row: e }) => /* @__PURE__ */ f(
121
- Z,
132
+ cell: ({ row: e }) => /* @__PURE__ */ n.jsxDEV(
133
+ Y,
122
134
  {
123
135
  "data-fs-element": "DataTable-SelectRow",
124
136
  checked: e.getIsSelected(),
125
137
  onCheckedChange: (l) => e.toggleSelected(!!l),
126
138
  disabled: !e.getCanSelect(),
127
139
  "aria-label": "Select row"
128
- }
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
129
149
  ),
130
150
  enableSorting: !1,
131
151
  enableHiding: !1,
@@ -133,139 +153,156 @@ function Ze({
133
153
  size: 40
134
154
  }),
135
155
  []
136
- ), k = m(() => Xe(n, u), [n, u]), Fe = m(() => r ? [U, ...k] : k, [k, r, U]), P = !!t, X = P && ((t == null ? void 0 : t.totalItems) !== void 0 || (t == null ? void 0 : t.pageCount) !== void 0), ae = je(
156
+ ), V = m(() => Qe(f, a), [f, a]), je = m(() => r ? [K, ...V] : V, [V, r, K]), d = !!t, Q = d && ((t == null ? void 0 : t.totalItems) !== void 0 || (t == null ? void 0 : t.pageCount) !== void 0), Me = Ae(
137
157
  (e) => {
138
- R.current = !0, D((l) => typeof e == "function" ? e(l) : e);
158
+ z.current = !0, T((l) => typeof e == "function" ? e(l) : e);
139
159
  },
140
160
  []
141
161
  );
142
- A(() => {
162
+ j(() => {
143
163
  var e;
144
- R.current && ((e = t == null ? void 0 : t.onPaginationChange) == null || e.call(t, v), R.current = !1);
145
- }, [v, t]);
146
- const Y = He({
164
+ z.current && ((e = t == null ? void 0 : t.onPaginationChange) == null || e.call(t, k), z.current = !1);
165
+ }, [k, t]);
166
+ const X = Fe({
147
167
  data: b,
148
- columns: Fe,
149
- getRowId: d,
150
- getCoreRowModel: Ue(),
168
+ columns: je,
169
+ getRowId: i,
170
+ getCoreRowModel: Ke(),
151
171
  // Default column configuration
152
172
  defaultColumn: {
153
173
  minSize: 50
154
174
  },
155
175
  // Sorting
156
- ...u && !F && {
157
- getSortedRowModel: Qe()
176
+ ...a && !M && {
177
+ getSortedRowModel: Je()
158
178
  },
159
- ...F && {
179
+ ...M && {
160
180
  manualSorting: !0
161
181
  },
162
182
  state: {
163
- sorting: q,
164
- rowSelection: S,
165
- columnFilters: G,
166
- columnVisibility: J,
167
- globalFilter: K,
168
- columnPinning: Ae,
169
- ...P && {
170
- pagination: v
183
+ sorting: W,
184
+ rowSelection: u,
185
+ columnFilters: q,
186
+ columnVisibility: B,
187
+ globalFilter: G,
188
+ columnPinning: Ve,
189
+ ...d && {
190
+ pagination: k
171
191
  },
172
- ...W && {
173
- columnSizing: Q
192
+ ...O && {
193
+ columnSizing: J
174
194
  }
175
195
  },
176
196
  onSortingChange: (e) => {
177
- const l = typeof e == "function" ? e(q) : e;
178
- Pe(l), I == null || I(l);
197
+ const l = typeof e == "function" ? e(W) : e;
198
+ de(l), x == null || x(l);
179
199
  },
180
200
  // Row selection
181
201
  enableRowSelection: typeof r == "function" ? (e) => r(e) : r,
182
202
  onRowSelectionChange: (e) => {
183
- const l = typeof e == "function" ? e(S) : e;
184
- Ie(l), y == null || y(l);
203
+ const l = typeof e == "function" ? e(u) : e;
204
+ xe(l), S == null || S(l);
185
205
  },
186
206
  // Filtering
187
- ...($ || B) && !a && {
188
- getFilteredRowModel: Ke()
207
+ ...(Z || $) && !h && {
208
+ getFilteredRowModel: Ge()
189
209
  },
190
- ...a && {
210
+ ...h && {
191
211
  manualFiltering: !0
192
212
  },
193
213
  onColumnFiltersChange: (e) => {
194
- const l = typeof e == "function" ? e(G) : e;
195
- xe(l), x == null || x(l);
214
+ const l = typeof e == "function" ? e(q) : e;
215
+ Ie(l), I == null || I(l);
196
216
  },
197
217
  onColumnVisibilityChange: (e) => {
198
- const l = typeof e == "function" ? e(J) : e;
199
- we(l), T == null || T(l);
218
+ const l = typeof e == "function" ? e(B) : e;
219
+ ye(l), P == null || P(l);
200
220
  },
201
221
  onGlobalFilterChange: (e) => {
202
- const l = typeof e == "function" ? e(K) : e;
203
- ze(l), w == null || w(l);
222
+ const l = typeof e == "function" ? e(G) : e;
223
+ we(l), y == null || y(l);
204
224
  },
205
225
  // Column resizing
206
- enableColumnResizing: W,
207
- columnResizeMode: se,
226
+ enableColumnResizing: O,
227
+ columnResizeMode: re,
208
228
  onColumnSizingChange: (e) => {
209
- const l = typeof e == "function" ? e(Q) : e;
210
- ve(l), z == null || z(l);
229
+ const l = typeof e == "function" ? e(J) : e;
230
+ De(l), w == null || w(l);
211
231
  },
212
232
  // Column pinning
213
233
  onColumnPinningChange: (e) => {
214
- const l = typeof e == "function" ? e(o) : e;
215
- Re(l), M == null || M(l);
234
+ const l = typeof e == "function" ? e(c) : e;
235
+ Te(l), N == null || N(l);
216
236
  },
217
237
  // Pagination
218
- ...P && !X && {
219
- getPaginationRowModel: Je()
238
+ ...d && !Q && {
239
+ getPaginationRowModel: Be()
220
240
  },
221
- ...X && {
241
+ ...Q && {
222
242
  manualPagination: !0,
223
243
  pageCount: t == null ? void 0 : t.pageCount,
224
244
  rowCount: t == null ? void 0 : t.totalItems
225
245
  },
226
- ...P && {
227
- onPaginationChange: ae
246
+ ...d && {
247
+ onPaginationChange: Me
228
248
  }
229
- }), Ve = m(
249
+ }), he = m(
230
250
  () => ({
231
- table: Y,
251
+ table: X,
232
252
  pagination: t,
233
- onRowClick: V,
234
- clickableRowClassName: L,
235
- selectedRowClassName: h,
236
- cellOverflow: j,
237
- disableColumnResizing: i,
238
- showHeaderBorder: _,
239
- showRowBorders: E,
240
- fitHeaderWidth: O
253
+ onRowClick: E,
254
+ clickableRowClassName: R,
255
+ selectedRowClassName: A,
256
+ cellOverflow: F,
257
+ disableColumnResizing: v,
258
+ showHeaderBorder: L,
259
+ showRowBorders: H,
260
+ fitHeaderWidth: _
241
261
  }),
242
262
  [
243
- Y,
263
+ X,
244
264
  t,
245
- V,
246
- L,
247
- h,
248
- j,
249
- i,
250
- _,
251
265
  E,
252
- O
266
+ R,
267
+ A,
268
+ F,
269
+ v,
270
+ L,
271
+ H,
272
+ _
253
273
  ]
254
274
  );
255
- return /* @__PURE__ */ f(qe.Provider, { value: Ve, children: /* @__PURE__ */ f(We.Provider, { value: ne, children: /* @__PURE__ */ f(
275
+ return /* @__PURE__ */ n.jsxDEV(We.Provider, { value: he, children: /* @__PURE__ */ n.jsxDEV(
256
276
  "div",
257
277
  {
258
278
  ref: me,
259
279
  "data-slot": "data-table",
260
- [_e]: "data-table",
280
+ [Ue]: "data-table",
261
281
  "data-fs-element": "DataTable",
262
- className: Ee(de.root, ue),
263
- children: s
264
- }
265
- ) }) });
282
+ className: Le(ie.root, ae),
283
+ ...D !== void 0 ? { "data-density": _e(D) } : {},
284
+ children: /* @__PURE__ */ n.jsxDEV(Oe, { density: D, children: s }, void 0, !1, {
285
+ fileName: "/Users/wilianmolinari/repos/volt-ui-rollout/release/packages/experimental-griffel/src/components/data-table/data-table.tsx",
286
+ lineNumber: 544,
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);
266
303
  }
267
- const ot = Le.forwardRef(Ze);
304
+ const nt = Ee.forwardRef(Ye);
268
305
  export {
269
- ot as DataTable
306
+ nt as DataTable
270
307
  };
271
308
  //# 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 { TableDensityContext, type TableDensity } from \"../table/table\"\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 /** Cell density: compact, normal, or comfortable. Default: normal */\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 = \"normal\",\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 <TableDensityContext.Provider value={density}>\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 >\n {children}\n </div>\n </TableDensityContext.Provider>\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","TableDensityContext","SLOT_ATTR","mergeClasses","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","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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"}