@optimum-intelligence/opti-ui 0.0.0-stage → 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.
- package/LICENSE +23 -0
- package/README.md +244 -2
- package/dist/components/accordion/Accordion.d.ts +17 -0
- package/dist/components/accordion/Accordion.js +204 -0
- package/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/components/alert/Alert.d.ts +18 -0
- package/dist/components/alert/Alert.js +164 -0
- package/dist/components/alert/Alert.js.map +1 -0
- package/dist/components/app-shell/AppShell.d.ts +97 -0
- package/dist/components/app-shell/AppShell.js +689 -0
- package/dist/components/app-shell/AppShell.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +21 -0
- package/dist/components/avatar/Avatar.js +190 -0
- package/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/components/badge/Badge.d.ts +16 -0
- package/dist/components/badge/Badge.js +94 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +18 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js +154 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/components/button/Button.d.ts +23 -0
- package/dist/components/button/Button.js +159 -0
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/calendar/Calendar.d.ts +59 -0
- package/dist/components/calendar/Calendar.js +709 -0
- package/dist/components/calendar/Calendar.js.map +1 -0
- package/dist/components/calendar/date-utils.d.ts +32 -0
- package/dist/components/calendar/date-utils.js +112 -0
- package/dist/components/calendar/date-utils.js.map +1 -0
- package/dist/components/card/Card.d.ts +42 -0
- package/dist/components/card/Card.js +82 -0
- package/dist/components/card/Card.js.map +1 -0
- package/dist/components/choice/Choice.d.ts +32 -0
- package/dist/components/choice/Choice.js +371 -0
- package/dist/components/choice/Choice.js.map +1 -0
- package/dist/components/collapsible/Collapsible.d.ts +15 -0
- package/dist/components/collapsible/Collapsible.js +155 -0
- package/dist/components/collapsible/Collapsible.js.map +1 -0
- package/dist/components/combobox/Combobox.d.ts +68 -0
- package/dist/components/combobox/Combobox.js +752 -0
- package/dist/components/combobox/Combobox.js.map +1 -0
- package/dist/components/command-palette/CommandPalette.d.ts +52 -0
- package/dist/components/command-palette/CommandPalette.js +328 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -0
- package/dist/components/data-table/DataTable.d.ts +73 -0
- package/dist/components/data-table/DataTable.js +478 -0
- package/dist/components/data-table/DataTable.js.map +1 -0
- package/dist/components/data-table/DataTableContent.d.ts +35 -0
- package/dist/components/data-table/DataTableContent.js +550 -0
- package/dist/components/data-table/DataTableContent.js.map +1 -0
- package/dist/components/data-table/DataTableFilters.d.ts +15 -0
- package/dist/components/data-table/DataTableFilters.js +284 -0
- package/dist/components/data-table/DataTableFilters.js.map +1 -0
- package/dist/components/data-table/DataTableRow.d.ts +33 -0
- package/dist/components/data-table/DataTableRow.js +552 -0
- package/dist/components/data-table/DataTableRow.js.map +1 -0
- package/dist/components/data-table/context.d.ts +5 -0
- package/dist/components/data-table/context.js +14 -0
- package/dist/components/data-table/context.js.map +1 -0
- package/dist/components/data-table/layout.d.ts +60 -0
- package/dist/components/data-table/layout.js +272 -0
- package/dist/components/data-table/layout.js.map +1 -0
- package/dist/components/data-table/types.d.ts +319 -0
- package/dist/components/data-table/useDataTable.d.ts +9 -0
- package/dist/components/data-table/useDataTable.js +666 -0
- package/dist/components/data-table/useDataTable.js.map +1 -0
- package/dist/components/date-picker/DatePicker.d.ts +50 -0
- package/dist/components/date-picker/DatePicker.js +485 -0
- package/dist/components/date-picker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/DateRangePicker.d.ts +39 -0
- package/dist/components/date-picker/DateRangePicker.js +339 -0
- package/dist/components/date-picker/DateRangePicker.js.map +1 -0
- package/dist/components/date-picker/PickerField.d.ts +38 -0
- package/dist/components/date-picker/PickerField.js +238 -0
- package/dist/components/date-picker/PickerField.js.map +1 -0
- package/dist/components/dialog/Dialog.d.ts +70 -0
- package/dist/components/dialog/Dialog.js +354 -0
- package/dist/components/dialog/Dialog.js.map +1 -0
- package/dist/components/drawer/Drawer.d.ts +39 -0
- package/dist/components/drawer/Drawer.js +225 -0
- package/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/components/empty-state/EmptyState.d.ts +12 -0
- package/dist/components/empty-state/EmptyState.js +116 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -0
- package/dist/components/field/Field.d.ts +36 -0
- package/dist/components/field/Field.js +337 -0
- package/dist/components/field/Field.js.map +1 -0
- package/dist/components/file-upload/FileUpload.d.ts +91 -0
- package/dist/components/file-upload/FileUpload.js +714 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -0
- package/dist/components/input/Input.d.ts +49 -0
- package/dist/components/input/Input.js +538 -0
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/link/Link.d.ts +17 -0
- package/dist/components/link/Link.js +91 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/menu/Menu.d.ts +79 -0
- package/dist/components/menu/Menu.js +615 -0
- package/dist/components/menu/Menu.js.map +1 -0
- package/dist/components/number-field/NumberField.d.ts +16 -0
- package/dist/components/number-field/NumberField.js +188 -0
- package/dist/components/number-field/NumberField.js.map +1 -0
- package/dist/components/pagination/Pagination.d.ts +34 -0
- package/dist/components/pagination/Pagination.js +244 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +22 -0
- package/dist/components/popover/Popover.js +186 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/preview-card/PreviewCard.d.ts +20 -0
- package/dist/components/preview-card/PreviewCard.js +114 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -0
- package/dist/components/progress/Progress.d.ts +20 -0
- package/dist/components/progress/Progress.js +169 -0
- package/dist/components/progress/Progress.js.map +1 -0
- package/dist/components/scroll-area/ScrollArea.d.ts +8 -0
- package/dist/components/scroll-area/ScrollArea.js +112 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -0
- package/dist/components/search-input/SearchInput.d.ts +14 -0
- package/dist/components/search-input/SearchInput.js +114 -0
- package/dist/components/search-input/SearchInput.js.map +1 -0
- package/dist/components/select/Select.d.ts +66 -0
- package/dist/components/select/Select.js +601 -0
- package/dist/components/select/Select.js.map +1 -0
- package/dist/components/separator/Separator.d.ts +4 -0
- package/dist/components/separator/Separator.js +46 -0
- package/dist/components/separator/Separator.js.map +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +16 -0
- package/dist/components/skeleton/Skeleton.js +135 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/slider/Slider.d.ts +11 -0
- package/dist/components/slider/Slider.js +107 -0
- package/dist/components/slider/Slider.js.map +1 -0
- package/dist/components/spinner/Spinner.d.ts +9 -0
- package/dist/components/spinner/Spinner.js +78 -0
- package/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/components/stack/Stack.d.ts +23 -0
- package/dist/components/stack/Stack.js +79 -0
- package/dist/components/stack/Stack.js.map +1 -0
- package/dist/components/stat-card/StatCard.d.ts +22 -0
- package/dist/components/stat-card/StatCard.js +153 -0
- package/dist/components/stat-card/StatCard.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +30 -0
- package/dist/components/stepper/Stepper.js +131 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/table/Table.d.ts +53 -0
- package/dist/components/table/Table.js +221 -0
- package/dist/components/table/Table.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +19 -0
- package/dist/components/tabs/Tabs.js +183 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/tag/Tag.d.ts +22 -0
- package/dist/components/tag/Tag.js +121 -0
- package/dist/components/tag/Tag.js.map +1 -0
- package/dist/components/toast/Toast.d.ts +34 -0
- package/dist/components/toast/Toast.js +187 -0
- package/dist/components/toast/Toast.js.map +1 -0
- package/dist/components/toggle/Toggle.d.ts +31 -0
- package/dist/components/toggle/Toggle.js +197 -0
- package/dist/components/toggle/Toggle.js.map +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +21 -0
- package/dist/components/toolbar/Toolbar.js +239 -0
- package/dist/components/toolbar/Toolbar.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +33 -0
- package/dist/components/tooltip/Tooltip.js +182 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/components/typography/Typography.d.ts +32 -0
- package/dist/components/typography/Typography.js +183 -0
- package/dist/components/typography/Typography.js.map +1 -0
- package/dist/fonts.css +3 -0
- package/dist/icons/index.d.ts +133 -0
- package/dist/icons/index.js +182 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.js +58 -0
- package/dist/opti-ui.css +5692 -0
- package/dist/theme/ThemeProvider.d.ts +22 -0
- package/dist/theme/ThemeProvider.js +115 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/utils/cx.d.ts +10 -0
- package/dist/utils/cx.js +18 -0
- package/dist/utils/cx.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/portal.d.ts +8 -0
- package/dist/utils/portal.js +16 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils/primitive.d.ts +13 -0
- package/dist/utils/primitive.js +61 -0
- package/dist/utils/primitive.js.map +1 -0
- package/dist/utils/search.d.ts +4 -0
- package/dist/utils/search.js +15 -0
- package/dist/utils/search.js.map +1 -0
- package/package.json +71 -4
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { CheckIcon, PencilIcon, TrashIcon, XIcon } from "../../icons/index.js";
|
|
3
|
+
import { IconButton } from "../button/Button.js";
|
|
4
|
+
import { Input } from "../input/Input.js";
|
|
5
|
+
import { Select } from "../select/Select.js";
|
|
6
|
+
import { Checkbox } from "../choice/Choice.js";
|
|
7
|
+
import { Tooltip } from "../tooltip/Tooltip.js";
|
|
8
|
+
import { TableCell, TableRow } from "../table/Table.js";
|
|
9
|
+
import { getColumnValue } from "./useDataTable.js";
|
|
10
|
+
import { c } from "react/compiler-runtime";
|
|
11
|
+
import * as React from "react";
|
|
12
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
//#region src/components/data-table/DataTableRow.tsx
|
|
14
|
+
var INTERACTIVE = "a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]";
|
|
15
|
+
function isEmpty(value) {
|
|
16
|
+
return value === null || value === void 0 || value === "";
|
|
17
|
+
}
|
|
18
|
+
function labelOf(column) {
|
|
19
|
+
return column.label ?? (typeof column.header === "string" ? column.header : column.id);
|
|
20
|
+
}
|
|
21
|
+
function editOf(column) {
|
|
22
|
+
if (!column.edit) return null;
|
|
23
|
+
const config = typeof column.edit === "string" ? { type: column.edit } : column.edit;
|
|
24
|
+
return {
|
|
25
|
+
...config,
|
|
26
|
+
field: config.field ?? column.id
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */
|
|
30
|
+
function isTextEditor(column) {
|
|
31
|
+
const edit = editOf(column);
|
|
32
|
+
return edit !== null && !edit.render && (edit.type ?? "text") === "text";
|
|
33
|
+
}
|
|
34
|
+
function isAction(item) {
|
|
35
|
+
return typeof item === "object" && item !== null && !React.isValidElement(item) && "label" in item && "icon" in item;
|
|
36
|
+
}
|
|
37
|
+
/** What a cell shows outside editing: the column's `cell`, or its value as text. */
|
|
38
|
+
function cellContent(column, row) {
|
|
39
|
+
if (column.cell) return column.cell(row);
|
|
40
|
+
const value = getColumnValue(column, row);
|
|
41
|
+
if (React.isValidElement(value)) return value;
|
|
42
|
+
return isEmpty(value) ? "—" : String(value);
|
|
43
|
+
}
|
|
44
|
+
function ActionButton(t0) {
|
|
45
|
+
const $ = c(13);
|
|
46
|
+
let danger;
|
|
47
|
+
let icon;
|
|
48
|
+
let label;
|
|
49
|
+
let props;
|
|
50
|
+
if ($[0] !== t0) {
|
|
51
|
+
({label, icon, danger, ...props} = t0);
|
|
52
|
+
$[0] = t0;
|
|
53
|
+
$[1] = danger;
|
|
54
|
+
$[2] = icon;
|
|
55
|
+
$[3] = label;
|
|
56
|
+
$[4] = props;
|
|
57
|
+
} else {
|
|
58
|
+
danger = $[1];
|
|
59
|
+
icon = $[2];
|
|
60
|
+
label = $[3];
|
|
61
|
+
props = $[4];
|
|
62
|
+
}
|
|
63
|
+
const t1 = danger ? "" : void 0;
|
|
64
|
+
let t2;
|
|
65
|
+
if ($[5] !== icon || $[6] !== label || $[7] !== props || $[8] !== t1) {
|
|
66
|
+
t2 = /* @__PURE__ */ jsx(IconButton, {
|
|
67
|
+
size: "sm",
|
|
68
|
+
className: "oui-data-table__action",
|
|
69
|
+
"aria-label": label,
|
|
70
|
+
"data-danger": t1,
|
|
71
|
+
...props,
|
|
72
|
+
children: icon
|
|
73
|
+
});
|
|
74
|
+
$[5] = icon;
|
|
75
|
+
$[6] = label;
|
|
76
|
+
$[7] = props;
|
|
77
|
+
$[8] = t1;
|
|
78
|
+
$[9] = t2;
|
|
79
|
+
} else t2 = $[9];
|
|
80
|
+
let t3;
|
|
81
|
+
if ($[10] !== label || $[11] !== t2) {
|
|
82
|
+
t3 = /* @__PURE__ */ jsx(Tooltip, {
|
|
83
|
+
content: label,
|
|
84
|
+
children: t2
|
|
85
|
+
});
|
|
86
|
+
$[10] = label;
|
|
87
|
+
$[11] = t2;
|
|
88
|
+
$[12] = t3;
|
|
89
|
+
} else t3 = $[12];
|
|
90
|
+
return t3;
|
|
91
|
+
}
|
|
92
|
+
function Editor(t0) {
|
|
93
|
+
const $ = c(16);
|
|
94
|
+
const { table, column, edit, row, autoFocus } = t0;
|
|
95
|
+
let t1;
|
|
96
|
+
let t2;
|
|
97
|
+
if ($[0] !== autoFocus || $[1] !== column || $[2] !== edit || $[3] !== row || $[4] !== table) {
|
|
98
|
+
t2 = Symbol.for("react.early_return_sentinel");
|
|
99
|
+
bb0: {
|
|
100
|
+
const value = table.editValue(row, edit.field);
|
|
101
|
+
let t3;
|
|
102
|
+
if ($[7] !== edit.field || $[8] !== table) {
|
|
103
|
+
t3 = (next) => table.setEditValue(edit.field, next);
|
|
104
|
+
$[7] = edit.field;
|
|
105
|
+
$[8] = table;
|
|
106
|
+
$[9] = t3;
|
|
107
|
+
} else t3 = $[9];
|
|
108
|
+
const setValue = t3;
|
|
109
|
+
const disabled = table.saving;
|
|
110
|
+
let t4;
|
|
111
|
+
if ($[10] !== column) {
|
|
112
|
+
t4 = labelOf(column);
|
|
113
|
+
$[10] = column;
|
|
114
|
+
$[11] = t4;
|
|
115
|
+
} else t4 = $[11];
|
|
116
|
+
const label = t4;
|
|
117
|
+
if (edit.render) {
|
|
118
|
+
t2 = edit.render({
|
|
119
|
+
row,
|
|
120
|
+
value,
|
|
121
|
+
setValue,
|
|
122
|
+
disabled
|
|
123
|
+
});
|
|
124
|
+
break bb0;
|
|
125
|
+
}
|
|
126
|
+
if (edit.type === "checkbox") {
|
|
127
|
+
t2 = /* @__PURE__ */ jsx(Checkbox, {
|
|
128
|
+
size: "sm",
|
|
129
|
+
"aria-label": label,
|
|
130
|
+
checked: Boolean(value),
|
|
131
|
+
disabled,
|
|
132
|
+
onCheckedChange: setValue
|
|
133
|
+
});
|
|
134
|
+
break bb0;
|
|
135
|
+
}
|
|
136
|
+
if (edit.type === "select") {
|
|
137
|
+
let t5;
|
|
138
|
+
if ($[12] !== edit.options) {
|
|
139
|
+
t5 = edit.options ?? [];
|
|
140
|
+
$[12] = edit.options;
|
|
141
|
+
$[13] = t5;
|
|
142
|
+
} else t5 = $[13];
|
|
143
|
+
let t6;
|
|
144
|
+
if ($[14] !== label) {
|
|
145
|
+
t6 = { "aria-label": label };
|
|
146
|
+
$[14] = label;
|
|
147
|
+
$[15] = t6;
|
|
148
|
+
} else t6 = $[15];
|
|
149
|
+
t2 = /* @__PURE__ */ jsx(Select, {
|
|
150
|
+
size: "sm",
|
|
151
|
+
items: t5,
|
|
152
|
+
value: isEmpty(value) ? null : String(value),
|
|
153
|
+
onValueChange: setValue,
|
|
154
|
+
disabled,
|
|
155
|
+
triggerProps: t6
|
|
156
|
+
});
|
|
157
|
+
break bb0;
|
|
158
|
+
}
|
|
159
|
+
t1 = /* @__PURE__ */ jsx(Input, {
|
|
160
|
+
size: "sm",
|
|
161
|
+
"aria-label": label,
|
|
162
|
+
autoFocus,
|
|
163
|
+
disabled,
|
|
164
|
+
...edit.inputProps,
|
|
165
|
+
value: isEmpty(value) ? "" : String(value),
|
|
166
|
+
onValueChange: setValue
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
$[0] = autoFocus;
|
|
170
|
+
$[1] = column;
|
|
171
|
+
$[2] = edit;
|
|
172
|
+
$[3] = row;
|
|
173
|
+
$[4] = table;
|
|
174
|
+
$[5] = t1;
|
|
175
|
+
$[6] = t2;
|
|
176
|
+
} else {
|
|
177
|
+
t1 = $[5];
|
|
178
|
+
t2 = $[6];
|
|
179
|
+
}
|
|
180
|
+
if (t2 !== Symbol.for("react.early_return_sentinel")) return t2;
|
|
181
|
+
return t1;
|
|
182
|
+
}
|
|
183
|
+
/** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */
|
|
184
|
+
function RowActions(t0) {
|
|
185
|
+
const $ = c(21);
|
|
186
|
+
const { table, entry: t1, onEdit } = t0;
|
|
187
|
+
const { row, id } = t1;
|
|
188
|
+
const text = table.labels;
|
|
189
|
+
const editing = table.editingId === id;
|
|
190
|
+
let T0;
|
|
191
|
+
let t2;
|
|
192
|
+
let t3;
|
|
193
|
+
let t4;
|
|
194
|
+
let t5;
|
|
195
|
+
if ($[0] !== editing || $[1] !== id || $[2] !== onEdit || $[3] !== row || $[4] !== table || $[5] !== text) {
|
|
196
|
+
const actions = table.rowActions?.(row);
|
|
197
|
+
const slots = table.editable ? table.deletable ? 3 : 2 : 0;
|
|
198
|
+
T0 = TableCell;
|
|
199
|
+
t5 = "oui-data-table__row-actions";
|
|
200
|
+
t2 = "oui-data-table__row-actions-list";
|
|
201
|
+
if ($[11] !== slots) {
|
|
202
|
+
t3 = slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * .125}rem)` } : void 0;
|
|
203
|
+
$[11] = slots;
|
|
204
|
+
$[12] = t3;
|
|
205
|
+
} else t3 = $[12];
|
|
206
|
+
t4 = editing ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
207
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
208
|
+
label: text.save,
|
|
209
|
+
icon: /* @__PURE__ */ jsx(CheckIcon, {}),
|
|
210
|
+
loading: table.saving,
|
|
211
|
+
onClick: table.saveEdit
|
|
212
|
+
}),
|
|
213
|
+
table.deletable && /* @__PURE__ */ jsx(ActionButton, {
|
|
214
|
+
label: text.delete,
|
|
215
|
+
icon: /* @__PURE__ */ jsx(TrashIcon, {}),
|
|
216
|
+
danger: true,
|
|
217
|
+
disabled: table.saving,
|
|
218
|
+
onClick: () => table.deleteRow(row)
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ jsx(ActionButton, {
|
|
221
|
+
label: text.cancel,
|
|
222
|
+
icon: /* @__PURE__ */ jsx(XIcon, {}),
|
|
223
|
+
disabled: table.saving,
|
|
224
|
+
onClick: table.cancelEdit
|
|
225
|
+
})
|
|
226
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
227
|
+
(Array.isArray(actions) ? actions : [actions]).map(_temp),
|
|
228
|
+
table.editable && /* @__PURE__ */ jsx(ActionButton, {
|
|
229
|
+
label: text.edit,
|
|
230
|
+
icon: /* @__PURE__ */ jsx(PencilIcon, {}),
|
|
231
|
+
disabled: table.saving,
|
|
232
|
+
onClick: (event) => {
|
|
233
|
+
onEdit?.(event.currentTarget);
|
|
234
|
+
table.startEdit(id);
|
|
235
|
+
}
|
|
236
|
+
}),
|
|
237
|
+
table.deletable && !table.editable && /* @__PURE__ */ jsx(ActionButton, {
|
|
238
|
+
label: text.delete,
|
|
239
|
+
icon: /* @__PURE__ */ jsx(TrashIcon, {}),
|
|
240
|
+
danger: true,
|
|
241
|
+
onClick: () => table.deleteRow(row)
|
|
242
|
+
})
|
|
243
|
+
] });
|
|
244
|
+
$[0] = editing;
|
|
245
|
+
$[1] = id;
|
|
246
|
+
$[2] = onEdit;
|
|
247
|
+
$[3] = row;
|
|
248
|
+
$[4] = table;
|
|
249
|
+
$[5] = text;
|
|
250
|
+
$[6] = T0;
|
|
251
|
+
$[7] = t2;
|
|
252
|
+
$[8] = t3;
|
|
253
|
+
$[9] = t4;
|
|
254
|
+
$[10] = t5;
|
|
255
|
+
} else {
|
|
256
|
+
T0 = $[6];
|
|
257
|
+
t2 = $[7];
|
|
258
|
+
t3 = $[8];
|
|
259
|
+
t4 = $[9];
|
|
260
|
+
t5 = $[10];
|
|
261
|
+
}
|
|
262
|
+
let t6;
|
|
263
|
+
if ($[13] !== t2 || $[14] !== t3 || $[15] !== t4) {
|
|
264
|
+
t6 = /* @__PURE__ */ jsx("div", {
|
|
265
|
+
className: t2,
|
|
266
|
+
style: t3,
|
|
267
|
+
children: t4
|
|
268
|
+
});
|
|
269
|
+
$[13] = t2;
|
|
270
|
+
$[14] = t3;
|
|
271
|
+
$[15] = t4;
|
|
272
|
+
$[16] = t6;
|
|
273
|
+
} else t6 = $[16];
|
|
274
|
+
let t7;
|
|
275
|
+
if ($[17] !== T0 || $[18] !== t5 || $[19] !== t6) {
|
|
276
|
+
t7 = /* @__PURE__ */ jsx(T0, {
|
|
277
|
+
className: t5,
|
|
278
|
+
children: t6
|
|
279
|
+
});
|
|
280
|
+
$[17] = T0;
|
|
281
|
+
$[18] = t5;
|
|
282
|
+
$[19] = t6;
|
|
283
|
+
$[20] = t7;
|
|
284
|
+
} else t7 = $[20];
|
|
285
|
+
return t7;
|
|
286
|
+
}
|
|
287
|
+
function _temp(item, index) {
|
|
288
|
+
return isAction(item) ? /* @__PURE__ */ jsx(ActionButton, {
|
|
289
|
+
label: item.label,
|
|
290
|
+
icon: item.icon,
|
|
291
|
+
danger: item.danger,
|
|
292
|
+
disabled: item.disabled,
|
|
293
|
+
onClick: item.onClick
|
|
294
|
+
}, item.label) : /* @__PURE__ */ jsx(React.Fragment, { children: item }, index);
|
|
295
|
+
}
|
|
296
|
+
function Row(t0) {
|
|
297
|
+
const $ = c(63);
|
|
298
|
+
const { table, entry, columns, hasActions, focused, index, height } = t0;
|
|
299
|
+
const { row, id } = entry;
|
|
300
|
+
const editing = table.editingId === id;
|
|
301
|
+
const virtual = index !== void 0;
|
|
302
|
+
const [editHeight, setEditHeight] = React.useState();
|
|
303
|
+
const onRowClick = editing ? void 0 : table.onRowClick;
|
|
304
|
+
let t1;
|
|
305
|
+
if ($[0] !== row || $[1] !== table) {
|
|
306
|
+
t1 = table.rowProps?.(row);
|
|
307
|
+
$[0] = row;
|
|
308
|
+
$[1] = table;
|
|
309
|
+
$[2] = t1;
|
|
310
|
+
} else t1 = $[2];
|
|
311
|
+
const extra = t1;
|
|
312
|
+
const held = height ?? (editing ? editHeight : void 0);
|
|
313
|
+
let t2;
|
|
314
|
+
if ($[3] !== extra?.style || $[4] !== held) {
|
|
315
|
+
t2 = held !== void 0 ? {
|
|
316
|
+
height: held,
|
|
317
|
+
...extra?.style
|
|
318
|
+
} : extra?.style;
|
|
319
|
+
$[3] = extra?.style;
|
|
320
|
+
$[4] = held;
|
|
321
|
+
$[5] = t2;
|
|
322
|
+
} else t2 = $[5];
|
|
323
|
+
const t3 = virtual ? index + 2 : void 0;
|
|
324
|
+
let t4;
|
|
325
|
+
if ($[6] !== id || $[7] !== table) {
|
|
326
|
+
t4 = table.isSelected(id) || void 0;
|
|
327
|
+
$[6] = id;
|
|
328
|
+
$[7] = table;
|
|
329
|
+
$[8] = t4;
|
|
330
|
+
} else t4 = $[8];
|
|
331
|
+
const t5 = onRowClick ? "" : void 0;
|
|
332
|
+
const t6 = editing ? "" : void 0;
|
|
333
|
+
let t7;
|
|
334
|
+
if ($[9] !== row || $[10] !== table) {
|
|
335
|
+
t7 = table.rowTone?.(row) ?? void 0;
|
|
336
|
+
$[9] = row;
|
|
337
|
+
$[10] = table;
|
|
338
|
+
$[11] = t7;
|
|
339
|
+
} else t7 = $[11];
|
|
340
|
+
const t8 = onRowClick ? 0 : extra?.tabIndex;
|
|
341
|
+
let t9;
|
|
342
|
+
if ($[12] !== extra || $[13] !== onRowClick || $[14] !== row || $[15] !== table) {
|
|
343
|
+
t9 = onRowClick ? table.rowLabel?.(row) : extra?.["aria-label"];
|
|
344
|
+
$[12] = extra;
|
|
345
|
+
$[13] = onRowClick;
|
|
346
|
+
$[14] = row;
|
|
347
|
+
$[15] = table;
|
|
348
|
+
$[16] = t9;
|
|
349
|
+
} else t9 = $[16];
|
|
350
|
+
let t10;
|
|
351
|
+
if ($[17] !== extra || $[18] !== onRowClick || $[19] !== row) {
|
|
352
|
+
t10 = (event) => {
|
|
353
|
+
extra?.onClick?.(event);
|
|
354
|
+
if (!onRowClick || event.ctrlKey || event.metaKey) return;
|
|
355
|
+
if (event.target.closest(INTERACTIVE)) return;
|
|
356
|
+
onRowClick(row);
|
|
357
|
+
};
|
|
358
|
+
$[17] = extra;
|
|
359
|
+
$[18] = onRowClick;
|
|
360
|
+
$[19] = row;
|
|
361
|
+
$[20] = t10;
|
|
362
|
+
} else t10 = $[20];
|
|
363
|
+
let t11;
|
|
364
|
+
if ($[21] !== editing || $[22] !== extra || $[23] !== onRowClick || $[24] !== row || $[25] !== table) {
|
|
365
|
+
t11 = (event_0) => {
|
|
366
|
+
extra?.onKeyDown?.(event_0);
|
|
367
|
+
if (onRowClick && event_0.target === event_0.currentTarget && event_0.key === "Enter") onRowClick(row);
|
|
368
|
+
if (!editing || !event_0.currentTarget.contains(event_0.target)) return;
|
|
369
|
+
if (event_0.key === "Escape") table.cancelEdit();
|
|
370
|
+
if (event_0.key === "Enter" && event_0.target.tagName === "INPUT") table.saveEdit();
|
|
371
|
+
};
|
|
372
|
+
$[21] = editing;
|
|
373
|
+
$[22] = extra;
|
|
374
|
+
$[23] = onRowClick;
|
|
375
|
+
$[24] = row;
|
|
376
|
+
$[25] = table;
|
|
377
|
+
$[26] = t11;
|
|
378
|
+
} else t11 = $[26];
|
|
379
|
+
let t12;
|
|
380
|
+
if ($[27] !== id || $[28] !== row || $[29] !== table) {
|
|
381
|
+
t12 = table.selectable && /* @__PURE__ */ jsx(TableCell, {
|
|
382
|
+
className: "oui-data-table__check",
|
|
383
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
384
|
+
size: "sm",
|
|
385
|
+
"aria-label": table.labels.selectRow(table.rowLabel?.(row) ?? id),
|
|
386
|
+
checked: table.isSelected(id),
|
|
387
|
+
onCheckedChange: (checked) => table.toggleRow(id, checked)
|
|
388
|
+
})
|
|
389
|
+
});
|
|
390
|
+
$[27] = id;
|
|
391
|
+
$[28] = row;
|
|
392
|
+
$[29] = table;
|
|
393
|
+
$[30] = t12;
|
|
394
|
+
} else t12 = $[30];
|
|
395
|
+
let t13;
|
|
396
|
+
if ($[31] !== columns || $[32] !== editing || $[33] !== focused || $[34] !== row || $[35] !== table || $[36] !== virtual) {
|
|
397
|
+
let t14;
|
|
398
|
+
if ($[38] !== editing || $[39] !== focused || $[40] !== row || $[41] !== table || $[42] !== virtual) {
|
|
399
|
+
t14 = (column) => {
|
|
400
|
+
const edit = editing ? editOf(column) : null;
|
|
401
|
+
const className = typeof column.cellClassName === "function" ? column.cellClassName(row) : column.cellClassName;
|
|
402
|
+
const value = getColumnValue(column, row);
|
|
403
|
+
const title = (column.truncate || virtual) && !edit && (typeof value === "string" || typeof value === "number");
|
|
404
|
+
return /* @__PURE__ */ jsx(TableCell, {
|
|
405
|
+
align: column.align,
|
|
406
|
+
numeric: column.numeric,
|
|
407
|
+
className,
|
|
408
|
+
title: title ? String(value) : void 0,
|
|
409
|
+
"data-mono": column.mono || void 0,
|
|
410
|
+
"data-muted": column.muted || void 0,
|
|
411
|
+
"data-truncate": column.truncate && !edit || void 0,
|
|
412
|
+
"data-editor": edit ? "" : void 0,
|
|
413
|
+
children: edit ? /* @__PURE__ */ jsx(Editor, {
|
|
414
|
+
table,
|
|
415
|
+
column,
|
|
416
|
+
edit,
|
|
417
|
+
row,
|
|
418
|
+
autoFocus: column.id === focused
|
|
419
|
+
}) : cellContent(column, row)
|
|
420
|
+
}, column.id);
|
|
421
|
+
};
|
|
422
|
+
$[38] = editing;
|
|
423
|
+
$[39] = focused;
|
|
424
|
+
$[40] = row;
|
|
425
|
+
$[41] = table;
|
|
426
|
+
$[42] = virtual;
|
|
427
|
+
$[43] = t14;
|
|
428
|
+
} else t14 = $[43];
|
|
429
|
+
t13 = columns.map(t14);
|
|
430
|
+
$[31] = columns;
|
|
431
|
+
$[32] = editing;
|
|
432
|
+
$[33] = focused;
|
|
433
|
+
$[34] = row;
|
|
434
|
+
$[35] = table;
|
|
435
|
+
$[36] = virtual;
|
|
436
|
+
$[37] = t13;
|
|
437
|
+
} else t13 = $[37];
|
|
438
|
+
let t14;
|
|
439
|
+
if ($[44] !== entry || $[45] !== hasActions || $[46] !== table) {
|
|
440
|
+
t14 = hasActions && /* @__PURE__ */ jsx(RowActions, {
|
|
441
|
+
table,
|
|
442
|
+
entry,
|
|
443
|
+
onEdit: (button) => setEditHeight(button.closest("tr")?.getBoundingClientRect().height)
|
|
444
|
+
});
|
|
445
|
+
$[44] = entry;
|
|
446
|
+
$[45] = hasActions;
|
|
447
|
+
$[46] = table;
|
|
448
|
+
$[47] = t14;
|
|
449
|
+
} else t14 = $[47];
|
|
450
|
+
let t15;
|
|
451
|
+
if ($[48] !== extra || $[49] !== t10 || $[50] !== t11 || $[51] !== t12 || $[52] !== t13 || $[53] !== t14 || $[54] !== t2 || $[55] !== t3 || $[56] !== t4 || $[57] !== t5 || $[58] !== t6 || $[59] !== t7 || $[60] !== t8 || $[61] !== t9) {
|
|
452
|
+
t15 = /* @__PURE__ */ jsxs(TableRow, {
|
|
453
|
+
...extra,
|
|
454
|
+
style: t2,
|
|
455
|
+
"aria-rowindex": t3,
|
|
456
|
+
"data-selected": t4,
|
|
457
|
+
"data-clickable": t5,
|
|
458
|
+
"data-editing": t6,
|
|
459
|
+
"data-tone": t7,
|
|
460
|
+
tabIndex: t8,
|
|
461
|
+
"aria-label": t9,
|
|
462
|
+
onClick: t10,
|
|
463
|
+
onKeyDown: t11,
|
|
464
|
+
children: [
|
|
465
|
+
t12,
|
|
466
|
+
t13,
|
|
467
|
+
t14
|
|
468
|
+
]
|
|
469
|
+
});
|
|
470
|
+
$[48] = extra;
|
|
471
|
+
$[49] = t10;
|
|
472
|
+
$[50] = t11;
|
|
473
|
+
$[51] = t12;
|
|
474
|
+
$[52] = t13;
|
|
475
|
+
$[53] = t14;
|
|
476
|
+
$[54] = t2;
|
|
477
|
+
$[55] = t3;
|
|
478
|
+
$[56] = t4;
|
|
479
|
+
$[57] = t5;
|
|
480
|
+
$[58] = t6;
|
|
481
|
+
$[59] = t7;
|
|
482
|
+
$[60] = t8;
|
|
483
|
+
$[61] = t9;
|
|
484
|
+
$[62] = t15;
|
|
485
|
+
} else t15 = $[62];
|
|
486
|
+
return t15;
|
|
487
|
+
}
|
|
488
|
+
var DataTableRow = React.memo(Row);
|
|
489
|
+
/**
|
|
490
|
+
* A row that only gives its columns their width: what the cells would show, at
|
|
491
|
+
* no height. Rendered while the column widths are measured, never painted.
|
|
492
|
+
*/
|
|
493
|
+
function SizerRow(t0) {
|
|
494
|
+
const $ = c(15);
|
|
495
|
+
const { table, entry, columns, hasActions } = t0;
|
|
496
|
+
let t1;
|
|
497
|
+
if ($[0] !== table.selectable) {
|
|
498
|
+
t1 = table.selectable && /* @__PURE__ */ jsx(TableCell, { className: "oui-data-table__check" });
|
|
499
|
+
$[0] = table.selectable;
|
|
500
|
+
$[1] = t1;
|
|
501
|
+
} else t1 = $[1];
|
|
502
|
+
let t2;
|
|
503
|
+
if ($[2] !== columns || $[3] !== entry) {
|
|
504
|
+
let t3;
|
|
505
|
+
if ($[5] !== entry) {
|
|
506
|
+
t3 = (column) => /* @__PURE__ */ jsx(TableCell, {
|
|
507
|
+
align: column.align,
|
|
508
|
+
numeric: column.numeric,
|
|
509
|
+
"data-mono": column.mono || void 0,
|
|
510
|
+
"data-truncate": column.truncate || void 0,
|
|
511
|
+
children: !column.truncate && /* @__PURE__ */ jsx("div", {
|
|
512
|
+
className: "oui-data-table__sizer-content",
|
|
513
|
+
children: cellContent(column, entry.row)
|
|
514
|
+
})
|
|
515
|
+
}, column.id);
|
|
516
|
+
$[5] = entry;
|
|
517
|
+
$[6] = t3;
|
|
518
|
+
} else t3 = $[6];
|
|
519
|
+
t2 = columns.map(t3);
|
|
520
|
+
$[2] = columns;
|
|
521
|
+
$[3] = entry;
|
|
522
|
+
$[4] = t2;
|
|
523
|
+
} else t2 = $[4];
|
|
524
|
+
let t3;
|
|
525
|
+
if ($[7] !== entry || $[8] !== hasActions || $[9] !== table) {
|
|
526
|
+
t3 = hasActions && /* @__PURE__ */ jsx(RowActions, {
|
|
527
|
+
table,
|
|
528
|
+
entry
|
|
529
|
+
});
|
|
530
|
+
$[7] = entry;
|
|
531
|
+
$[8] = hasActions;
|
|
532
|
+
$[9] = table;
|
|
533
|
+
$[10] = t3;
|
|
534
|
+
} else t3 = $[10];
|
|
535
|
+
let t4;
|
|
536
|
+
if ($[11] !== t1 || $[12] !== t2 || $[13] !== t3) {
|
|
537
|
+
t4 = /* @__PURE__ */ jsxs(TableRow, { children: [
|
|
538
|
+
t1,
|
|
539
|
+
t2,
|
|
540
|
+
t3
|
|
541
|
+
] });
|
|
542
|
+
$[11] = t1;
|
|
543
|
+
$[12] = t2;
|
|
544
|
+
$[13] = t3;
|
|
545
|
+
$[14] = t4;
|
|
546
|
+
} else t4 = $[14];
|
|
547
|
+
return t4;
|
|
548
|
+
}
|
|
549
|
+
//#endregion
|
|
550
|
+
export { DataTableRow, RowActions, SizerRow, cellContent, isTextEditor };
|
|
551
|
+
|
|
552
|
+
//# sourceMappingURL=DataTableRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableRow.js","names":["React","CheckIcon","PencilIcon","TrashIcon","XIcon","IconButton","IconButtonProps","Checkbox","Input","Select","TableCell","TableRow","Tooltip","getColumnValue","DataTableColumn","DataTableColumnEdit","DataTableEntry","DataTableInstance","DataTableRowAction","INTERACTIVE","isEmpty","value","undefined","labelOf","column","T","label","header","id","ResolvedEdit","Omit","field","editOf","edit","config","type","isTextEditor","render","isAction","item","isValidElement","cellContent","row","ReactNode","cell","String","ActionButtonProps","icon","danger","ActionButton","t0","$","_c","props","t1","t2","t3","EditorProps","table","autoFocus","Editor","Symbol","for","bb0","editValue","next","setEditValue","setValue","disabled","saving","t4","Boolean","t5","options","t6","inputProps","RowActionsProps","entry","onEdit","button","HTMLElement","RowActions","text","labels","editing","editingId","T0","actions","rowActions","slots","editable","deletable","minWidth","save","saveEdit","delete","deleteRow","cancel","cancelEdit","Array","isArray","map","_temp","event","currentTarget","startEdit","t7","index","onClick","DataTableRowProps","columns","hasActions","focused","height","Row","virtual","editHeight","setEditHeight","useState","onRowClick","rowProps","extra","held","style","isSelected","rowTone","t8","tabIndex","t9","rowLabel","t10","ctrlKey","metaKey","target","closest","t11","event_0","onKeyDown","key","contains","Node","tagName","t12","selectable","selectRow","checked","toggleRow","t13","t14","className","cellClassName","title","truncate","align","numeric","mono","muted","getBoundingClientRect","t15","DataTableRow","memo","SizerRow","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTableRow.tsx"],"sourcesContent":["import * as React from 'react';\nimport { CheckIcon, PencilIcon, TrashIcon, XIcon } from '../../icons';\nimport { IconButton, type IconButtonProps } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { Input } from '../input/Input';\nimport { Select } from '../select/Select';\nimport { TableCell, TableRow } from '../table/Table';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { getColumnValue } from './useDataTable';\nimport type { DataTableColumn, DataTableColumnEdit, DataTableEntry, DataTableInstance, DataTableRowAction } from './types';\n\nconst INTERACTIVE = 'a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"], [role=\"combobox\"]';\n\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction labelOf<T>(column: DataTableColumn<T>) {\n return column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n}\n\ntype ResolvedEdit<T> = Omit<DataTableColumnEdit<T>, 'field'> & { field: string };\n\nfunction editOf<T>(column: DataTableColumn<T>): ResolvedEdit<T> | null {\n if (!column.edit) return null;\n const config = typeof column.edit === 'string' ? { type: column.edit } : column.edit;\n return { ...config, field: config.field ?? column.id };\n}\n\n/** Whether the column's editor is the built-in text input, which takes the focus when editing starts. */\nexport function isTextEditor<T>(column: DataTableColumn<T>) {\n const edit = editOf(column);\n return edit !== null && !edit.render && (edit.type ?? 'text') === 'text';\n}\n\nfunction isAction(item: unknown): item is DataTableRowAction {\n return typeof item === 'object' && item !== null && !React.isValidElement(item) && 'label' in item && 'icon' in item;\n}\n\n/** What a cell shows outside editing: the column's `cell`, or its value as text. */\nexport function cellContent<T>(column: DataTableColumn<T>, row: T): React.ReactNode {\n if (column.cell) return column.cell(row);\n const value = getColumnValue(column, row);\n if (React.isValidElement(value)) return value;\n return isEmpty(value) ? '—' : String(value);\n}\n\ninterface ActionButtonProps extends Omit<IconButtonProps, 'aria-label' | 'children'> {\n label: string;\n icon: React.ReactNode;\n danger?: boolean;\n}\n\nfunction ActionButton({ label, icon, danger, ...props }: ActionButtonProps) {\n return (\n <Tooltip content={label}>\n <IconButton size=\"sm\" className=\"oui-data-table__action\" aria-label={label} data-danger={danger ? '' : undefined} {...props}>\n {icon}\n </IconButton>\n </Tooltip>\n );\n}\n\ninterface EditorProps<T> {\n table: DataTableInstance<T>;\n column: DataTableColumn<T>;\n edit: ResolvedEdit<T>;\n row: T;\n autoFocus: boolean;\n}\n\nfunction Editor<T>({ table, column, edit, row, autoFocus }: EditorProps<T>) {\n const value = table.editValue(row, edit.field);\n const setValue = (next: unknown) => table.setEditValue(edit.field, next);\n const disabled = table.saving;\n const label = labelOf(column);\n\n if (edit.render) return edit.render({ row, value, setValue, disabled });\n if (edit.type === 'checkbox') {\n return <Checkbox size=\"sm\" aria-label={label} checked={Boolean(value)} disabled={disabled} onCheckedChange={setValue} />;\n }\n if (edit.type === 'select') {\n return (\n <Select\n size=\"sm\"\n items={edit.options ?? []}\n value={isEmpty(value) ? null : String(value)}\n onValueChange={setValue}\n disabled={disabled}\n triggerProps={{ 'aria-label': label }}\n />\n );\n }\n return (\n <Input\n size=\"sm\"\n aria-label={label}\n autoFocus={autoFocus}\n disabled={disabled}\n {...edit.inputProps}\n value={isEmpty(value) ? '' : String(value)}\n onValueChange={setValue}\n />\n );\n}\n\ninterface RowActionsProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n /** Called with the edit button before editing starts. */\n onEdit?: (button: HTMLElement) => void;\n}\n\n/** Trailing cell of a row: its own actions, then edit and delete; save and cancel while it is edited. */\nexport function RowActions<T>({ table, entry: { row, id }, onEdit }: RowActionsProps<T>) {\n const text = table.labels;\n const editing = table.editingId === id;\n const actions = table.rowActions?.(row);\n // Room for the buttons of the edited state from the start, so entering it does not widen the column.\n const slots = table.editable ? (table.deletable ? 3 : 2) : 0;\n return (\n <TableCell className=\"oui-data-table__row-actions\">\n <div\n className=\"oui-data-table__row-actions-list\"\n style={slots ? { minWidth: `calc(${slots} * var(--oui-control-height-sm) + ${(slots - 1) * 0.125}rem)` } : undefined}\n >\n {editing ? (\n <>\n <ActionButton label={text.save} icon={<CheckIcon />} loading={table.saving} onClick={table.saveEdit} />\n {table.deletable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger disabled={table.saving} onClick={() => table.deleteRow(row)} />\n )}\n <ActionButton label={text.cancel} icon={<XIcon />} disabled={table.saving} onClick={table.cancelEdit} />\n </>\n ) : (\n <>\n {(Array.isArray(actions) ? actions : [actions]).map((item, index) =>\n isAction(item) ? (\n <ActionButton\n key={item.label}\n label={item.label}\n icon={item.icon}\n danger={item.danger}\n disabled={item.disabled}\n onClick={item.onClick}\n />\n ) : (\n <React.Fragment key={index}>{item}</React.Fragment>\n ),\n )}\n {table.editable && (\n <ActionButton\n label={text.edit}\n icon={<PencilIcon />}\n disabled={table.saving}\n onClick={(event) => {\n onEdit?.(event.currentTarget);\n table.startEdit(id);\n }}\n />\n )}\n {table.deletable && !table.editable && (\n <ActionButton label={text.delete} icon={<TrashIcon />} danger onClick={() => table.deleteRow(row)} />\n )}\n </>\n )}\n </div>\n </TableCell>\n );\n}\n\nexport interface DataTableRowProps<T> {\n table: DataTableInstance<T>;\n entry: DataTableEntry<T>;\n columns: DataTableColumn<T>[];\n hasActions: boolean;\n /** Id of the column whose editor takes the focus when editing starts. */\n focused?: string;\n /** Virtualized tables: position among all rows, and the height every row shares. */\n index?: number;\n height?: number;\n}\n\nfunction Row<T>({ table, entry, columns, hasActions, focused, index, height }: DataTableRowProps<T>) {\n const { row, id } = entry;\n const editing = table.editingId === id;\n const virtual = index !== undefined;\n // Height the row had when its editing started: the editors fit inside it, so the rows below stay put.\n const [editHeight, setEditHeight] = React.useState<number>();\n const onRowClick = editing ? undefined : table.onRowClick;\n const extra = table.rowProps?.(row);\n const held = height ?? (editing ? editHeight : undefined);\n\n return (\n <TableRow\n {...extra}\n style={held !== undefined ? { height: held, ...extra?.style } : extra?.style}\n aria-rowindex={virtual ? index + 2 : undefined}\n data-selected={table.isSelected(id) || undefined}\n data-clickable={onRowClick ? '' : undefined}\n data-editing={editing ? '' : undefined}\n data-tone={table.rowTone?.(row) ?? undefined}\n tabIndex={onRowClick ? 0 : extra?.tabIndex}\n aria-label={onRowClick ? table.rowLabel?.(row) : extra?.['aria-label']}\n onClick={(event) => {\n extra?.onClick?.(event);\n if (!onRowClick || event.ctrlKey || event.metaKey) return;\n if ((event.target as HTMLElement).closest(INTERACTIVE)) return;\n onRowClick(row);\n }}\n onKeyDown={(event) => {\n extra?.onKeyDown?.(event);\n if (onRowClick && event.target === event.currentTarget && event.key === 'Enter') onRowClick(row);\n // Popups of the editors are portalled out of the row: their keys are not the row's.\n if (!editing || !event.currentTarget.contains(event.target as Node)) return;\n if (event.key === 'Escape') table.cancelEdit();\n if (event.key === 'Enter' && (event.target as HTMLElement).tagName === 'INPUT') table.saveEdit();\n }}\n >\n {table.selectable && (\n <TableCell className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={table.labels.selectRow(table.rowLabel?.(row) ?? id)}\n checked={table.isSelected(id)}\n onCheckedChange={(checked) => table.toggleRow(id, checked)}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const edit = editing ? editOf(column) : null;\n const className = typeof column.cellClassName === 'function' ? column.cellClassName(row) : column.cellClassName;\n const value = getColumnValue(column, row);\n // Cut text can still be read in full by pointing at it.\n const title = (column.truncate || virtual) && !edit && (typeof value === 'string' || typeof value === 'number');\n return (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n className={className}\n title={title ? String(value) : undefined}\n data-mono={column.mono || undefined}\n data-muted={column.muted || undefined}\n data-truncate={(column.truncate && !edit) || undefined}\n data-editor={edit ? '' : undefined}\n >\n {edit ? (\n <Editor table={table} column={column} edit={edit} row={row} autoFocus={column.id === focused} />\n ) : (\n cellContent(column, row)\n )}\n </TableCell>\n );\n })}\n {hasActions && (\n <RowActions\n table={table}\n entry={entry}\n onEdit={(button) => setEditHeight(button.closest('tr')?.getBoundingClientRect().height)}\n />\n )}\n </TableRow>\n );\n}\n\n// Memoized by hand: scrolling a virtualized table renders its content on every\n// step, and the rows that stay in view have nothing new to show.\nexport const DataTableRow = React.memo(Row) as typeof Row;\n\n/**\n * A row that only gives its columns their width: what the cells would show, at\n * no height. Rendered while the column widths are measured, never painted.\n */\nexport function SizerRow<T>({ table, entry, columns, hasActions }: DataTableRowProps<T>) {\n return (\n <TableRow>\n {table.selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column) => (\n <TableCell\n key={column.id}\n align={column.align}\n numeric={column.numeric}\n data-mono={column.mono || undefined}\n data-truncate={column.truncate || undefined}\n >\n {!column.truncate && <div className=\"oui-data-table__sizer-content\">{cellContent(column, entry.row)}</div>}\n </TableCell>\n ))}\n {hasActions && <RowActions table={table} entry={entry} />}\n </TableRow>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { DataTableInstance } from './types';
|
|
3
|
+
export declare const DataTableContext: React.Context<DataTableInstance<any> | null>;
|
|
4
|
+
/** The table of the surrounding `DataTable.Root`, for building custom parts. */
|
|
5
|
+
export declare function useDataTableContext<T = unknown>(): DataTableInstance<T>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/components/data-table/context.ts
|
|
4
|
+
var DataTableContext = React.createContext(null);
|
|
5
|
+
/** The table of the surrounding `DataTable.Root`, for building custom parts. */
|
|
6
|
+
function useDataTableContext() {
|
|
7
|
+
const table = React.useContext(DataTableContext);
|
|
8
|
+
if (!table) throw new Error("DataTable parts must be rendered inside <DataTable.Root>.");
|
|
9
|
+
return table;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { DataTableContext, useDataTableContext };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":["React","DataTableInstance","DataTableContext","createContext","useDataTableContext","table","useContext","Error"],"sources":["../../../src/components/data-table/context.ts"],"sourcesContent":["import * as React from 'react';\nimport type { DataTableInstance } from './types';\n\n// The parts never look inside a row: they hand it back to the column callbacks.\nexport const DataTableContext = React.createContext<DataTableInstance<any> | null>(null);\n\n/** The table of the surrounding `DataTable.Root`, for building custom parts. */\nexport function useDataTableContext<T = unknown>(): DataTableInstance<T> {\n const table = React.useContext(DataTableContext);\n if (!table) throw new Error('DataTable parts must be rendered inside <DataTable.Root>.');\n return table;\n}\n"],"mappings":";;;AAIA,IAAaE,mBAAmBF,MAAMG,cAA6C,IAAI;;AAGvF,SAAOC,sBAAA;CACL,MAAAC,QAAcL,MAAKM,WAAYJ,gBAAgB;CAC/C,IAAI,CAACG,OAAO,MAAM,IAAIE,MAAM,2DAA2D;CAAE,OAClFF;AAAK"}
|