@dxos/react-ui-table 0.3.9-main.5d43cb5 → 0.3.9-main.604ae36
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/lib/browser/index.mjs +140 -133
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/Cell/CellCombobox.d.ts.map +1 -1
- package/dist/types/src/components/ColumnMenu.d.ts.map +1 -1
- package/dist/types/src/components/Table/props.d.ts +1 -0
- package/dist/types/src/components/Table/props.d.ts.map +1 -1
- package/dist/types/src/helpers.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/schema.d.ts +0 -1
- package/dist/types/src/schema.d.ts.map +1 -1
- package/dist/types/src/theme.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +11 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/components/Cell/CellCombobox.tsx +4 -1
- package/src/components/ColumnMenu.tsx +16 -16
- package/src/components/Table/props.ts +1 -0
- package/src/helpers.tsx +67 -54
- package/src/index.ts +1 -0
- package/src/schema.ts +0 -8
- package/src/theme.ts +2 -2
- package/src/translations.ts +11 -0
|
@@ -1,45 +1,42 @@
|
|
|
1
1
|
// packages/ui/react-ui-table/src/components/ColumnMenu.tsx
|
|
2
2
|
import { Check, CaretDown, Trash, X } from "@phosphor-icons/react";
|
|
3
3
|
import React, { useRef, useState } from "react";
|
|
4
|
-
import { Button, DensityProvider, Input, Popover, Select, Separator } from "@dxos/react-ui";
|
|
4
|
+
import { Button, DensityProvider, Input, Popover, Select, Separator, useTranslation } from "@dxos/react-ui";
|
|
5
5
|
import { getSize, mx } from "@dxos/react-ui-theme";
|
|
6
6
|
import { safeParseInt } from "@dxos/util";
|
|
7
7
|
|
|
8
|
-
// packages/ui/react-ui-table/src/
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
]);
|
|
8
|
+
// packages/ui/react-ui-table/src/translations.ts
|
|
9
|
+
var translationKey = "table";
|
|
10
|
+
var translations_default = [
|
|
11
|
+
{
|
|
12
|
+
"en-US": {
|
|
13
|
+
[translationKey]: {
|
|
14
|
+
"no selection label": "\xA0",
|
|
15
|
+
"number column type label": "Number",
|
|
16
|
+
"boolean column type label": "Toggle",
|
|
17
|
+
"date column type label": "Date",
|
|
18
|
+
"string column type label": "Text",
|
|
19
|
+
"ref column type label": "Reference",
|
|
20
|
+
"digits label": "Decimal places",
|
|
21
|
+
"save label": "Save",
|
|
22
|
+
"delete label": "Delete",
|
|
23
|
+
"column label label": "Label",
|
|
24
|
+
"property key label": "Property",
|
|
25
|
+
"column type label": "Type"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
];
|
|
31
30
|
|
|
32
31
|
// packages/ui/react-ui-table/src/components/ColumnMenu.tsx
|
|
33
32
|
var ColumnMenu = ({ column, ...props }) => {
|
|
34
33
|
const title = column.label?.length ? column.label : column.id;
|
|
35
34
|
return /* @__PURE__ */ React.createElement("div", {
|
|
36
|
-
className: "flex
|
|
35
|
+
className: "flex items-center gap-2"
|
|
37
36
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
38
|
-
className: "truncate",
|
|
37
|
+
className: "flex-1 min-is-0 truncate",
|
|
39
38
|
title
|
|
40
39
|
}, title), /* @__PURE__ */ React.createElement("div", {
|
|
41
|
-
className: "grow"
|
|
42
|
-
}), /* @__PURE__ */ React.createElement("div", {
|
|
43
40
|
className: "flex shrink-0"
|
|
44
41
|
}, /* @__PURE__ */ React.createElement(ColumnPanel, {
|
|
45
42
|
...props,
|
|
@@ -59,6 +56,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
59
56
|
const [label, setLabel] = useState(column.label);
|
|
60
57
|
const [digits, setDigits] = useState(String(column.digits ?? "0"));
|
|
61
58
|
const propRef = useRef(null);
|
|
59
|
+
const { t } = useTranslation(translationKey);
|
|
62
60
|
const handleCancel = () => {
|
|
63
61
|
setProp(column.id);
|
|
64
62
|
setOpen(false);
|
|
@@ -93,7 +91,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
93
91
|
asChild: true
|
|
94
92
|
}, /* @__PURE__ */ React.createElement(Button, {
|
|
95
93
|
variant: "ghost",
|
|
96
|
-
classNames: "p-
|
|
94
|
+
classNames: "p-1"
|
|
97
95
|
}, /* @__PURE__ */ React.createElement(CaretDown, {
|
|
98
96
|
className: getSize(4)
|
|
99
97
|
}))), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, null, /* @__PURE__ */ React.createElement(Popover.Viewport, {
|
|
@@ -104,14 +102,14 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
104
102
|
className: "flex flex-col gap-1"
|
|
105
103
|
}, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
106
104
|
classNames: "mbe-1"
|
|
107
|
-
}, "
|
|
105
|
+
}, t("column label label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
108
106
|
placeholder: "Column label",
|
|
109
107
|
value: label ?? "",
|
|
110
108
|
onChange: (event) => setLabel(event.target.value),
|
|
111
109
|
autoFocus: true
|
|
112
110
|
})), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
113
111
|
classNames: "mbe-1 mbs-3"
|
|
114
|
-
}, "
|
|
112
|
+
}, t("property key label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
115
113
|
ref: propRef,
|
|
116
114
|
placeholder: "Property key",
|
|
117
115
|
// TODO(burdon): Provide hooks for value normalization, ENTER, ESC, etc.
|
|
@@ -119,18 +117,23 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
119
117
|
onChange: (event) => setProp(event.target.value.replace(/[^\w_]/g, ""))
|
|
120
118
|
})), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
121
119
|
classNames: "mbe-1 mbs-3"
|
|
122
|
-
}, "
|
|
120
|
+
}, t("column type label")), /* @__PURE__ */ React.createElement(Select.Root, {
|
|
123
121
|
value: type,
|
|
124
122
|
onValueChange: setType
|
|
125
123
|
}, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
|
|
126
124
|
placeholder: "Type",
|
|
127
125
|
classNames: "is-full"
|
|
128
|
-
}), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null,
|
|
126
|
+
}), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, [
|
|
127
|
+
"number",
|
|
128
|
+
"boolean",
|
|
129
|
+
"string",
|
|
130
|
+
"ref"
|
|
131
|
+
].map((type2) => /* @__PURE__ */ React.createElement(Select.Option, {
|
|
129
132
|
key: type2,
|
|
130
133
|
value: type2
|
|
131
|
-
},
|
|
134
|
+
}, t(`${type2} column type label`))))))))), type === "number" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
132
135
|
classNames: "mbe-1 mbs-3"
|
|
133
|
-
}, "
|
|
136
|
+
}, t("digits label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
134
137
|
value: digits ?? "",
|
|
135
138
|
onChange: (event) => setDigits(event.target.value)
|
|
136
139
|
})))), type === "ref" && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Section, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
@@ -141,7 +144,7 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
141
144
|
}, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
|
|
142
145
|
placeholder: "Table",
|
|
143
146
|
classNames: "is-full"
|
|
144
|
-
}), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, tableDefs.filter((
|
|
147
|
+
}), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, tableDefs.filter((t2) => t2.id !== tableDef.id).map(({ id, name }) => /* @__PURE__ */ React.createElement(Select.Option, {
|
|
145
148
|
key: id,
|
|
146
149
|
value: id
|
|
147
150
|
}, name ?? id))))))), refTable && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
@@ -163,21 +166,23 @@ var ColumnPanel = ({ context, tableDefs, tableDef, column, onUpdate, onDelete })
|
|
|
163
166
|
variant: "primary",
|
|
164
167
|
classNames: "is-full flex gap-2",
|
|
165
168
|
onClick: handleSave
|
|
166
|
-
}, /* @__PURE__ */ React.createElement("span", null, "
|
|
169
|
+
}, /* @__PURE__ */ React.createElement("span", null, t("save label")), /* @__PURE__ */ React.createElement("div", {
|
|
167
170
|
className: "grow"
|
|
168
171
|
}), /* @__PURE__ */ React.createElement(Check, {
|
|
169
172
|
className: getSize(5)
|
|
170
173
|
})), /* @__PURE__ */ React.createElement(Button, {
|
|
171
174
|
classNames: "is-full flex gap-2",
|
|
172
175
|
onClick: handleCancel
|
|
173
|
-
}, /* @__PURE__ */ React.createElement("span", null, "
|
|
176
|
+
}, /* @__PURE__ */ React.createElement("span", null, t("cancel label", {
|
|
177
|
+
ns: "os"
|
|
178
|
+
})), /* @__PURE__ */ React.createElement("div", {
|
|
174
179
|
className: "grow"
|
|
175
180
|
}), /* @__PURE__ */ React.createElement(X, {
|
|
176
181
|
className: getSize(5)
|
|
177
182
|
})), /* @__PURE__ */ React.createElement(Button, {
|
|
178
183
|
classNames: "is-full flex gap-2",
|
|
179
184
|
onClick: () => onDelete?.(column.id)
|
|
180
|
-
}, /* @__PURE__ */ React.createElement("span", null, "
|
|
185
|
+
}, /* @__PURE__ */ React.createElement("span", null, t("delete label")), /* @__PURE__ */ React.createElement("div", {
|
|
181
186
|
className: "grow"
|
|
182
187
|
}), /* @__PURE__ */ React.createElement(Trash, {
|
|
183
188
|
className: getSize(5)
|
|
@@ -211,7 +216,7 @@ var headPadding = "pli-2 plb-1.5";
|
|
|
211
216
|
var gridCellFocusRing = "focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400";
|
|
212
217
|
var tableRoot = ({ fullWidth }, ...etc) => mx2("table-fixed", fullWidth && "is-full", ...etc);
|
|
213
218
|
var groupTh = (_props, ...etc) => mx2("text-start font-medium", flushPadding, ...etc);
|
|
214
|
-
var theadRoot = ({ header }, ...etc) => mx2(header ? "sticky block-start-
|
|
219
|
+
var theadRoot = ({ header, stickyHeader }, ...etc) => mx2(header ? stickyHeader && "sticky block-start-[--sticky-top] z-[1]" : "collapse", header && fixedSurface, ...etc);
|
|
215
220
|
var theadTr = (_props, ...etc) => mx2("group", ...etc);
|
|
216
221
|
var theadTh = ({ border }, ...etc) => mx2("relative text-start font-medium select-none truncate", headPadding, border && "border", border && groupBorder, ...etc);
|
|
217
222
|
var theadResizeRoot = (_props, ...etc) => mx2("absolute top-0 pis-1 h-full z-[10] w-[7px] -right-[5px] cursor-col-resize select-none touch-none opacity-20 hover:opacity-100", ...etc);
|
|
@@ -488,23 +493,9 @@ var Table = (props) => {
|
|
|
488
493
|
// packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx
|
|
489
494
|
import { CaretDown as CaretDown2 } from "@phosphor-icons/react";
|
|
490
495
|
import React7, { useCallback as useCallback2, useState as useState3 } from "react";
|
|
491
|
-
import { Popover as Popover2, useTranslation } from "@dxos/react-ui";
|
|
496
|
+
import { Popover as Popover2, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
492
497
|
import { PopoverCombobox } from "@dxos/react-ui-searchlist";
|
|
493
498
|
import { descriptionText, getSize as getSize2, mx as mx4, staticPlaceholderText } from "@dxos/react-ui-theme";
|
|
494
|
-
|
|
495
|
-
// packages/ui/react-ui-table/src/translations.ts
|
|
496
|
-
var translationKey = "table";
|
|
497
|
-
var translations_default = [
|
|
498
|
-
{
|
|
499
|
-
"en-US": {
|
|
500
|
-
[translationKey]: {
|
|
501
|
-
"no selection label": "\xA0"
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
];
|
|
506
|
-
|
|
507
|
-
// packages/ui/react-ui-table/src/components/Cell/CellCombobox.tsx
|
|
508
499
|
var initialItems = (model, value) => value ? {
|
|
509
500
|
[model.getId(value)]: {
|
|
510
501
|
label: model.getText(value),
|
|
@@ -512,7 +503,7 @@ var initialItems = (model, value) => value ? {
|
|
|
512
503
|
}
|
|
513
504
|
} : {};
|
|
514
505
|
var CellCombobox = ({ model, value, onValueChange }) => {
|
|
515
|
-
const { t } =
|
|
506
|
+
const { t } = useTranslation2(translationKey);
|
|
516
507
|
const [items, setItems] = useState3(initialItems(model, value));
|
|
517
508
|
const [loading, setLoading] = useState3(false);
|
|
518
509
|
const [searchInputValue, setSearchInputValue] = useState3("");
|
|
@@ -541,7 +532,7 @@ var CellCombobox = ({ model, value, onValueChange }) => {
|
|
|
541
532
|
variant: "ghost",
|
|
542
533
|
classNames: "is-full rounded-none ring-inset"
|
|
543
534
|
}, value ? /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("span", {
|
|
544
|
-
className: mx4("font-normal text-start flex-1 min-is-0 truncate mie-2", !value && staticPlaceholderText)
|
|
535
|
+
className: mx4("font-normal text-start text-base flex-1 min-is-0 truncate mie-2", !value && staticPlaceholderText)
|
|
545
536
|
}, model.getText(value)), /* @__PURE__ */ React7.createElement(CaretDown2, {
|
|
546
537
|
weight: "bold",
|
|
547
538
|
className: getSize2(3)
|
|
@@ -569,11 +560,12 @@ var CellCombobox = ({ model, value, onValueChange }) => {
|
|
|
569
560
|
};
|
|
570
561
|
|
|
571
562
|
// packages/ui/react-ui-table/src/helpers.tsx
|
|
563
|
+
import { useFocusFinders } from "@fluentui/react-tabster";
|
|
572
564
|
import { Check as Check2, ClipboardText, X as X2 } from "@phosphor-icons/react";
|
|
573
565
|
import { createColumnHelper } from "@tanstack/react-table";
|
|
574
566
|
import format from "date-fns/format";
|
|
575
567
|
import formatDistanceToNow from "date-fns/formatDistanceToNow";
|
|
576
|
-
import React8, { useRef as useRef2, useState as useState4 } from "react";
|
|
568
|
+
import React8, { useEffect as useEffect2, useRef as useRef2, useState as useState4 } from "react";
|
|
577
569
|
import { Input as Input2, Tooltip } from "@dxos/react-ui";
|
|
578
570
|
import { getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
|
|
579
571
|
var createColumnBuilder = () => ({
|
|
@@ -619,40 +611,55 @@ var StringBuilderCell = (cellContext) => {
|
|
|
619
611
|
onKeyDown: (event) => event.key === "Enter" && handleSave() || event.key === "Escape" && handleCancel()
|
|
620
612
|
}));
|
|
621
613
|
};
|
|
614
|
+
var parseNumber = (text) => text?.trim().length ? Number(text) : NaN;
|
|
615
|
+
var displayNumber = (value, digits) => value || value === 0 ? value.toLocaleString(void 0, {
|
|
616
|
+
minimumFractionDigits: digits ?? 0,
|
|
617
|
+
maximumFractionDigits: digits ?? 2
|
|
618
|
+
}) : "";
|
|
622
619
|
var NumberBuilderCell = (cellContext) => {
|
|
623
|
-
const { onUpdate,
|
|
620
|
+
const { onUpdate, digits } = cellContext.column.columnDef.meta;
|
|
624
621
|
const value = cellContext.getValue();
|
|
625
|
-
const [text, setText] = useState4();
|
|
622
|
+
const [text, setText] = useState4(displayNumber(value, digits));
|
|
623
|
+
const { findPrevFocusable } = useFocusFinders();
|
|
624
|
+
const ref = useRef2(null);
|
|
625
|
+
useEffect2(() => {
|
|
626
|
+
(!document.activeElement || document.activeElement !== ref.current) && setText(displayNumber(value, digits));
|
|
627
|
+
}, [
|
|
628
|
+
digits,
|
|
629
|
+
value
|
|
630
|
+
]);
|
|
626
631
|
const handleEdit = () => {
|
|
627
632
|
if (onUpdate) {
|
|
628
633
|
setText(value !== void 0 ? String(value) : "");
|
|
629
634
|
}
|
|
630
635
|
};
|
|
631
636
|
const handleSave = () => {
|
|
632
|
-
const
|
|
633
|
-
onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(
|
|
634
|
-
setText(
|
|
637
|
+
const nextValue = parseNumber(text);
|
|
638
|
+
onUpdate?.(cellContext.row.original, cellContext.column.id, isNaN(nextValue) ? void 0 : nextValue);
|
|
639
|
+
setText(displayNumber(nextValue, digits));
|
|
640
|
+
ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();
|
|
635
641
|
};
|
|
636
|
-
const
|
|
637
|
-
setText(
|
|
642
|
+
const _handleCancel = () => {
|
|
643
|
+
setText(displayNumber(value, digits));
|
|
644
|
+
ref.current && findPrevFocusable(ref.current)?.focus();
|
|
638
645
|
};
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
646
|
+
return /* @__PURE__ */ React8.createElement(Input2.Root, null, /* @__PURE__ */ React8.createElement(Input2.TextInput, {
|
|
647
|
+
ref,
|
|
648
|
+
variant: "subdued",
|
|
649
|
+
value: text,
|
|
650
|
+
classNames: [
|
|
651
|
+
"is-full text-end font-mono",
|
|
652
|
+
textPadding
|
|
653
|
+
],
|
|
654
|
+
onBlur: handleSave,
|
|
655
|
+
onFocus: handleEdit,
|
|
656
|
+
onChange: ({ target: { value: value2 } }) => setText(value2),
|
|
657
|
+
onKeyDown: (event) => {
|
|
658
|
+
return (
|
|
659
|
+
/* (event.key === 'Escape' && handleCancel()) || */
|
|
660
|
+
event.key === "Enter" && handleSave()
|
|
661
|
+
);
|
|
662
|
+
}
|
|
656
663
|
}));
|
|
657
664
|
};
|
|
658
665
|
var RowSelectorBuilderCell = (cellContext) => {
|
|
@@ -693,17 +700,7 @@ var ColumnBuilder = class {
|
|
|
693
700
|
*/
|
|
694
701
|
combobox({ label, classNames, model, onUpdate, ...props }) {
|
|
695
702
|
return {
|
|
696
|
-
...props,
|
|
697
703
|
minSize: 100,
|
|
698
|
-
meta: {
|
|
699
|
-
...props.meta,
|
|
700
|
-
model,
|
|
701
|
-
onUpdate,
|
|
702
|
-
cell: {
|
|
703
|
-
classNames,
|
|
704
|
-
...props.meta?.cell
|
|
705
|
-
}
|
|
706
|
-
},
|
|
707
704
|
header: (column) => {
|
|
708
705
|
return label ?? column.header.id;
|
|
709
706
|
},
|
|
@@ -712,6 +709,16 @@ var ColumnBuilder = class {
|
|
|
712
709
|
return /* @__PURE__ */ React8.createElement("div", {
|
|
713
710
|
className: mx5("truncate", classNames)
|
|
714
711
|
}, cellValue ? model?.getText(cellValue) : "");
|
|
712
|
+
},
|
|
713
|
+
...props,
|
|
714
|
+
meta: {
|
|
715
|
+
...props.meta,
|
|
716
|
+
model,
|
|
717
|
+
onUpdate,
|
|
718
|
+
cell: {
|
|
719
|
+
classNames,
|
|
720
|
+
...props.meta?.cell
|
|
721
|
+
}
|
|
715
722
|
}
|
|
716
723
|
};
|
|
717
724
|
}
|
|
@@ -720,16 +727,7 @@ var ColumnBuilder = class {
|
|
|
720
727
|
*/
|
|
721
728
|
string({ label, classNames, onUpdate, ...props } = {}) {
|
|
722
729
|
return {
|
|
723
|
-
...props,
|
|
724
730
|
minSize: 100,
|
|
725
|
-
meta: {
|
|
726
|
-
...props.meta,
|
|
727
|
-
onUpdate,
|
|
728
|
-
cell: {
|
|
729
|
-
...props.meta?.cell,
|
|
730
|
-
classNames
|
|
731
|
-
}
|
|
732
|
-
},
|
|
733
731
|
// TODO(burdon): Default.
|
|
734
732
|
header: (column) => {
|
|
735
733
|
return label ?? column.header.id;
|
|
@@ -739,6 +737,15 @@ var ColumnBuilder = class {
|
|
|
739
737
|
return /* @__PURE__ */ React8.createElement("div", {
|
|
740
738
|
className: mx5("truncate", textPadding, classNames)
|
|
741
739
|
}, value);
|
|
740
|
+
},
|
|
741
|
+
...props,
|
|
742
|
+
meta: {
|
|
743
|
+
...props.meta,
|
|
744
|
+
onUpdate,
|
|
745
|
+
cell: {
|
|
746
|
+
...props.meta?.cell,
|
|
747
|
+
classNames
|
|
748
|
+
}
|
|
742
749
|
}
|
|
743
750
|
};
|
|
744
751
|
}
|
|
@@ -747,9 +754,11 @@ var ColumnBuilder = class {
|
|
|
747
754
|
*/
|
|
748
755
|
number({ label, minSize, classNames, digits, onUpdate, ...props } = {}) {
|
|
749
756
|
return {
|
|
750
|
-
...props,
|
|
751
757
|
size: 100,
|
|
752
758
|
minSize: 100,
|
|
759
|
+
header: (cell) => label ?? cell.header.id,
|
|
760
|
+
cell: NumberBuilderCell,
|
|
761
|
+
...props,
|
|
753
762
|
meta: {
|
|
754
763
|
...props.meta,
|
|
755
764
|
onUpdate,
|
|
@@ -762,9 +771,7 @@ var ColumnBuilder = class {
|
|
|
762
771
|
...props.meta?.cell,
|
|
763
772
|
classNames
|
|
764
773
|
}
|
|
765
|
-
}
|
|
766
|
-
header: (cell) => label ?? cell.header.id,
|
|
767
|
-
cell: NumberBuilderCell
|
|
774
|
+
}
|
|
768
775
|
};
|
|
769
776
|
}
|
|
770
777
|
/**
|
|
@@ -773,16 +780,8 @@ var ColumnBuilder = class {
|
|
|
773
780
|
// TODO(burdon): Date picker (pluggable renderers?)
|
|
774
781
|
date({ label, format: formatSpec, relative, classNames, ...props } = {}) {
|
|
775
782
|
return {
|
|
776
|
-
...props,
|
|
777
783
|
size: 220,
|
|
778
784
|
minSize: 100,
|
|
779
|
-
meta: {
|
|
780
|
-
...props.meta,
|
|
781
|
-
cell: {
|
|
782
|
-
...props.meta?.cell,
|
|
783
|
-
classNames
|
|
784
|
-
}
|
|
785
|
-
},
|
|
786
785
|
header: (cell) => label ?? cell.header.id,
|
|
787
786
|
cell: (cell) => {
|
|
788
787
|
const value = cell.getValue();
|
|
@@ -797,6 +796,14 @@ var ColumnBuilder = class {
|
|
|
797
796
|
console.log(value);
|
|
798
797
|
return null;
|
|
799
798
|
}
|
|
799
|
+
},
|
|
800
|
+
...props,
|
|
801
|
+
meta: {
|
|
802
|
+
...props.meta,
|
|
803
|
+
cell: {
|
|
804
|
+
...props.meta?.cell,
|
|
805
|
+
classNames
|
|
806
|
+
}
|
|
800
807
|
}
|
|
801
808
|
};
|
|
802
809
|
}
|
|
@@ -805,20 +812,8 @@ var ColumnBuilder = class {
|
|
|
805
812
|
*/
|
|
806
813
|
key({ label, tooltip, classNames, ...props } = {}) {
|
|
807
814
|
return {
|
|
808
|
-
...props,
|
|
809
815
|
size: 94,
|
|
810
816
|
minSize: 94,
|
|
811
|
-
meta: {
|
|
812
|
-
...props.meta,
|
|
813
|
-
cell: {
|
|
814
|
-
...props.meta?.cell,
|
|
815
|
-
classNames: [
|
|
816
|
-
"font-mono",
|
|
817
|
-
textPadding,
|
|
818
|
-
classNames
|
|
819
|
-
]
|
|
820
|
-
}
|
|
821
|
-
},
|
|
822
817
|
header: (cell) => label ?? cell.header.id,
|
|
823
818
|
cell: (cell) => {
|
|
824
819
|
const value = cell.getValue();
|
|
@@ -837,6 +832,18 @@ var ColumnBuilder = class {
|
|
|
837
832
|
void navigator.clipboard.writeText(value.toHex());
|
|
838
833
|
}
|
|
839
834
|
})))));
|
|
835
|
+
},
|
|
836
|
+
...props,
|
|
837
|
+
meta: {
|
|
838
|
+
...props.meta,
|
|
839
|
+
cell: {
|
|
840
|
+
...props.meta?.cell,
|
|
841
|
+
classNames: [
|
|
842
|
+
"font-mono",
|
|
843
|
+
textPadding,
|
|
844
|
+
classNames
|
|
845
|
+
]
|
|
846
|
+
}
|
|
840
847
|
}
|
|
841
848
|
};
|
|
842
849
|
}
|
|
@@ -876,9 +883,11 @@ var ColumnBuilder = class {
|
|
|
876
883
|
*/
|
|
877
884
|
switch({ label, classNames, onUpdate, ...props } = {}) {
|
|
878
885
|
return {
|
|
879
|
-
...props,
|
|
880
886
|
size: 50,
|
|
881
887
|
minSize: 50,
|
|
888
|
+
header: (column) => label ?? column.header.id,
|
|
889
|
+
cell: SwitchBuilderCell,
|
|
890
|
+
...props,
|
|
882
891
|
meta: {
|
|
883
892
|
...props.meta,
|
|
884
893
|
onUpdate,
|
|
@@ -889,9 +898,7 @@ var ColumnBuilder = class {
|
|
|
889
898
|
classNames
|
|
890
899
|
]
|
|
891
900
|
}
|
|
892
|
-
}
|
|
893
|
-
header: (column) => label ?? column.header.id,
|
|
894
|
-
cell: SwitchBuilderCell
|
|
901
|
+
}
|
|
895
902
|
};
|
|
896
903
|
}
|
|
897
904
|
/**
|
|
@@ -901,7 +908,6 @@ var ColumnBuilder = class {
|
|
|
901
908
|
const IconOn = on?.Icon ?? Check2;
|
|
902
909
|
const IconOff = off?.Icon ?? X2;
|
|
903
910
|
return {
|
|
904
|
-
...props,
|
|
905
911
|
size: size ?? 32,
|
|
906
912
|
header: (column) => /* @__PURE__ */ React8.createElement("div", {
|
|
907
913
|
className: "justify-center"
|
|
@@ -919,7 +925,8 @@ var ColumnBuilder = class {
|
|
|
919
925
|
} else {
|
|
920
926
|
return null;
|
|
921
927
|
}
|
|
922
|
-
}
|
|
928
|
+
},
|
|
929
|
+
...props
|
|
923
930
|
};
|
|
924
931
|
}
|
|
925
932
|
};
|
|
@@ -929,7 +936,6 @@ export {
|
|
|
929
936
|
ColumnMenu,
|
|
930
937
|
ColumnPanel,
|
|
931
938
|
Table,
|
|
932
|
-
columnTypes,
|
|
933
939
|
createColumnBuilder,
|
|
934
940
|
currentRow,
|
|
935
941
|
flushPadding,
|
|
@@ -950,6 +956,7 @@ export {
|
|
|
950
956
|
theadResizeThumb,
|
|
951
957
|
theadRoot,
|
|
952
958
|
theadTh,
|
|
953
|
-
theadTr
|
|
959
|
+
theadTr,
|
|
960
|
+
translations_default as translations
|
|
954
961
|
};
|
|
955
962
|
//# sourceMappingURL=index.mjs.map
|