@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.3
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 +57 -48
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +120 -92
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +38 -35
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +78 -71
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +60 -55
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +99 -54
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +87 -77
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +36 -32
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +105 -98
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +62 -52
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +22 -19
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/code-block/code-block.js +135 -123
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-editor/code-editor.js +276 -260
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +116 -105
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +38 -34
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +30 -26
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-order.js +79 -73
- package/dist/components/data-table/data-table-column-order.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +25 -22
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +47 -44
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +36 -32
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-footer.js +10 -8
- package/dist/components/data-table/data-table-footer.js.map +1 -1
- package/dist/components/data-table/data-table-header-draggable.js +40 -36
- package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
- package/dist/components/data-table/data-table-header.js +113 -99
- package/dist/components/data-table/data-table-header.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +21 -18
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-resize-handle.js +13 -11
- package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +71 -59
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +9 -7
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +48 -46
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +173 -164
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +36 -34
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +290 -272
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
- 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 +126 -120
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +42 -40
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +95 -87
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js +115 -95
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +144 -109
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +196 -176
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +137 -126
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +237 -219
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +129 -116
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +55 -51
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +53 -36
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +38 -34
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +38 -35
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +93 -85
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +149 -128
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +19 -16
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +34 -30
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +22 -17
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/surface/surface.js +25 -22
- package/dist/components/surface/surface.js.map +1 -1
- package/dist/components/switch/switch.js +66 -57
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +139 -129
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +104 -90
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +206 -128
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/toast/toast.js +112 -100
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle.js +32 -30
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +59 -46
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/lib/clear-button.js +18 -17
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/styles/host-reset.js +47 -0
- package/dist/styles/host-reset.js.map +1 -0
- package/dist/styles/overlay-layer.js +5 -0
- package/dist/styles/overlay-layer.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +8 -6
- package/scripts/migration-diagnostics.mjs +42 -7
- package/scripts/migration-sweep.mjs +9 -1
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { jsxs as b, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
3
|
-
import { useCallback as
|
|
4
|
-
import { useSensors as
|
|
5
|
-
import { arrayMove as
|
|
6
|
-
import { CSS as
|
|
7
|
-
import { SLOT_ATTR as x, shorthands as d, mergeClasses as
|
|
8
|
-
import { makeZenithStyles as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
2
|
+
import * as N from "react";
|
|
3
|
+
import { useCallback as M } from "react";
|
|
4
|
+
import { useSensors as E, useSensor as T, DndContext as L, closestCenter as R, KeyboardSensor as k, PointerSensor as B } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
|
|
5
|
+
import { arrayMove as _, SortableContext as G, verticalListSortingStrategy as z, sortableKeyboardCoordinates as Z, useSortable as j } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
|
|
6
|
+
import { CSS as F } from "../../vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js";
|
|
7
|
+
import { SLOT_ATTR as x, shorthands as d, mergeClasses as K } from "@epilot/zenith-runtime/v1";
|
|
8
|
+
import { makeZenithStyles as V } from "../../styles/make-styles.js";
|
|
9
|
+
import { nativeControl as W, boxModel as C } from "../../styles/host-reset.js";
|
|
10
|
+
import { accentA8 as X, grayA12 as H, grayA8 as P, grayA3 as $, leadingSm as q, textSm as J, spacingElement2 as w, radiusSm as Q } from "../../tokens/index.js";
|
|
11
|
+
import { Button as U } from "../button/button.js";
|
|
12
|
+
import { DropdownMenu as Y, DropdownMenuTrigger as ee, DropdownMenuContent as te, DropdownMenuLabel as re, DropdownMenuSeparator as oe } from "../dropdown-menu/dropdown-menu.js";
|
|
13
|
+
import { useDataTable as ne } from "./hooks/use-data-table.js";
|
|
14
|
+
const ae = (t) => /* @__PURE__ */ e(
|
|
14
15
|
"svg",
|
|
15
16
|
{
|
|
16
17
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -21,7 +22,7 @@ const ne = (t) => /* @__PURE__ */ e(
|
|
|
21
22
|
...t,
|
|
22
23
|
children: /* @__PURE__ */ e("path", { d: "M320-440v-287l-76 76-44-44 150-150 150 150-44 44-76-76v287h-60ZM560-155 410-305l44-44 76 76v-287h60v287l76-76 44 44L560-155Z" })
|
|
23
24
|
}
|
|
24
|
-
),
|
|
25
|
+
), ie = (t) => /* @__PURE__ */ b(
|
|
25
26
|
"svg",
|
|
26
27
|
{
|
|
27
28
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -39,16 +40,19 @@ const ne = (t) => /* @__PURE__ */ e(
|
|
|
39
40
|
/* @__PURE__ */ e("circle", { cx: "15", cy: "19", r: "1.5" })
|
|
40
41
|
]
|
|
41
42
|
}
|
|
42
|
-
),
|
|
43
|
+
), I = V({
|
|
43
44
|
icon: {
|
|
45
|
+
...C,
|
|
44
46
|
width: "1rem",
|
|
45
47
|
height: "1rem"
|
|
46
48
|
},
|
|
47
49
|
gripIcon: {
|
|
50
|
+
...C,
|
|
48
51
|
width: "14px",
|
|
49
52
|
height: "14px"
|
|
50
53
|
},
|
|
51
54
|
srOnly: {
|
|
55
|
+
...C,
|
|
52
56
|
position: "absolute",
|
|
53
57
|
width: "1px",
|
|
54
58
|
height: "1px",
|
|
@@ -59,40 +63,42 @@ const ne = (t) => /* @__PURE__ */ e(
|
|
|
59
63
|
whiteSpace: "nowrap"
|
|
60
64
|
},
|
|
61
65
|
item: {
|
|
66
|
+
...C,
|
|
62
67
|
display: "flex",
|
|
63
68
|
alignItems: "center",
|
|
64
|
-
...d.gap(
|
|
65
|
-
...d.borderRadius(
|
|
66
|
-
paddingLeft:
|
|
67
|
-
paddingRight:
|
|
69
|
+
...d.gap(w),
|
|
70
|
+
...d.borderRadius(Q),
|
|
71
|
+
paddingLeft: w,
|
|
72
|
+
paddingRight: w,
|
|
68
73
|
paddingTop: "6px",
|
|
69
74
|
paddingBottom: "6px",
|
|
70
|
-
fontSize:
|
|
71
|
-
lineHeight:
|
|
75
|
+
fontSize: J,
|
|
76
|
+
lineHeight: q
|
|
72
77
|
},
|
|
73
78
|
itemDragging: {
|
|
74
79
|
zIndex: 50,
|
|
75
|
-
backgroundColor:
|
|
80
|
+
backgroundColor: $,
|
|
76
81
|
opacity: 0.8
|
|
77
82
|
},
|
|
78
83
|
dragHandle: {
|
|
84
|
+
...W,
|
|
79
85
|
display: "inline-flex",
|
|
80
86
|
flexShrink: 0,
|
|
81
87
|
cursor: "grab",
|
|
82
88
|
touchAction: "none",
|
|
83
89
|
alignItems: "center",
|
|
84
|
-
color:
|
|
90
|
+
color: P,
|
|
85
91
|
backgroundColor: "transparent",
|
|
86
92
|
...d.borderWidth(0),
|
|
87
93
|
...d.padding(0),
|
|
88
94
|
"&:hover": {
|
|
89
|
-
color:
|
|
95
|
+
color: H
|
|
90
96
|
},
|
|
91
97
|
"&:focus-visible": {
|
|
92
98
|
outlineWidth: "2px",
|
|
93
99
|
outlineStyle: "solid",
|
|
94
100
|
outlineOffset: "2px",
|
|
95
|
-
outlineColor:
|
|
101
|
+
outlineColor: X
|
|
96
102
|
},
|
|
97
103
|
"&:active": {
|
|
98
104
|
cursor: "grabbing"
|
|
@@ -102,27 +108,27 @@ const ne = (t) => /* @__PURE__ */ e(
|
|
|
102
108
|
userSelect: "none"
|
|
103
109
|
}
|
|
104
110
|
});
|
|
105
|
-
function
|
|
111
|
+
function le({
|
|
106
112
|
column: t,
|
|
107
113
|
dragHandleLabel: r
|
|
108
114
|
}) {
|
|
109
|
-
const
|
|
115
|
+
const o = I(), {
|
|
110
116
|
attributes: c,
|
|
111
117
|
listeners: u,
|
|
112
118
|
setNodeRef: g,
|
|
113
119
|
transform: p,
|
|
114
120
|
transition: f,
|
|
115
|
-
isDragging:
|
|
116
|
-
} =
|
|
121
|
+
isDragging: n
|
|
122
|
+
} = j({ id: t.id }), i = t.columnDef.meta, a = (i == null ? void 0 : i.visibilityLabel) ?? (typeof t.columnDef.header == "string" ? t.columnDef.header : t.id), s = r ? typeof r == "function" ? r(a) : r : `Drag to reorder ${a}`;
|
|
117
123
|
return /* @__PURE__ */ b(
|
|
118
124
|
"div",
|
|
119
125
|
{
|
|
120
126
|
ref: g,
|
|
121
127
|
style: {
|
|
122
|
-
transform:
|
|
128
|
+
transform: F.Transform.toString(p),
|
|
123
129
|
transition: f
|
|
124
130
|
},
|
|
125
|
-
className:
|
|
131
|
+
className: K(o.item, n && o.itemDragging),
|
|
126
132
|
"data-slot": "data-table-column-order-item",
|
|
127
133
|
[x]: "data-table-column-order-item",
|
|
128
134
|
"data-fs-element": "DataTable-ColumnOrder-Item",
|
|
@@ -131,19 +137,19 @@ function ae({
|
|
|
131
137
|
"button",
|
|
132
138
|
{
|
|
133
139
|
type: "button",
|
|
134
|
-
className:
|
|
140
|
+
className: o.dragHandle,
|
|
135
141
|
"data-slot": "data-table-column-order-drag-handle",
|
|
136
142
|
[x]: "data-table-column-order-drag-handle",
|
|
137
143
|
"aria-label": s,
|
|
138
144
|
...c,
|
|
139
145
|
...u,
|
|
140
|
-
children: /* @__PURE__ */ e(
|
|
146
|
+
children: /* @__PURE__ */ e(ie, { className: o.gripIcon })
|
|
141
147
|
}
|
|
142
148
|
),
|
|
143
149
|
/* @__PURE__ */ e(
|
|
144
150
|
"span",
|
|
145
151
|
{
|
|
146
|
-
className:
|
|
152
|
+
className: o.itemLabel,
|
|
147
153
|
"data-slot": "data-table-column-order-item-label",
|
|
148
154
|
[x]: "data-table-column-order-item-label",
|
|
149
155
|
children: a
|
|
@@ -153,85 +159,85 @@ function ae({
|
|
|
153
159
|
}
|
|
154
160
|
);
|
|
155
161
|
}
|
|
156
|
-
function
|
|
162
|
+
function se({
|
|
157
163
|
columns: t,
|
|
158
164
|
currentOrder: r,
|
|
159
|
-
table:
|
|
165
|
+
table: o,
|
|
160
166
|
dragHandleLabel: c,
|
|
161
167
|
announcements: u,
|
|
162
168
|
screenReaderInstructions: g
|
|
163
169
|
}) {
|
|
164
|
-
const p =
|
|
165
|
-
|
|
170
|
+
const p = E(
|
|
171
|
+
T(B, {
|
|
166
172
|
activationConstraint: { distance: 3 }
|
|
167
173
|
}),
|
|
168
|
-
|
|
169
|
-
coordinateGetter:
|
|
174
|
+
T(k, {
|
|
175
|
+
coordinateGetter: Z
|
|
170
176
|
})
|
|
171
|
-
), f =
|
|
172
|
-
(
|
|
173
|
-
const { active: i, over: a } =
|
|
177
|
+
), f = M(
|
|
178
|
+
(n) => {
|
|
179
|
+
const { active: i, over: a } = n;
|
|
174
180
|
if (!a || i.id === a.id) return;
|
|
175
181
|
const s = r.indexOf(i.id), l = r.indexOf(a.id);
|
|
176
182
|
if (s === -1 || l === -1) return;
|
|
177
|
-
const y =
|
|
178
|
-
|
|
183
|
+
const y = _(r, s, l);
|
|
184
|
+
o.setColumnOrder(y);
|
|
179
185
|
},
|
|
180
|
-
[r,
|
|
186
|
+
[r, o]
|
|
181
187
|
);
|
|
182
188
|
return /* @__PURE__ */ e(
|
|
183
|
-
|
|
189
|
+
L,
|
|
184
190
|
{
|
|
185
191
|
sensors: p,
|
|
186
|
-
collisionDetection:
|
|
192
|
+
collisionDetection: R,
|
|
187
193
|
onDragEnd: f,
|
|
188
194
|
accessibility: {
|
|
189
195
|
announcements: u,
|
|
190
196
|
screenReaderInstructions: g
|
|
191
197
|
},
|
|
192
198
|
children: /* @__PURE__ */ e(
|
|
193
|
-
|
|
199
|
+
G,
|
|
194
200
|
{
|
|
195
|
-
items: t.map((
|
|
196
|
-
strategy:
|
|
197
|
-
children: t.map((
|
|
198
|
-
|
|
201
|
+
items: t.map((n) => n.id),
|
|
202
|
+
strategy: z,
|
|
203
|
+
children: t.map((n) => /* @__PURE__ */ e(
|
|
204
|
+
le,
|
|
199
205
|
{
|
|
200
|
-
column:
|
|
206
|
+
column: n,
|
|
201
207
|
dragHandleLabel: c
|
|
202
208
|
},
|
|
203
|
-
|
|
209
|
+
n.id
|
|
204
210
|
))
|
|
205
211
|
}
|
|
206
212
|
)
|
|
207
213
|
}
|
|
208
214
|
);
|
|
209
215
|
}
|
|
210
|
-
const
|
|
216
|
+
const Se = N.forwardRef(function({
|
|
211
217
|
icon: r,
|
|
212
|
-
trigger:
|
|
218
|
+
trigger: o,
|
|
213
219
|
label: c,
|
|
214
220
|
dragHandleLabel: u,
|
|
215
221
|
announcements: g,
|
|
216
222
|
screenReaderInstructions: p,
|
|
217
223
|
contentClassName: f,
|
|
218
|
-
align:
|
|
224
|
+
align: n = "end",
|
|
219
225
|
...i
|
|
220
226
|
}, a) {
|
|
221
|
-
const s =
|
|
227
|
+
const s = I(), { table: l } = ne(), y = l.getAllLeafColumns(), D = y.filter((m) => {
|
|
222
228
|
if (m.id === "select") return !1;
|
|
223
229
|
const h = m.columnDef.meta;
|
|
224
230
|
return (h == null ? void 0 : h.enableOrdering) !== !1;
|
|
225
231
|
});
|
|
226
|
-
if (
|
|
232
|
+
if (D.length === 0)
|
|
227
233
|
return null;
|
|
228
|
-
const S = l.getState().columnOrder && l.getState().columnOrder.length > 0 ? l.getState().columnOrder : y.map((m) => m.id),
|
|
229
|
-
const
|
|
230
|
-
return (
|
|
234
|
+
const S = l.getState().columnOrder && l.getState().columnOrder.length > 0 ? l.getState().columnOrder : y.map((m) => m.id), A = [...D].sort((m, h) => {
|
|
235
|
+
const v = S.indexOf(m.id), O = S.indexOf(h.id);
|
|
236
|
+
return (v === -1 ? Number.MAX_SAFE_INTEGER : v) - (O === -1 ? Number.MAX_SAFE_INTEGER : O);
|
|
231
237
|
});
|
|
232
|
-
return /* @__PURE__ */ b(
|
|
233
|
-
/* @__PURE__ */ e(
|
|
234
|
-
|
|
238
|
+
return /* @__PURE__ */ b(Y, { ref: a, ...i, children: [
|
|
239
|
+
/* @__PURE__ */ e(ee, { asChild: !0, children: o ?? /* @__PURE__ */ b(
|
|
240
|
+
U,
|
|
235
241
|
{
|
|
236
242
|
variant: "tertiary",
|
|
237
243
|
size: "sm",
|
|
@@ -239,26 +245,26 @@ const xe = A.forwardRef(function({
|
|
|
239
245
|
[x]: "data-table-column-order-trigger",
|
|
240
246
|
"data-fs-element": "DataTable-ColumnOrder-Trigger",
|
|
241
247
|
children: [
|
|
242
|
-
r ?? /* @__PURE__ */ e(
|
|
248
|
+
r ?? /* @__PURE__ */ e(ae, { className: s.icon }),
|
|
243
249
|
/* @__PURE__ */ e("span", { className: s.srOnly, children: c })
|
|
244
250
|
]
|
|
245
251
|
}
|
|
246
252
|
) }),
|
|
247
253
|
/* @__PURE__ */ b(
|
|
248
|
-
|
|
254
|
+
te,
|
|
249
255
|
{
|
|
250
|
-
align:
|
|
256
|
+
align: n,
|
|
251
257
|
className: f,
|
|
252
258
|
"data-slot": "data-table-column-order-content",
|
|
253
259
|
[x]: "data-table-column-order-content",
|
|
254
260
|
"data-fs-element": "DataTable-ColumnOrder-Content",
|
|
255
261
|
children: [
|
|
256
|
-
/* @__PURE__ */ e(
|
|
257
|
-
/* @__PURE__ */ e(
|
|
262
|
+
/* @__PURE__ */ e(re, { children: c }),
|
|
263
|
+
/* @__PURE__ */ e(oe, {}),
|
|
258
264
|
/* @__PURE__ */ e(
|
|
259
|
-
|
|
265
|
+
se,
|
|
260
266
|
{
|
|
261
|
-
columns:
|
|
267
|
+
columns: A,
|
|
262
268
|
currentOrder: S,
|
|
263
269
|
table: l,
|
|
264
270
|
dragHandleLabel: u,
|
|
@@ -272,6 +278,6 @@ const xe = A.forwardRef(function({
|
|
|
272
278
|
] });
|
|
273
279
|
});
|
|
274
280
|
export {
|
|
275
|
-
|
|
281
|
+
Se as DataTableColumnOrder
|
|
276
282
|
};
|
|
277
283
|
//# sourceMappingURL=data-table-column-order.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-column-order.js","sources":["../../../src/components/data-table/data-table-column-order.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback } from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { type Column } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type Announcements,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n useSortable,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Swap vertical icon (default trigger icon)\nconst IconSwapVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M320-440v-287l-76 76-44-44 150-150 150 150-44 44-76-76v287h-60ZM560-155 410-305l44-44 76 76v-287h60v287l76-76 44 44L560-155Z\" />\n </svg>\n)\n\n// Grip vertical icon (drag handle)\nconst IconGripVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <circle cx=\"9\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"19\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"19\" r=\"1.5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n width: \"1rem\",\n height: \"1rem\",\n },\n gripIcon: {\n width: \"14px\",\n height: \"14px\",\n },\n srOnly: {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n item: {\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n itemDragging: {\n zIndex: 50,\n backgroundColor: tokens.grayA3,\n opacity: 0.8,\n },\n dragHandle: {\n display: \"inline-flex\",\n flexShrink: 0,\n cursor: \"grab\",\n touchAction: \"none\",\n alignItems: \"center\",\n color: tokens.grayA8,\n backgroundColor: \"transparent\",\n ...shorthands.borderWidth(0),\n ...shorthands.padding(0),\n \"&:hover\": {\n color: tokens.grayA12,\n },\n \"&:focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \"&:active\": {\n cursor: \"grabbing\",\n },\n },\n itemLabel: {\n userSelect: \"none\",\n },\n})\n\nexport type DataTableColumnOrderProps = {\n /** Custom icon for the default trigger button. Falls back to swap-vertical icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to an icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Accessible label for the drag handle buttons. Recommended for i18n and accessibility. Receives column label as parameter. */\n dragHandleLabel?: string | ((columnLabel: string) => string)\n /** Custom screen reader announcements for drag-and-drop operations. */\n announcements?: Announcements\n /** Custom screen reader instructions for draggable items. */\n screenReaderInstructions?: ScreenReaderInstructions\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/** Sortable item inside the column order dropdown */\nfunction DataTableColumnOrderItem({\n column,\n dragHandleLabel,\n}: {\n column: Column<unknown, unknown>\n dragHandleLabel?: string | ((columnLabel: string) => string)\n}) {\n const styles = useStyles()\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const meta = column.columnDef.meta as { visibilityLabel?: string } | undefined\n const label =\n meta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n const resolvedDragHandleLabel = dragHandleLabel\n ? typeof dragHandleLabel === \"function\"\n ? dragHandleLabel(label)\n : dragHandleLabel\n : `Drag to reorder ${label}`\n\n return (\n <div\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n className={mergeClasses(styles.item, isDragging && styles.itemDragging)}\n data-slot=\"data-table-column-order-item\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item\" }}\n data-fs-element=\"DataTable-ColumnOrder-Item\"\n >\n <button\n type=\"button\"\n className={styles.dragHandle}\n data-slot=\"data-table-column-order-drag-handle\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-drag-handle\" }}\n aria-label={resolvedDragHandleLabel}\n {...attributes}\n {...listeners}\n >\n <IconGripVertical className={styles.gripIcon} />\n </button>\n <span\n className={styles.itemLabel}\n data-slot=\"data-table-column-order-item-label\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item-label\" }}\n >\n {label}\n </span>\n </div>\n )\n}\n\n/**\n * Inner list component that provides the DnD context.\n * Separated to avoid hook rules issues with early returns.\n */\nfunction DataTableColumnOrderList({\n columns,\n currentOrder,\n table,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: Column<any, unknown>[]\n currentOrder: string[]\n table: { setColumnOrder: (order: string[]) => void }\n dragHandleLabel?: string | ((columnLabel: string) => string)\n announcements?: Announcements\n screenReaderInstructions?: ScreenReaderInstructions\n}) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 3 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [currentOrder, table]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n accessibility={{\n announcements,\n screenReaderInstructions,\n }}\n >\n <SortableContext\n items={columns.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((col) => (\n <DataTableColumnOrderItem\n key={col.id}\n column={col}\n dragHandleLabel={dragHandleLabel}\n />\n ))}\n </SortableContext>\n </DndContext>\n )\n}\n\n/**\n * A dropdown menu for reordering columns in DataTable via drag-and-drop.\n * Shows a draggable list of columns that can be rearranged.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnOrder = React.forwardRef<\n HTMLElement,\n DataTableColumnOrderProps\n>(function DataTableColumnOrder(\n {\n icon,\n trigger,\n label,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n contentClassName,\n align = \"end\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const { table } = useDataTable()\n\n // Get reorderable columns (exclude selection column, respect meta.enableOrdering)\n const allColumns = table.getAllLeafColumns()\n const reorderableColumns = allColumns.filter((col) => {\n if (col.id === \"select\") return false\n const meta = col.columnDef.meta as { enableOrdering?: boolean } | undefined\n return meta?.enableOrdering !== false\n })\n\n // If no reorderable columns, don't render\n if (reorderableColumns.length === 0) {\n return null\n }\n\n // Current order (derive from columns if columnOrder state is empty)\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : allColumns.map((c) => c.id)\n\n // Sort reorderable columns by their position in currentOrder\n const orderedColumns = [...reorderableColumns].sort((a, b) => {\n const indexA = currentOrder.indexOf(a.id)\n const indexB = currentOrder.indexOf(b.id)\n return (\n (indexA === -1 ? Number.MAX_SAFE_INTEGER : indexA) -\n (indexB === -1 ? Number.MAX_SAFE_INTEGER : indexB)\n )\n })\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-slot=\"data-table-column-order-trigger\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-trigger\" }}\n data-fs-element=\"DataTable-ColumnOrder-Trigger\"\n >\n {icon ?? <IconSwapVertical className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-slot=\"data-table-column-order-content\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-content\" }}\n data-fs-element=\"DataTable-ColumnOrder-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DataTableColumnOrderList\n columns={orderedColumns}\n currentOrder={currentOrder}\n table={table}\n dragHandleLabel={dragHandleLabel}\n announcements={announcements}\n screenReaderInstructions={screenReaderInstructions}\n />\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSwapVertical","props","jsx","IconGripVertical","jsxs","useStyles","makeZenithStyles","shorthands","tokens.spacingElement2","tokens.radiusSm","tokens.textSm","tokens.leadingSm","tokens.grayA3","tokens.grayA8","tokens.grayA12","tokens.accentA8","DataTableColumnOrderItem","column","dragHandleLabel","styles","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","meta","label","resolvedDragHandleLabel","CSS","mergeClasses","SLOT_ATTR","DataTableColumnOrderList","columns","currentOrder","table","announcements","screenReaderInstructions","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","oldIndex","newIndex","newOrder","arrayMove","DndContext","closestCenter","SortableContext","c","verticalListSortingStrategy","col","DataTableColumnOrder","React","icon","trigger","contentClassName","align","ref","useDataTable","allColumns","reorderableColumns","orderedColumns","a","b","indexA","indexB","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table-column-order.js","sources":["../../../src/components/data-table/data-table-column-order.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useCallback } from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { type Column } from \"@tanstack/react-table\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type Announcements,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n useSortable,\n sortableKeyboardCoordinates,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Swap vertical icon (default trigger icon)\nconst IconSwapVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M320-440v-287l-76 76-44-44 150-150 150 150-44 44-76-76v287h-60ZM560-155 410-305l44-44 76 76v-287h60v287l76-76 44 44L560-155Z\" />\n </svg>\n)\n\n// Grip vertical icon (drag handle)\nconst IconGripVertical = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <circle cx=\"9\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"5\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"9\" cy=\"19\" r=\"1.5\" />\n <circle cx=\"15\" cy=\"19\" r=\"1.5\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n ...boxModel,\n width: \"1rem\",\n height: \"1rem\",\n },\n gripIcon: {\n ...boxModel,\n width: \"14px\",\n height: \"14px\",\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n item: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"6px\",\n paddingBottom: \"6px\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n itemDragging: {\n zIndex: 50,\n backgroundColor: tokens.grayA3,\n opacity: 0.8,\n },\n dragHandle: {\n ...nativeControl,\n display: \"inline-flex\",\n flexShrink: 0,\n cursor: \"grab\",\n touchAction: \"none\",\n alignItems: \"center\",\n color: tokens.grayA8,\n backgroundColor: \"transparent\",\n ...shorthands.borderWidth(0),\n ...shorthands.padding(0),\n \"&:hover\": {\n color: tokens.grayA12,\n },\n \"&:focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.accentA8,\n },\n \"&:active\": {\n cursor: \"grabbing\",\n },\n },\n itemLabel: {\n userSelect: \"none\",\n },\n})\n\nexport type DataTableColumnOrderProps = {\n /** Custom icon for the default trigger button. Falls back to swap-vertical icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to an icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Accessible label for the drag handle buttons. Recommended for i18n and accessibility. Receives column label as parameter. */\n dragHandleLabel?: string | ((columnLabel: string) => string)\n /** Custom screen reader announcements for drag-and-drop operations. */\n announcements?: Announcements\n /** Custom screen reader instructions for draggable items. */\n screenReaderInstructions?: ScreenReaderInstructions\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/** Sortable item inside the column order dropdown */\nfunction DataTableColumnOrderItem({\n column,\n dragHandleLabel,\n}: {\n column: Column<unknown, unknown>\n dragHandleLabel?: string | ((columnLabel: string) => string)\n}) {\n const styles = useStyles()\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const meta = column.columnDef.meta as { visibilityLabel?: string } | undefined\n const label =\n meta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n const resolvedDragHandleLabel = dragHandleLabel\n ? typeof dragHandleLabel === \"function\"\n ? dragHandleLabel(label)\n : dragHandleLabel\n : `Drag to reorder ${label}`\n\n return (\n <div\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n className={mergeClasses(styles.item, isDragging && styles.itemDragging)}\n data-slot=\"data-table-column-order-item\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item\" }}\n data-fs-element=\"DataTable-ColumnOrder-Item\"\n >\n <button\n type=\"button\"\n className={styles.dragHandle}\n data-slot=\"data-table-column-order-drag-handle\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-drag-handle\" }}\n aria-label={resolvedDragHandleLabel}\n {...attributes}\n {...listeners}\n >\n <IconGripVertical className={styles.gripIcon} />\n </button>\n <span\n className={styles.itemLabel}\n data-slot=\"data-table-column-order-item-label\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-item-label\" }}\n >\n {label}\n </span>\n </div>\n )\n}\n\n/**\n * Inner list component that provides the DnD context.\n * Separated to avoid hook rules issues with early returns.\n */\nfunction DataTableColumnOrderList({\n columns,\n currentOrder,\n table,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: Column<any, unknown>[]\n currentOrder: string[]\n table: { setColumnOrder: (order: string[]) => void }\n dragHandleLabel?: string | ((columnLabel: string) => string)\n announcements?: Announcements\n screenReaderInstructions?: ScreenReaderInstructions\n}) {\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: { distance: 3 },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = currentOrder.indexOf(active.id as string)\n const newIndex = currentOrder.indexOf(over.id as string)\n\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(currentOrder, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n },\n [currentOrder, table]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n accessibility={{\n announcements,\n screenReaderInstructions,\n }}\n >\n <SortableContext\n items={columns.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((col) => (\n <DataTableColumnOrderItem\n key={col.id}\n column={col}\n dragHandleLabel={dragHandleLabel}\n />\n ))}\n </SortableContext>\n </DndContext>\n )\n}\n\n/**\n * A dropdown menu for reordering columns in DataTable via drag-and-drop.\n * Shows a draggable list of columns that can be rearranged.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnOrder = React.forwardRef<\n HTMLElement,\n DataTableColumnOrderProps\n>(function DataTableColumnOrder(\n {\n icon,\n trigger,\n label,\n dragHandleLabel,\n announcements,\n screenReaderInstructions,\n contentClassName,\n align = \"end\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const { table } = useDataTable()\n\n // Get reorderable columns (exclude selection column, respect meta.enableOrdering)\n const allColumns = table.getAllLeafColumns()\n const reorderableColumns = allColumns.filter((col) => {\n if (col.id === \"select\") return false\n const meta = col.columnDef.meta as { enableOrdering?: boolean } | undefined\n return meta?.enableOrdering !== false\n })\n\n // If no reorderable columns, don't render\n if (reorderableColumns.length === 0) {\n return null\n }\n\n // Current order (derive from columns if columnOrder state is empty)\n const currentOrder =\n table.getState().columnOrder && table.getState().columnOrder.length > 0\n ? table.getState().columnOrder\n : allColumns.map((c) => c.id)\n\n // Sort reorderable columns by their position in currentOrder\n const orderedColumns = [...reorderableColumns].sort((a, b) => {\n const indexA = currentOrder.indexOf(a.id)\n const indexB = currentOrder.indexOf(b.id)\n return (\n (indexA === -1 ? Number.MAX_SAFE_INTEGER : indexA) -\n (indexB === -1 ? Number.MAX_SAFE_INTEGER : indexB)\n )\n })\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-slot=\"data-table-column-order-trigger\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-trigger\" }}\n data-fs-element=\"DataTable-ColumnOrder-Trigger\"\n >\n {icon ?? <IconSwapVertical className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-slot=\"data-table-column-order-content\"\n {...{ [SLOT_ATTR]: \"data-table-column-order-content\" }}\n data-fs-element=\"DataTable-ColumnOrder-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DataTableColumnOrderList\n columns={orderedColumns}\n currentOrder={currentOrder}\n table={table}\n dragHandleLabel={dragHandleLabel}\n announcements={announcements}\n screenReaderInstructions={screenReaderInstructions}\n />\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSwapVertical","props","jsx","IconGripVertical","jsxs","useStyles","makeZenithStyles","boxModel","shorthands","tokens.spacingElement2","tokens.radiusSm","tokens.textSm","tokens.leadingSm","tokens.grayA3","nativeControl","tokens.grayA8","tokens.grayA12","tokens.accentA8","DataTableColumnOrderItem","column","dragHandleLabel","styles","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","meta","label","resolvedDragHandleLabel","CSS","mergeClasses","SLOT_ATTR","DataTableColumnOrderList","columns","currentOrder","table","announcements","screenReaderInstructions","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragEnd","useCallback","event","active","over","oldIndex","newIndex","newOrder","arrayMove","DndContext","closestCenter","SortableContext","c","verticalListSortingStrategy","col","DataTableColumnOrder","React","icon","trigger","contentClassName","align","ref","useDataTable","allColumns","reorderableColumns","orderedColumns","a","b","indexA","indexB","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsxs as l, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
2
|
+
import * as w from "react";
|
|
3
3
|
import { shorthands as n } from "@epilot/zenith-runtime/v1";
|
|
4
|
-
import { makeZenithStyles as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
4
|
+
import { makeZenithStyles as D } from "../../styles/make-styles.js";
|
|
5
|
+
import { boxModel as d } from "../../styles/host-reset.js";
|
|
6
|
+
import { Button as y } from "../button/button.js";
|
|
7
|
+
import { DropdownMenu as C, DropdownMenuTrigger as x, DropdownMenuContent as M, DropdownMenuLabel as T, DropdownMenuSeparator as V, DropdownMenuCheckboxItem as v } from "../dropdown-menu/dropdown-menu.js";
|
|
8
|
+
import { useDataTable as S } from "./hooks/use-data-table.js";
|
|
9
|
+
const Z = (r) => /* @__PURE__ */ t(
|
|
9
10
|
"svg",
|
|
10
11
|
{
|
|
11
12
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -16,12 +17,14 @@ const S = (r) => /* @__PURE__ */ t(
|
|
|
16
17
|
...r,
|
|
17
18
|
children: /* @__PURE__ */ t("path", { d: "M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z" })
|
|
18
19
|
}
|
|
19
|
-
),
|
|
20
|
+
), k = D({
|
|
20
21
|
icon: {
|
|
22
|
+
...d,
|
|
21
23
|
width: "1rem",
|
|
22
24
|
height: "1rem"
|
|
23
25
|
},
|
|
24
26
|
srOnly: {
|
|
27
|
+
...d,
|
|
25
28
|
position: "absolute",
|
|
26
29
|
width: "1px",
|
|
27
30
|
height: "1px",
|
|
@@ -31,39 +34,39 @@ const S = (r) => /* @__PURE__ */ t(
|
|
|
31
34
|
clip: "rect(0, 0, 0, 0)",
|
|
32
35
|
whiteSpace: "nowrap"
|
|
33
36
|
}
|
|
34
|
-
}),
|
|
35
|
-
const { table:
|
|
36
|
-
return s.length === 0 ? null : /* @__PURE__ */ l(
|
|
37
|
-
/* @__PURE__ */ t(
|
|
38
|
-
|
|
37
|
+
}), Q = w.forwardRef(function({ icon: h, trigger: m, label: o, contentClassName: c, align: p = "end", ...q }, f) {
|
|
38
|
+
const { table: g } = S(), a = k(), s = g.getAllColumns().filter((e) => e.getCanHide());
|
|
39
|
+
return s.length === 0 ? null : /* @__PURE__ */ l(C, { ref: f, ...q, children: [
|
|
40
|
+
/* @__PURE__ */ t(x, { asChild: !0, children: m ?? /* @__PURE__ */ l(
|
|
41
|
+
y,
|
|
39
42
|
{
|
|
40
43
|
variant: "tertiary",
|
|
41
44
|
size: "sm",
|
|
42
45
|
"data-fs-element": "DataTable-ColumnVisibility-Trigger",
|
|
43
46
|
children: [
|
|
44
|
-
|
|
47
|
+
h ?? /* @__PURE__ */ t(Z, { className: a.icon }),
|
|
45
48
|
/* @__PURE__ */ t("span", { className: a.srOnly, children: o })
|
|
46
49
|
]
|
|
47
50
|
}
|
|
48
51
|
) }),
|
|
49
52
|
/* @__PURE__ */ l(
|
|
50
|
-
|
|
53
|
+
M,
|
|
51
54
|
{
|
|
52
|
-
align:
|
|
53
|
-
className:
|
|
55
|
+
align: p,
|
|
56
|
+
className: c,
|
|
54
57
|
"data-fs-element": "DataTable-ColumnVisibility-Content",
|
|
55
58
|
children: [
|
|
56
59
|
/* @__PURE__ */ t(T, { children: o }),
|
|
57
|
-
/* @__PURE__ */ t(
|
|
60
|
+
/* @__PURE__ */ t(V, {}),
|
|
58
61
|
s.map((e) => {
|
|
59
|
-
const i = e.columnDef.meta,
|
|
62
|
+
const i = e.columnDef.meta, u = (i == null ? void 0 : i.visibilityLabel) ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id);
|
|
60
63
|
return /* @__PURE__ */ t(
|
|
61
|
-
|
|
64
|
+
v,
|
|
62
65
|
{
|
|
63
66
|
checked: e.getIsVisible(),
|
|
64
|
-
onCheckedChange: (
|
|
67
|
+
onCheckedChange: (b) => e.toggleVisibility(!!b),
|
|
65
68
|
"data-fs-element": "DataTable-ColumnVisibility-Item",
|
|
66
|
-
children:
|
|
69
|
+
children: u
|
|
67
70
|
},
|
|
68
71
|
e.id
|
|
69
72
|
);
|
|
@@ -74,6 +77,6 @@ const S = (r) => /* @__PURE__ */ t(
|
|
|
74
77
|
] });
|
|
75
78
|
});
|
|
76
79
|
export {
|
|
77
|
-
|
|
80
|
+
Q as DataTableColumnVisibility
|
|
78
81
|
};
|
|
79
82
|
//# sourceMappingURL=data-table-column-visibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-column-visibility.js","sources":["../../../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Settings/gear icon (default)\nconst IconSettings = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n width: \"1rem\",\n height: \"1rem\",\n },\n srOnly: {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nexport type DataTableColumnVisibilityProps = {\n /** Custom icon for the default trigger button. Falls back to settings gear icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to a settings icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/**\n * A dropdown menu for toggling column visibility in DataTable.\n * Shows checkboxes for each column that can be hidden.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnVisibility = React.forwardRef<\n HTMLElement,\n DataTableColumnVisibilityProps\n>(function DataTableColumnVisibility(\n { icon, trigger, label, contentClassName, align = \"end\", ...props },\n ref\n) {\n const { table } = useDataTable()\n const styles = useStyles()\n\n // Get columns that can be hidden (excludes selection column, etc.)\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n // If no hideable columns, don't render anything\n if (columns.length === 0) {\n return null\n }\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-fs-element=\"DataTable-ColumnVisibility-Trigger\"\n >\n {icon ?? <IconSettings className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-fs-element=\"DataTable-ColumnVisibility-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n // Get column header text for display\n // Priority: meta.visibilityLabel > string header > column.id\n const columnMeta = column.columnDef.meta as\n { visibilityLabel?: string } | undefined\n const headerText =\n columnMeta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n data-fs-element=\"DataTable-ColumnVisibility-Item\"\n >\n {headerText}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSettings","props","jsx","useStyles","makeZenithStyles","shorthands","DataTableColumnVisibility","React","icon","trigger","label","contentClassName","align","ref","table","useDataTable","styles","columns","column","jsxs","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnMeta","headerText","DropdownMenuCheckboxItem","value"],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-table-column-visibility.js","sources":["../../../src/components/data-table/data-table-column-visibility.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { ComponentProps, ReactNode, SVGProps } from \"react\"\nimport { shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport { Button } from \"../button/button\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu/dropdown-menu\"\nimport { useDataTable } from \"./hooks/use-data-table\"\n\n// Settings/gear icon (default)\nconst IconSettings = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M413.09-65.87q-16.26 0-28.68-9.85Q372-85.56 370-101.83l-15-94.56q-15.61-5.31-34.07-15.89-18.45-10.59-31.63-21.33l-85.43 40q-15.7 6.57-31.96 1.78-16.26-4.78-24.82-20.04l-65.92-118.7q-9.13-14.13-5.34-30.1 3.78-15.98 17.47-26.11l79.44-59q-1.44-7.31-1.94-17.11-.5-9.81-.5-17.11 0-7.3.5-17.11.5-9.8 1.94-17.11L93.3-572.65q-14.26-10.13-17.76-26.11-3.5-15.98 5.63-30.67l65.92-118.7q8.56-14.13 24.54-19.48 15.98-5.35 31.67 1.22l87.13 40q12.61-10.18 30.79-20.48 18.17-10.3 33.78-15.17l15-95.57q2-16.83 14.41-26.96 12.42-10.13 28.68-10.13h133.82q16.26 0 28.68 10.13Q588-874.44 590-857.61l15 94.57q15.61 5.87 34.28 15.67 18.68 9.8 31.42 20.98l85.43-40q15.7-6.57 31.46-1.22 15.76 5.35 24.32 19.48l67.48 118.7q8.57 14.69 5.07 31.17-3.5 16.48-17.76 25.61l-80 56.43q1.43 8.31 2.21 18.11.79 9.81.79 18.11 0 8.3-.79 17.61-.78 9.3-2.21 17.61l80 57.43q14.26 9.13 17.76 25.61 3.5 16.48-5.07 31.17l-66.48 118.7q-8.56 14.7-24.54 19.76-15.98 5.07-31.67-1.5l-86.57-40q-13.17 10.74-30.85 21.55-17.67 10.8-34.28 15.67l-15 94.56q-2 16.27-14.41 26.11-12.42 9.85-28.68 9.85H413.09Zm27.43-79.22h78.39l14.57-111.43q33.56-8 63.91-25 30.35-17 54.35-42.7l106 46 34.91-64.65-92.87-67.87q4-17.56 6.78-34.63 2.79-17.06 2.79-34.63 0-17.57-2.29-34.63-2.28-17.07-7.28-34.63l93.44-67.87-35.48-64.65-105.44 46q-23-27.13-53.13-45.48-30.13-18.35-65.69-22.78l-14-110.87h-78.96l-13.43 110.87q-35.13 6.43-65.76 24.28-30.63 17.85-54.2 43.98l-104.87-46-35.48 64.65 92.31 67.3q-4 17.57-6.79 34.92-2.78 17.34-2.78 34.91 0 17.57 2.78 35.2 2.79 17.63 6.79 34.63l-92.31 67.3 35.48 64.65 104.87-46q24.57 25.13 55.2 42.7 30.63 17.56 64.76 25.56l13.43 110.87ZM478.87-350q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38ZM480-480Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n icon: {\n ...boxModel,\n width: \"1rem\",\n height: \"1rem\",\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n ...shorthands.padding(0),\n ...shorthands.margin(\"-1px\"),\n ...shorthands.overflow(\"hidden\"),\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nexport type DataTableColumnVisibilityProps = {\n /** Custom icon for the default trigger button. Falls back to settings gear icon. */\n icon?: ReactNode\n /** Custom trigger element. Defaults to a settings icon button. */\n trigger?: ReactNode\n /** Label shown at top of dropdown and as screen reader text for default trigger. Required for i18n. */\n label: string\n /** Additional class name for the dropdown content */\n contentClassName?: string\n /** Alignment of dropdown relative to trigger. Default: \"end\" */\n align?: \"start\" | \"center\" | \"end\"\n} & Omit<ComponentProps<typeof DropdownMenu>, \"children\">\n\n/**\n * A dropdown menu for toggling column visibility in DataTable.\n * Shows checkboxes for each column that can be hidden.\n * Place in DataTableToolbar for consistent layout.\n */\nexport const DataTableColumnVisibility = React.forwardRef<\n HTMLElement,\n DataTableColumnVisibilityProps\n>(function DataTableColumnVisibility(\n { icon, trigger, label, contentClassName, align = \"end\", ...props },\n ref\n) {\n const { table } = useDataTable()\n const styles = useStyles()\n\n // Get columns that can be hidden (excludes selection column, etc.)\n const columns = table.getAllColumns().filter((column) => column.getCanHide())\n\n // If no hideable columns, don't render anything\n if (columns.length === 0) {\n return null\n }\n\n return (\n <DropdownMenu ref={ref} {...props}>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n data-fs-element=\"DataTable-ColumnVisibility-Trigger\"\n >\n {icon ?? <IconSettings className={styles.icon} />}\n <span className={styles.srOnly}>{label}</span>\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className={contentClassName}\n data-fs-element=\"DataTable-ColumnVisibility-Content\"\n >\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {columns.map((column) => {\n // Get column header text for display\n // Priority: meta.visibilityLabel > string header > column.id\n const columnMeta = column.columnDef.meta as\n { visibilityLabel?: string } | undefined\n const headerText =\n columnMeta?.visibilityLabel ??\n (typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id)\n\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n data-fs-element=\"DataTable-ColumnVisibility-Item\"\n >\n {headerText}\n </DropdownMenuCheckboxItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n"],"names":["IconSettings","props","jsx","useStyles","makeZenithStyles","boxModel","shorthands","DataTableColumnVisibility","React","icon","trigger","label","contentClassName","align","ref","table","useDataTable","styles","columns","column","jsxs","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnMeta","headerText","DropdownMenuCheckboxItem","value"],"mappings":";;;;;;;;AAkBA,MAAMA,IAAe,CAACC,MACpB,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,iqDAAA,CAAiqD;AAAA,EAAA;AAC3qD,GAGIC,IAAYC,EAAiB;AAAA,EACjC,MAAM;AAAA,IACJ,GAAGC;AAAA,IACH,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACN,GAAGA;AAAA,IACH,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAGC,EAAW,QAAQ,CAAC;AAAA,IACvB,GAAGA,EAAW,OAAO,MAAM;AAAA,IAC3B,GAAGA,EAAW,SAAS,QAAQ;AAAA,IAC/B,MAAM;AAAA,IACN,YAAY;AAAA,EAAA;AAEhB,CAAC,GAoBYC,IAA4BC,EAAM,WAG7C,SACA,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,kBAAAC,GAAkB,OAAAC,IAAQ,OAAO,GAAGZ,EAAA,GAC5Da,GACA;AACA,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA,GACZC,IAASd,EAAA,GAGTe,IAAUH,EAAM,cAAA,EAAgB,OAAO,CAACI,MAAWA,EAAO,YAAY;AAG5E,SAAID,EAAQ,WAAW,IACd,OAIP,gBAAAE,EAACC,GAAA,EAAa,KAAAP,GAAW,GAAGb,GAC1B,UAAA;AAAA,IAAA,gBAAAC,EAACoB,GAAA,EAAoB,SAAO,IACzB,UAAAZ,KACC,gBAAAU;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,mBAAgB;AAAA,QAEf,UAAA;AAAA,UAAAd,KAAQ,gBAAAP,EAACF,GAAA,EAAa,WAAWiB,EAAO,MAAM;AAAA,UAC/C,gBAAAf,EAAC,QAAA,EAAK,WAAWe,EAAO,QAAS,UAAAN,EAAA,CAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAG7C;AAAA,IACA,gBAAAS;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,OAAAX;AAAA,QACA,WAAWD;AAAA,QACX,mBAAgB;AAAA,QAEhB,UAAA;AAAA,UAAA,gBAAAV,EAACuB,KAAmB,UAAAd,EAAA,CAAM;AAAA,4BACzBe,GAAA,EAAsB;AAAA,UACtBR,EAAQ,IAAI,CAACC,MAAW;AAGvB,kBAAMQ,IAAaR,EAAO,UAAU,MAE9BS,KACJD,KAAA,gBAAAA,EAAY,qBACX,OAAOR,EAAO,UAAU,UAAW,WAChCA,EAAO,UAAU,SACjBA,EAAO;AAEb,mBACE,gBAAAjB;AAAA,cAAC2B;AAAA,cAAA;AAAA,gBAEC,SAASV,EAAO,aAAA;AAAA,gBAChB,iBAAiB,CAACW,MAAUX,EAAO,iBAAiB,CAAC,CAACW,CAAK;AAAA,gBAC3D,mBAAgB;AAAA,gBAEf,UAAAF;AAAA,cAAA;AAAA,cALIT,EAAO;AAAA,YAAA;AAAA,UAQlB,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;"}
|