@dxos/react-ui-table 0.8.4-main.9735255 → 0.8.4-main.abd8ff62ef
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/{chunk-OZBLY7XM.mjs → chunk-FBURZBPH.mjs} +17 -23
- package/dist/lib/browser/chunk-FBURZBPH.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-I5IFW7UF.mjs → chunk-YGC7LZJN.mjs} +39 -90
- package/dist/lib/browser/chunk-YGC7LZJN.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +198 -235
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +7 -6
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/translations.mjs +36 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -1
- package/dist/lib/node-esm/{chunk-WNZSKIRF.mjs → chunk-DKKMSVKP.mjs} +17 -23
- package/dist/lib/node-esm/chunk-DKKMSVKP.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-DDJKYJFY.mjs → chunk-GKIWDEZ7.mjs} +39 -90
- package/dist/lib/node-esm/chunk-GKIWDEZ7.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +198 -235
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +7 -6
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/translations.mjs +37 -0
- package/dist/lib/node-esm/translations.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -1
- package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
- package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
- package/dist/types/src/components/Table/DynamicTable.d.ts +5 -4
- package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts +20 -22
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/Relations.stories.d.ts +82 -82
- package/dist/types/src/components/Table/Relations.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/RowActionsMenu.d.ts.map +1 -1
- package/dist/types/src/components/Table/Table.d.ts +20 -21
- package/dist/types/src/components/Table/Table.d.ts.map +1 -1
- package/dist/types/src/components/Table/Table.stories.d.ts +84 -84
- package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/TableContent.d.ts +17 -0
- package/dist/types/src/components/Table/TableContent.d.ts.map +1 -0
- package/dist/types/src/components/Table/TableToolbar.d.ts +21 -0
- package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -0
- package/dist/types/src/components/TableCellEditor/CellValidationMessage.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts +3 -3
- package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts +2 -2
- package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts +22 -24
- package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/hooks/useAddRow.d.ts +1 -1
- package/dist/types/src/hooks/useAddRow.d.ts.map +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -1
- package/dist/types/src/hooks/useTableModel.d.ts +1 -1
- package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/model/modal-controller.d.ts.map +1 -1
- package/dist/types/src/model/selection-model.d.ts +1 -1
- package/dist/types/src/model/selection-model.d.ts.map +1 -1
- package/dist/types/src/model/table-model.d.ts +7 -6
- package/dist/types/src/model/table-model.d.ts.map +1 -1
- package/dist/types/src/model/table-presentation.d.ts.map +1 -1
- package/dist/types/src/playwright/TableManager.d.ts +2 -1
- package/dist/types/src/playwright/TableManager.d.ts.map +1 -1
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
- package/dist/types/src/testing/useTestTableModel.d.ts +2 -2
- package/dist/types/src/testing/useTestTableModel.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +19 -21
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Table.d.ts +1 -6
- package/dist/types/src/types/Table.d.ts.map +1 -1
- package/dist/types/src/util/dynamic-table.d.ts +6 -5
- package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
- package/dist/types/src/util/dynamic-table.test.d.ts +2 -0
- package/dist/types/src/util/dynamic-table.test.d.ts.map +1 -0
- package/dist/types/src/util/query-ast.d.ts.map +1 -1
- package/dist/types/src/util/schema.d.ts.map +1 -1
- package/dist/types/src/util/signals.d.ts.map +1 -1
- package/dist/types/src/util/sort.d.ts.map +1 -1
- package/dist/types/src/util/table-buttons.d.ts +20 -20
- package/dist/types/src/util/table-buttons.d.ts.map +1 -1
- package/dist/types/src/util/table-controls.d.ts +4 -4
- package/dist/types/src/util/table-controls.d.ts.map +1 -1
- package/dist/types/src/util/tag.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +59 -62
- package/src/components/Table/ColumnActionsMenu.tsx +7 -6
- package/src/components/Table/ColumnSettings.tsx +3 -4
- package/src/components/Table/DynamicTable.stories.tsx +19 -18
- package/src/components/Table/DynamicTable.tsx +13 -20
- package/src/components/Table/Relations.stories.tsx +78 -34
- package/src/components/Table/RowActionsMenu.tsx +3 -2
- package/src/components/Table/Table.stories.tsx +72 -52
- package/src/components/Table/Table.tsx +41 -435
- package/src/components/Table/TableContent.tsx +421 -0
- package/src/components/{TableToolbar → Table}/TableToolbar.tsx +36 -43
- package/src/components/TableCellEditor/CellValidationMessage.tsx +4 -4
- package/src/components/TableCellEditor/FormCellEditor.tsx +14 -7
- package/src/components/TableCellEditor/TableCellEditor.stories.tsx +13 -12
- package/src/components/TableCellEditor/TableCellEditor.tsx +12 -10
- package/src/components/index.ts +0 -1
- package/src/components/testing.ts +10 -10
- package/src/hooks/useAddRow.ts +1 -1
- package/src/hooks/useProjectionModel.ts +3 -3
- package/src/hooks/useTableModel.ts +1 -1
- package/src/index.ts +0 -4
- package/src/model/table-model.test.ts +5 -6
- package/src/model/table-model.ts +18 -17
- package/src/model/table-presentation.test.ts +13 -7
- package/src/model/table-presentation.ts +12 -12
- package/src/playwright/TableManager.ts +10 -3
- package/src/playwright/playwright.config.ts +1 -1
- package/src/playwright/smoke.spec.ts +48 -5
- package/src/testing/useTestTableModel.ts +6 -6
- package/src/translations.ts +19 -21
- package/src/types/Table.ts +12 -23
- package/src/util/dynamic-table.test.ts +77 -0
- package/src/util/dynamic-table.ts +17 -16
- package/src/util/query-ast.ts +3 -0
- package/src/util/table-buttons.ts +1 -1
- package/src/util/table-controls.ts +2 -2
- package/dist/lib/browser/chunk-I5IFW7UF.mjs.map +0 -7
- package/dist/lib/browser/chunk-OZBLY7XM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DDJKYJFY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WNZSKIRF.mjs.map +0 -7
- package/dist/types/src/components/TableToolbar/TableToolbar.d.ts +0 -21
- package/dist/types/src/components/TableToolbar/TableToolbar.d.ts.map +0 -1
- package/dist/types/src/components/TableToolbar/index.d.ts +0 -2
- package/dist/types/src/components/TableToolbar/index.d.ts.map +0 -1
- package/src/components/TableToolbar/index.ts +0 -5
|
@@ -1,36 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
__export
|
|
3
|
+
} from "./chunk-J5LGTIGS.mjs";
|
|
6
4
|
|
|
7
5
|
// src/types/Table.ts
|
|
8
6
|
var Table_exports = {};
|
|
9
7
|
__export(Table_exports, {
|
|
10
8
|
Table: () => Table,
|
|
11
|
-
TableV1: () => TableV1,
|
|
12
9
|
make: () => make
|
|
13
10
|
});
|
|
14
11
|
import * as Match from "effect/Match";
|
|
15
12
|
import * as Schema from "effect/Schema";
|
|
16
13
|
import * as SchemaAST from "effect/SchemaAST";
|
|
17
|
-
import { Obj, Ref, Type } from "@dxos/echo";
|
|
14
|
+
import { Annotation, JsonSchema, Obj, Ref, Type } from "@dxos/echo";
|
|
15
|
+
import { View } from "@dxos/echo";
|
|
18
16
|
import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/internal";
|
|
19
|
-
import {
|
|
17
|
+
import { ViewAnnotation } from "@dxos/schema";
|
|
20
18
|
var Table = Schema.Struct({
|
|
21
19
|
name: Schema.String.pipe(Schema.optional),
|
|
22
|
-
view:
|
|
20
|
+
view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
|
|
23
21
|
sizes: Schema.Record({
|
|
24
22
|
// TODO(wittjosiah): Should be JsonPath.
|
|
25
23
|
key: Schema.String,
|
|
26
24
|
value: Schema.Number
|
|
27
25
|
}).pipe(Schema.mutable, FormInputAnnotation.set(false))
|
|
28
26
|
}).pipe(Type.object({
|
|
29
|
-
typename: "dxos.
|
|
30
|
-
version: "0.
|
|
27
|
+
typename: "org.dxos.type.table",
|
|
28
|
+
version: "0.1.0"
|
|
31
29
|
}), LabelAnnotation.set([
|
|
32
30
|
"name"
|
|
33
|
-
]), ViewAnnotation.set(
|
|
31
|
+
]), ViewAnnotation.set([
|
|
32
|
+
"view"
|
|
33
|
+
]), Annotation.IconAnnotation.set({
|
|
34
|
+
icon: "ph--table--regular",
|
|
35
|
+
hue: "green"
|
|
36
|
+
}));
|
|
34
37
|
var make = ({ name, sizes = {}, view, jsonSchema }) => {
|
|
35
38
|
const table = Obj.make(Table, {
|
|
36
39
|
name,
|
|
@@ -38,7 +41,7 @@ var make = ({ name, sizes = {}, view, jsonSchema }) => {
|
|
|
38
41
|
sizes
|
|
39
42
|
});
|
|
40
43
|
if (jsonSchema) {
|
|
41
|
-
const schema =
|
|
44
|
+
const schema = JsonSchema.toEffectSchema(jsonSchema);
|
|
42
45
|
const properties = SchemaAST.getPropertySignatures(schema.ast);
|
|
43
46
|
for (const property of properties) {
|
|
44
47
|
const name2 = property.name.toString();
|
|
@@ -60,17 +63,8 @@ var make = ({ name, sizes = {}, view, jsonSchema }) => {
|
|
|
60
63
|
}
|
|
61
64
|
return table;
|
|
62
65
|
};
|
|
63
|
-
var TableV1 = Schema.Struct({
|
|
64
|
-
sizes: Schema.Record({
|
|
65
|
-
key: Schema.String,
|
|
66
|
-
value: Schema.Number
|
|
67
|
-
}).pipe(Schema.mutable)
|
|
68
|
-
}).pipe(Type.object({
|
|
69
|
-
typename: "dxos.org/type/Table",
|
|
70
|
-
version: "0.1.0"
|
|
71
|
-
}));
|
|
72
66
|
|
|
73
67
|
export {
|
|
74
68
|
Table_exports
|
|
75
69
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-FBURZBPH.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/Table.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { Annotation, JsonSchema, Obj, Ref, Type } from '@dxos/echo';\nimport { View } from '@dxos/echo';\nimport { FormInputAnnotation, type JsonPath, type JsonSchemaType, LabelAnnotation } from '@dxos/echo/internal';\nimport { ViewAnnotation } from '@dxos/schema';\n\nexport const Table = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n\n view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),\n\n sizes: Schema.Record({\n // TODO(wittjosiah): Should be JsonPath.\n key: Schema.String,\n value: Schema.Number,\n }).pipe(Schema.mutable, FormInputAnnotation.set(false)),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.table',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(['view']),\n Annotation.IconAnnotation.set({\n icon: 'ph--table--regular',\n hue: 'green',\n }),\n);\n\nexport interface Table extends Schema.Schema.Type<typeof Table> {}\n\ntype MakeProps = {\n name?: string;\n sizes?: Record<string, number>;\n view: View.View;\n /** Required to auto-size columns. */\n jsonSchema?: JsonSchemaType;\n};\n\n/**\n * Make a table as a view of a data set.\n */\nexport const make = ({ name, sizes = {}, view, jsonSchema }: MakeProps): Table => {\n const table = Obj.make(Table, { name, view: Ref.make(view), sizes } as Obj.MakeProps<typeof Table>);\n\n // Preset sizes.\n if (jsonSchema) {\n const schema = JsonSchema.toEffectSchema(jsonSchema);\n const properties = SchemaAST.getPropertySignatures(schema.ast);\n for (const property of properties) {\n const name = property.name.toString() as JsonPath;\n if (sizes?.[name]) {\n table.sizes[name] = sizes[name];\n continue;\n }\n\n Match.type<SchemaAST.AST>().pipe(\n Match.when({ _tag: 'BooleanKeyword' }, () => {\n table.sizes[name] = 100;\n }),\n Match.when({ _tag: 'NumberKeyword' }, () => {\n table.sizes[name] = 100;\n }),\n Match.orElse(() => {\n // Noop.\n }),\n )(property.type);\n }\n }\n\n return table;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;AAAA;;;;;AAIA,YAAYA,WAAW;AACvB,YAAYC,YAAY;AACxB,YAAYC,eAAe;AAE3B,SAASC,YAAYC,YAAYC,KAAKC,KAAKC,YAAY;AACvD,SAASC,YAAY;AACrB,SAASC,qBAAyDC,uBAAuB;AACzF,SAASC,sBAAsB;AAExB,IAAMC,QAAeC,cAAO;EACjCC,MAAaC,cAAOC,KAAYC,eAAQ;EAExCC,MAAMZ,IAAIA,IAAIE,KAAKA,IAAI,EAAEQ,KAAKP,oBAAoBU,IAAI,KAAA,CAAA;EAEtDC,OAAcC,cAAO;;IAEnBC,KAAYP;IACZQ,OAAcC;EAChB,CAAA,EAAGR,KAAYS,gBAAShB,oBAAoBU,IAAI,KAAA,CAAA;AAClD,CAAA,EAAGH,KACDT,KAAKmB,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAlB,gBAAgBS,IAAI;EAAC;CAAO,GAC5BR,eAAeQ,IAAI;EAAC;CAAO,GAC3BhB,WAAW0B,eAAeV,IAAI;EAC5BW,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAgBK,IAAMC,OAAO,CAAC,EAAElB,MAAMM,QAAQ,CAAC,GAAGF,MAAMe,WAAU,MAAa;AACpE,QAAMC,QAAQ7B,IAAI2B,KAAKpB,OAAO;IAAEE;IAAMI,MAAMZ,IAAI0B,KAAKd,IAAAA;IAAOE;EAAM,CAAA;AAGlE,MAAIa,YAAY;AACd,UAAME,SAAS/B,WAAWgC,eAAeH,UAAAA;AACzC,UAAMI,aAAuBC,gCAAsBH,OAAOI,GAAG;AAC7D,eAAWC,YAAYH,YAAY;AACjC,YAAMvB,QAAO0B,SAAS1B,KAAK2B,SAAQ;AACnC,UAAIrB,QAAQN,KAAAA,GAAO;AACjBoB,cAAMd,MAAMN,KAAAA,IAAQM,MAAMN,KAAAA;AAC1B;MACF;AAEAd,MAAM0C,WAAI,EAAkB1B,KACpB2B,WAAK;QAAEC,MAAM;MAAiB,GAAG,MAAA;AACrCV,cAAMd,MAAMN,KAAAA,IAAQ;MACtB,CAAA,GACM6B,WAAK;QAAEC,MAAM;MAAgB,GAAG,MAAA;AACpCV,cAAMd,MAAMN,KAAAA,IAAQ;MACtB,CAAA,GACM+B,aAAO,MAAA;MAEb,CAAA,CAAA,EACAL,SAASE,IAAI;IACjB;EACF;AAEA,SAAOR;AACT;",
|
|
6
|
+
"names": ["Match", "Schema", "SchemaAST", "Annotation", "JsonSchema", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "Table", "Struct", "name", "String", "pipe", "optional", "view", "set", "sizes", "Record", "key", "value", "Number", "mutable", "object", "typename", "version", "IconAnnotation", "icon", "hue", "make", "jsonSchema", "table", "schema", "toEffectSchema", "properties", "getPropertySignatures", "ast", "property", "toString", "type", "when", "_tag", "orElse"]
|
|
7
|
+
}
|
|
@@ -6,6 +6,9 @@ var extractOrder = (queryAst) => {
|
|
|
6
6
|
if (queryAst.type === "options") {
|
|
7
7
|
return extractOrder(queryAst.query);
|
|
8
8
|
}
|
|
9
|
+
if (queryAst.type === "from") {
|
|
10
|
+
return extractOrder(queryAst.query);
|
|
11
|
+
}
|
|
9
12
|
return void 0;
|
|
10
13
|
};
|
|
11
14
|
|
|
@@ -69,7 +72,7 @@ var BUTTON_IDENTIFIERS = {
|
|
|
69
72
|
};
|
|
70
73
|
var createButton = ({ attr, data, disabled = false, icon, testId, type: _type = "primary" }) => {
|
|
71
74
|
const dataAttrs = Object.entries(data).map(([k, v]) => `${k}="${v}"`).join(" ");
|
|
72
|
-
return `<button ${attr} data-testid="${testId}" class="dx-button
|
|
75
|
+
return `<button ${attr} data-testid="${testId}" class="dx-button w-6 aspect-square px-0.5 min-h-0" ${dataAttrs} ${disabled ? "disabled" : ""} data-dx-grid-action="accessory"><svg data-size="4"><use href="/icons.svg#${icon}"/></svg></button>`;
|
|
73
76
|
};
|
|
74
77
|
var addColumnButton = {
|
|
75
78
|
attr: BUTTON_IDENTIFIERS.newColumn,
|
|
@@ -182,8 +185,8 @@ var CONTROL_IDENTIFIERS = {
|
|
|
182
185
|
switch: "data-table-switch"
|
|
183
186
|
};
|
|
184
187
|
var BASE_CLASSES = {
|
|
185
|
-
checkbox: "absolute inset-
|
|
186
|
-
switch: "absolute inset-
|
|
188
|
+
checkbox: "absolute inset-y-[.375rem] end-[.375rem] dx-checkbox",
|
|
189
|
+
switch: "absolute inset-y-[.25rem] end-[.25rem] dx-checkbox--switch"
|
|
187
190
|
};
|
|
188
191
|
var renderAttributes = (data) => {
|
|
189
192
|
return Object.entries(data).map(([k, v]) => `${k}="${v}"`).join(" ");
|
|
@@ -380,10 +383,10 @@ var SelectionModel = class extends Resource {
|
|
|
380
383
|
// src/model/table-model.ts
|
|
381
384
|
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-table/src/model/table-model.ts";
|
|
382
385
|
var createEchoChangeCallback = (table) => ({
|
|
383
|
-
table: (mutate) => Obj.
|
|
386
|
+
table: (mutate) => Obj.update(table, (table2) => mutate(table2)),
|
|
384
387
|
row: (row, mutate) => {
|
|
385
388
|
if (Obj.isObject(row)) {
|
|
386
|
-
Obj.
|
|
389
|
+
Obj.update(row, (row2) => mutate(row2));
|
|
387
390
|
} else {
|
|
388
391
|
mutate(row);
|
|
389
392
|
}
|
|
@@ -410,7 +413,7 @@ var TableModel = class extends Resource2 {
|
|
|
410
413
|
_visibleRange;
|
|
411
414
|
_onInsertRow;
|
|
412
415
|
_onDeleteRows;
|
|
413
|
-
|
|
416
|
+
_onColumnDelete;
|
|
414
417
|
_onCellUpdate;
|
|
415
418
|
_onRowOrderChange;
|
|
416
419
|
_onRowAction;
|
|
@@ -436,7 +439,7 @@ var TableModel = class extends Resource2 {
|
|
|
436
439
|
constructor({ registry, object, projection, db, change, features = {}, initialSelection = [], pinnedRows = {
|
|
437
440
|
top: [],
|
|
438
441
|
bottom: []
|
|
439
|
-
}, rowActions = [], onCellUpdate,
|
|
442
|
+
}, rowActions = [], onCellUpdate, onColumnDelete, onDeleteRows, onInsertRow, onRowOrderChange, onRowAction }) {
|
|
440
443
|
super();
|
|
441
444
|
this._registry = registry;
|
|
442
445
|
this._object = object;
|
|
@@ -448,15 +451,7 @@ var TableModel = class extends Resource2 {
|
|
|
448
451
|
...defaultFeatures,
|
|
449
452
|
...features
|
|
450
453
|
};
|
|
451
|
-
invariant(!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === "single"), "Single selection is not compatible with editable tables.", {
|
|
452
|
-
F: __dxlog_file,
|
|
453
|
-
L: 196,
|
|
454
|
-
S: this,
|
|
455
|
-
A: [
|
|
456
|
-
"!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === 'single')",
|
|
457
|
-
"'Single selection is not compatible with editable tables.'"
|
|
458
|
-
]
|
|
459
|
-
});
|
|
454
|
+
invariant(!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === "single"), "Single selection is not compatible with editable tables.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 94, S: this, A: ["!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === 'single')", "'Single selection is not compatible with editable tables.'"] });
|
|
460
455
|
this._visibleRange = Atom2.make({
|
|
461
456
|
start: {
|
|
462
457
|
row: 0,
|
|
@@ -529,7 +524,7 @@ var TableModel = class extends Resource2 {
|
|
|
529
524
|
this._rowActions = rowActions;
|
|
530
525
|
this._onInsertRow = onInsertRow;
|
|
531
526
|
this._onDeleteRows = onDeleteRows;
|
|
532
|
-
this.
|
|
527
|
+
this._onColumnDelete = onColumnDelete;
|
|
533
528
|
this._onCellUpdate = onCellUpdate;
|
|
534
529
|
this._onRowOrderChange = onRowOrderChange;
|
|
535
530
|
this._onRowAction = onRowAction;
|
|
@@ -539,15 +534,7 @@ var TableModel = class extends Resource2 {
|
|
|
539
534
|
}
|
|
540
535
|
get view() {
|
|
541
536
|
const view = this._object.view.target;
|
|
542
|
-
invariant(view, "Table model not initialized", {
|
|
543
|
-
F: __dxlog_file,
|
|
544
|
-
L: 307,
|
|
545
|
-
S: this,
|
|
546
|
-
A: [
|
|
547
|
-
"view",
|
|
548
|
-
"'Table model not initialized'"
|
|
549
|
-
]
|
|
550
|
-
});
|
|
537
|
+
invariant(view, "Table model not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 186, S: this, A: ["view", "'Table model not initialized'"] });
|
|
551
538
|
return view;
|
|
552
539
|
}
|
|
553
540
|
get table() {
|
|
@@ -607,15 +594,7 @@ var TableModel = class extends Resource2 {
|
|
|
607
594
|
return this._pinnedRows;
|
|
608
595
|
}
|
|
609
596
|
get columnMeta() {
|
|
610
|
-
invariant(this._columnMeta, void 0, {
|
|
611
|
-
F: __dxlog_file,
|
|
612
|
-
L: 380,
|
|
613
|
-
S: this,
|
|
614
|
-
A: [
|
|
615
|
-
"this._columnMeta",
|
|
616
|
-
""
|
|
617
|
-
]
|
|
618
|
-
});
|
|
597
|
+
invariant(this._columnMeta, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 240, S: this, A: ["this._columnMeta", ""] });
|
|
619
598
|
return this._columnMeta;
|
|
620
599
|
}
|
|
621
600
|
get selection() {
|
|
@@ -634,15 +613,7 @@ var TableModel = class extends Resource2 {
|
|
|
634
613
|
await this._selection.open(this._ctx);
|
|
635
614
|
}
|
|
636
615
|
initializeColumnMeta() {
|
|
637
|
-
invariant(this._object.view.target, "View must be loaded before initializing column meta", {
|
|
638
|
-
F: __dxlog_file,
|
|
639
|
-
L: 404,
|
|
640
|
-
S: this,
|
|
641
|
-
A: [
|
|
642
|
-
"this._object.view.target",
|
|
643
|
-
"'View must be loaded before initializing column meta'"
|
|
644
|
-
]
|
|
645
|
-
});
|
|
616
|
+
invariant(this._object.view.target, "View must be loaded before initializing column meta", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 259, S: this, A: ["this._object.view.target", "'View must be loaded before initializing column meta'"] });
|
|
646
617
|
this._columnMeta = Atom2.make((get) => {
|
|
647
618
|
const fields = get(this._projection.fields);
|
|
648
619
|
const meta = Object.fromEntries(fields.map((field, index) => [
|
|
@@ -904,39 +875,17 @@ var TableModel = class extends Resource2 {
|
|
|
904
875
|
};
|
|
905
876
|
} else {
|
|
906
877
|
const currentRow = this._registry.get(this._rows)[row];
|
|
907
|
-
invariant(currentRow, "Invalid row index", {
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
A: [
|
|
912
|
-
"currentRow",
|
|
913
|
-
"'Invalid row index'"
|
|
914
|
-
]
|
|
915
|
-
});
|
|
916
|
-
const snapshot = getSnapshot(currentRow);
|
|
878
|
+
invariant(currentRow, "Invalid row index", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 533, S: this, A: ["currentRow", "'Invalid row index'"] });
|
|
879
|
+
const snapshot = {
|
|
880
|
+
...getSnapshot(currentRow)
|
|
881
|
+
};
|
|
917
882
|
setValue(snapshot, field.path, transformedValue);
|
|
918
883
|
const schema = Obj.getSchema(currentRow);
|
|
919
|
-
invariant(schema, void 0, {
|
|
920
|
-
F: __dxlog_file,
|
|
921
|
-
L: 698,
|
|
922
|
-
S: this,
|
|
923
|
-
A: [
|
|
924
|
-
"schema",
|
|
925
|
-
""
|
|
926
|
-
]
|
|
927
|
-
});
|
|
884
|
+
invariant(schema, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 539, S: this, A: ["schema", ""] });
|
|
928
885
|
const validationResult = validateSchema(schema, snapshot);
|
|
929
886
|
if (validationResult && validationResult.length > 0) {
|
|
930
887
|
const error = validationResult[0];
|
|
931
|
-
invariant(error.path === field.path, void 0, {
|
|
932
|
-
F: __dxlog_file,
|
|
933
|
-
L: 703,
|
|
934
|
-
S: this,
|
|
935
|
-
A: [
|
|
936
|
-
"error.path === field.path",
|
|
937
|
-
""
|
|
938
|
-
]
|
|
939
|
-
});
|
|
888
|
+
invariant(error.path === field.path, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 543, S: this, A: ["error.path === field.path", ""] });
|
|
940
889
|
return {
|
|
941
890
|
valid: false,
|
|
942
891
|
error: error.message
|
|
@@ -1021,8 +970,8 @@ var TableModel = class extends Resource2 {
|
|
|
1021
970
|
return;
|
|
1022
971
|
}
|
|
1023
972
|
const field = this._projection?.getFields().find((field2) => field2.id === fieldId);
|
|
1024
|
-
if (field && this.
|
|
1025
|
-
this.
|
|
973
|
+
if (field && this._onColumnDelete) {
|
|
974
|
+
this._onColumnDelete(field.id);
|
|
1026
975
|
}
|
|
1027
976
|
}
|
|
1028
977
|
//
|
|
@@ -1100,13 +1049,13 @@ var TableModel = class extends Resource2 {
|
|
|
1100
1049
|
const field = this._projection.getFields().find((f) => f.id === inMemorySort.fieldId);
|
|
1101
1050
|
if (field) {
|
|
1102
1051
|
const newQuery = baseQuery.orderBy(Order.property(field.path, inMemorySort.direction));
|
|
1103
|
-
Obj.
|
|
1104
|
-
|
|
1052
|
+
Obj.update(view, (view2) => {
|
|
1053
|
+
view2.query.ast = newQuery.ast;
|
|
1105
1054
|
});
|
|
1106
1055
|
}
|
|
1107
1056
|
} else {
|
|
1108
|
-
Obj.
|
|
1109
|
-
|
|
1057
|
+
Obj.update(view, (view2) => {
|
|
1058
|
+
view2.query.ast = baseQuery.ast;
|
|
1110
1059
|
});
|
|
1111
1060
|
}
|
|
1112
1061
|
this._registry.set(this._inMemorySort, void 0);
|
|
@@ -1314,7 +1263,7 @@ var TablePresentation = class {
|
|
|
1314
1263
|
const targetObj = getValue2(obj, field.path)?.target;
|
|
1315
1264
|
if (targetObj) {
|
|
1316
1265
|
const dxn = Obj2.getDXN(targetObj)?.toString();
|
|
1317
|
-
cell.accessoryHtml = `<div role="none" class="absolute
|
|
1266
|
+
cell.accessoryHtml = `<div role="none" class="absolute end-0 inset-y-0 p-(--dx-grid-cell-content-padding-block)"><dx-anchor dxn=${dxn} class="dx-button w-6 aspect-square min-h-0" data-dx-grid-action="accessory"><dx-icon icon="ph--link-simple--regular"/></dx-anchor></div>`;
|
|
1318
1267
|
}
|
|
1319
1268
|
}
|
|
1320
1269
|
if (props.format === Format3.TypeFormat.Boolean) {
|
|
@@ -1428,7 +1377,7 @@ var TablePresentation = class {
|
|
|
1428
1377
|
value: "",
|
|
1429
1378
|
resizeHandle: "col",
|
|
1430
1379
|
accessoryHtml: `
|
|
1431
|
-
<span class="grow min-
|
|
1380
|
+
<span class="grow min-w-0 truncate">${props.title ?? field.path}</span>
|
|
1432
1381
|
${direction !== void 0 ? tableButtons.sort.render({
|
|
1433
1382
|
fieldId: field.id,
|
|
1434
1383
|
direction
|
|
@@ -1437,7 +1386,7 @@ var TablePresentation = class {
|
|
|
1437
1386
|
fieldId: field.id
|
|
1438
1387
|
})}
|
|
1439
1388
|
`,
|
|
1440
|
-
className: "!bg-
|
|
1389
|
+
className: "!bg-toolbar-surface text-description! [&>div]:flex [&>div]:items-stretch"
|
|
1441
1390
|
};
|
|
1442
1391
|
}
|
|
1443
1392
|
return cells;
|
|
@@ -1488,7 +1437,7 @@ var TablePresentation = class {
|
|
|
1488
1437
|
col: 0,
|
|
1489
1438
|
row: 0
|
|
1490
1439
|
})]: {
|
|
1491
|
-
className: "!bg-
|
|
1440
|
+
className: "!bg-toolbar-surface",
|
|
1492
1441
|
readonly: true,
|
|
1493
1442
|
value: ""
|
|
1494
1443
|
}
|
|
@@ -1504,7 +1453,7 @@ var TablePresentation = class {
|
|
|
1504
1453
|
header: true,
|
|
1505
1454
|
checked: this.model.selection.allRowsSelected
|
|
1506
1455
|
}),
|
|
1507
|
-
className: "!bg-
|
|
1456
|
+
className: "!bg-toolbar-surface",
|
|
1508
1457
|
readonly: true,
|
|
1509
1458
|
value: ""
|
|
1510
1459
|
}
|
|
@@ -1519,7 +1468,7 @@ var TablePresentation = class {
|
|
|
1519
1468
|
accessoryHtml: this.model.features.schemaEditable ? tableButtons.addColumn.render({
|
|
1520
1469
|
disabled: (this.model.projection?.getFields()?.length ?? 0) >= VIEW_FIELD_LIMIT
|
|
1521
1470
|
}) : void 0,
|
|
1522
|
-
className: "!bg-
|
|
1471
|
+
className: "!bg-toolbar-surface",
|
|
1523
1472
|
readonly: true,
|
|
1524
1473
|
value: ""
|
|
1525
1474
|
}
|
|
@@ -1577,7 +1526,7 @@ var cellClassesForRowSelection = (selected, selectionMode) => {
|
|
|
1577
1526
|
if (!selected) {
|
|
1578
1527
|
if (selectionMode === "single") {
|
|
1579
1528
|
return [
|
|
1580
|
-
"
|
|
1529
|
+
"cursor-pointer!"
|
|
1581
1530
|
];
|
|
1582
1531
|
} else {
|
|
1583
1532
|
return void 0;
|
|
@@ -1586,11 +1535,11 @@ var cellClassesForRowSelection = (selected, selectionMode) => {
|
|
|
1586
1535
|
switch (selectionMode) {
|
|
1587
1536
|
case "single":
|
|
1588
1537
|
return [
|
|
1589
|
-
"
|
|
1538
|
+
"dx-grid__cell--no-focus-unfurl !bg-current-surface hover:bg-hover-surface cursor-pointer!"
|
|
1590
1539
|
];
|
|
1591
1540
|
case "multiple":
|
|
1592
1541
|
return [
|
|
1593
|
-
"!bg-
|
|
1542
|
+
"!bg-grid-cell-selected"
|
|
1594
1543
|
];
|
|
1595
1544
|
}
|
|
1596
1545
|
};
|
|
@@ -1617,7 +1566,7 @@ var useAddRow = ({ db, schema }) => {
|
|
|
1617
1566
|
|
|
1618
1567
|
// src/hooks/useProjectionModel.ts
|
|
1619
1568
|
import { useState } from "react";
|
|
1620
|
-
import { Type } from "@dxos/echo";
|
|
1569
|
+
import { JsonSchema, Type } from "@dxos/echo";
|
|
1621
1570
|
import { useAsyncEffect } from "@dxos/react-ui";
|
|
1622
1571
|
import { ProjectionModel, createEchoChangeCallback as createEchoChangeCallback2 } from "@dxos/schema";
|
|
1623
1572
|
var useProjectionModel = (schema, table, registry) => {
|
|
@@ -1625,7 +1574,7 @@ var useProjectionModel = (schema, table, registry) => {
|
|
|
1625
1574
|
useAsyncEffect(async () => {
|
|
1626
1575
|
if (schema && table) {
|
|
1627
1576
|
const view = await table.view.load();
|
|
1628
|
-
const jsonSchema = Type.isMutable(schema) ? schema.jsonSchema :
|
|
1577
|
+
const jsonSchema = Type.isMutable(schema) ? schema.jsonSchema : JsonSchema.toJsonSchema(schema);
|
|
1629
1578
|
const change = createEchoChangeCallback2(view, Type.isMutable(schema) ? schema : void 0);
|
|
1630
1579
|
const projection2 = new ProjectionModel({
|
|
1631
1580
|
registry,
|
|
@@ -1743,4 +1692,4 @@ export {
|
|
|
1743
1692
|
useProjectionModel,
|
|
1744
1693
|
useTableModel
|
|
1745
1694
|
};
|
|
1746
|
-
//# sourceMappingURL=chunk-
|
|
1695
|
+
//# sourceMappingURL=chunk-YGC7LZJN.mjs.map
|