@dxos/react-ui-table 0.8.4-main.fcfe5033a5 → 0.8.4-staging.60fe92afc8
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 +102 -5
- package/dist/lib/browser/{chunk-F7Y374KL.mjs → chunk-4KOQTPFC.mjs} +62 -111
- package/dist/lib/browser/chunk-4KOQTPFC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BF54SSNL.mjs → chunk-62PYOJPY.mjs} +13 -16
- package/dist/lib/browser/chunk-62PYOJPY.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/index.mjs +57 -131
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +9 -8
- 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-SIRDIPHZ.mjs → chunk-7LMOZUTS.mjs} +13 -16
- package/dist/lib/node-esm/chunk-7LMOZUTS.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/{chunk-CCJ4LOVM.mjs → chunk-KOSV2J5N.mjs} +62 -111
- package/dist/lib/node-esm/chunk-KOSV2J5N.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +57 -131
- 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 +9 -8
- 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 +2 -2
- package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
- package/dist/types/src/components/Table/DynamicTable.d.ts +3 -4
- package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts +21 -20
- package/dist/types/src/components/Table/DynamicTable.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/Relations.stories.d.ts +87 -81
- 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 +2 -2
- package/dist/types/src/components/Table/Table.d.ts.map +1 -1
- package/dist/types/src/components/Table/Table.stories.d.ts +88 -81
- package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
- package/dist/types/src/components/Table/TableContent.d.ts +2 -1
- package/dist/types/src/components/Table/TableContent.d.ts.map +1 -1
- package/dist/types/src/components/Table/TableToolbar.d.ts +1 -1
- package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/CellValidationMessage.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts +1 -2
- package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
- package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts +19 -19
- package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/hooks/useAddRow.d.ts.map +1 -1
- package/dist/types/src/hooks/useProjectionModel.d.ts.map +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 -7
- 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.map +1 -1
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
- package/dist/types/src/testing/useTestTableModel.d.ts +1 -1
- package/dist/types/src/testing/useTestTableModel.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +19 -19
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Table.d.ts +12 -6
- package/dist/types/src/types/Table.d.ts.map +1 -1
- package/dist/types/src/util/dynamic-table.d.ts +6 -6
- package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
- 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 +53 -63
- package/src/components/Table/ColumnActionsMenu.tsx +2 -1
- package/src/components/Table/ColumnSettings.tsx +2 -2
- package/src/components/Table/DynamicTable.stories.tsx +9 -8
- package/src/components/Table/DynamicTable.tsx +11 -12
- package/src/components/Table/Relations.stories.tsx +46 -9
- package/src/components/Table/RowActionsMenu.tsx +3 -2
- package/src/components/Table/Table.stories.tsx +86 -33
- package/src/components/Table/TableContent.tsx +9 -4
- package/src/components/Table/TableToolbar.tsx +2 -2
- package/src/components/TableCellEditor/CellValidationMessage.tsx +1 -2
- package/src/components/TableCellEditor/FormCellEditor.tsx +8 -7
- package/src/components/TableCellEditor/TableCellEditor.stories.tsx +7 -4
- package/src/components/TableCellEditor/TableCellEditor.tsx +8 -6
- package/src/components/testing.ts +7 -12
- package/src/hooks/useProjectionModel.ts +5 -6
- package/src/hooks/useTableModel.ts +1 -1
- package/src/index.ts +0 -4
- package/src/model/table-model.test.ts +4 -9
- package/src/model/table-model.ts +43 -36
- package/src/model/table-presentation.test.ts +4 -9
- package/src/model/table-presentation.ts +15 -15
- package/src/testing/useTestTableModel.ts +6 -7
- package/src/types/Table.ts +16 -15
- package/src/util/dynamic-table.test.ts +13 -20
- package/src/util/dynamic-table.ts +19 -18
- package/dist/lib/browser/chunk-BF54SSNL.mjs.map +0 -7
- package/dist/lib/browser/chunk-F7Y374KL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CCJ4LOVM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SIRDIPHZ.mjs.map +0 -7
|
@@ -239,12 +239,12 @@ var tableControls = {
|
|
|
239
239
|
// src/model/table-model.ts
|
|
240
240
|
import { Atom as Atom2 } from "@effect-atom/atom-react";
|
|
241
241
|
import { Resource as Resource2 } from "@dxos/context";
|
|
242
|
-
import { Format as Format2, Obj, Order, Query, Ref } from "@dxos/echo";
|
|
243
|
-
import { toEffectSchema } from "@dxos/echo/
|
|
244
|
-
import { getSnapshot } from "@dxos/echo/
|
|
245
|
-
import {
|
|
242
|
+
import { Format as Format2, Obj, Order, Query, Ref, Type } from "@dxos/echo";
|
|
243
|
+
import { toEffectSchema } from "@dxos/echo/JsonSchema";
|
|
244
|
+
import { getSnapshot } from "@dxos/echo/Obj";
|
|
245
|
+
import { SchemaEx } from "@dxos/effect";
|
|
246
246
|
import { invariant } from "@dxos/invariant";
|
|
247
|
-
import {
|
|
247
|
+
import { EntityId } from "@dxos/keys";
|
|
248
248
|
import { formatForEditing, parseValue } from "@dxos/react-ui-form";
|
|
249
249
|
import { validateSchema } from "@dxos/schema";
|
|
250
250
|
|
|
@@ -385,10 +385,10 @@ var SelectionModel = class extends Resource {
|
|
|
385
385
|
// src/model/table-model.ts
|
|
386
386
|
var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-table/src/model/table-model.ts";
|
|
387
387
|
var createEchoChangeCallback = (table) => ({
|
|
388
|
-
table: (mutate) => Obj.
|
|
388
|
+
table: (mutate) => Obj.update(table, (table2) => mutate(table2)),
|
|
389
389
|
row: (row, mutate) => {
|
|
390
390
|
if (Obj.isObject(row)) {
|
|
391
|
-
Obj.
|
|
391
|
+
Obj.update(row, (row2) => mutate(row2));
|
|
392
392
|
} else {
|
|
393
393
|
mutate(row);
|
|
394
394
|
}
|
|
@@ -453,15 +453,7 @@ var TableModel = class extends Resource2 {
|
|
|
453
453
|
...defaultFeatures,
|
|
454
454
|
...features
|
|
455
455
|
};
|
|
456
|
-
invariant(!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === "single"), "Single selection is not compatible with editable tables.", {
|
|
457
|
-
F: __dxlog_file,
|
|
458
|
-
L: 197,
|
|
459
|
-
S: this,
|
|
460
|
-
A: [
|
|
461
|
-
"!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === 'single')",
|
|
462
|
-
"'Single selection is not compatible with editable tables.'"
|
|
463
|
-
]
|
|
464
|
-
});
|
|
456
|
+
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.'"] });
|
|
465
457
|
this._visibleRange = Atom2.make({
|
|
466
458
|
start: {
|
|
467
459
|
row: 0,
|
|
@@ -476,8 +468,12 @@ var TableModel = class extends Resource2 {
|
|
|
476
468
|
this._draftRows = Atom2.make([]);
|
|
477
469
|
this._inMemorySort = Atom2.make(void 0);
|
|
478
470
|
this._cellUpdateCounter = Atom2.make(0);
|
|
479
|
-
this._persistedSort = Atom2.make((
|
|
480
|
-
const
|
|
471
|
+
this._persistedSort = Atom2.make((get) => {
|
|
472
|
+
const view = get(this._object.view.atom);
|
|
473
|
+
if (!view) {
|
|
474
|
+
return void 0;
|
|
475
|
+
}
|
|
476
|
+
const viewSnapshot = Obj.getSnapshot(view);
|
|
481
477
|
const ast = viewSnapshot.query.ast;
|
|
482
478
|
const orders = extractOrder(ast);
|
|
483
479
|
if (orders && orders.length > 0) {
|
|
@@ -512,8 +508,8 @@ var TableModel = class extends Resource2 {
|
|
|
512
508
|
const sorted = [
|
|
513
509
|
...rows
|
|
514
510
|
].sort((a, b) => {
|
|
515
|
-
const aValue = getValue(a, field.path);
|
|
516
|
-
const bValue = getValue(b, field.path);
|
|
511
|
+
const aValue = SchemaEx.getValue(a, field.path);
|
|
512
|
+
const bValue = SchemaEx.getValue(b, field.path);
|
|
517
513
|
return compareValues(aValue, bValue, fieldProjection.props.format, sort.direction);
|
|
518
514
|
});
|
|
519
515
|
return sorted;
|
|
@@ -540,19 +536,11 @@ var TableModel = class extends Resource2 {
|
|
|
540
536
|
this._onRowAction = onRowAction;
|
|
541
537
|
}
|
|
542
538
|
get id() {
|
|
543
|
-
return Obj.
|
|
539
|
+
return Obj.getURI(this._object);
|
|
544
540
|
}
|
|
545
541
|
get view() {
|
|
546
542
|
const view = this._object.view.target;
|
|
547
|
-
invariant(view, "Table model not initialized", {
|
|
548
|
-
F: __dxlog_file,
|
|
549
|
-
L: 308,
|
|
550
|
-
S: this,
|
|
551
|
-
A: [
|
|
552
|
-
"view",
|
|
553
|
-
"'Table model not initialized'"
|
|
554
|
-
]
|
|
555
|
-
});
|
|
543
|
+
invariant(view, "Table model not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 190, S: this, A: ["view", "'Table model not initialized'"] });
|
|
556
544
|
return view;
|
|
557
545
|
}
|
|
558
546
|
get table() {
|
|
@@ -612,15 +600,7 @@ var TableModel = class extends Resource2 {
|
|
|
612
600
|
return this._pinnedRows;
|
|
613
601
|
}
|
|
614
602
|
get columnMeta() {
|
|
615
|
-
invariant(this._columnMeta, void 0, {
|
|
616
|
-
F: __dxlog_file,
|
|
617
|
-
L: 381,
|
|
618
|
-
S: this,
|
|
619
|
-
A: [
|
|
620
|
-
"this._columnMeta",
|
|
621
|
-
""
|
|
622
|
-
]
|
|
623
|
-
});
|
|
603
|
+
invariant(this._columnMeta, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 244, S: this, A: ["this._columnMeta", ""] });
|
|
624
604
|
return this._columnMeta;
|
|
625
605
|
}
|
|
626
606
|
get selection() {
|
|
@@ -639,15 +619,7 @@ var TableModel = class extends Resource2 {
|
|
|
639
619
|
await this._selection.open(this._ctx);
|
|
640
620
|
}
|
|
641
621
|
initializeColumnMeta() {
|
|
642
|
-
invariant(this._object.view.target, "View must be loaded before initializing column meta", {
|
|
643
|
-
F: __dxlog_file,
|
|
644
|
-
L: 405,
|
|
645
|
-
S: this,
|
|
646
|
-
A: [
|
|
647
|
-
"this._object.view.target",
|
|
648
|
-
"'View must be loaded before initializing column meta'"
|
|
649
|
-
]
|
|
650
|
-
});
|
|
622
|
+
invariant(this._object.view.target, "View must be loaded before initializing column meta", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 263, S: this, A: ["this._object.view.target", "'View must be loaded before initializing column meta'"] });
|
|
651
623
|
this._columnMeta = Atom2.make((get) => {
|
|
652
624
|
const fields = get(this._projection.fields);
|
|
653
625
|
const meta = Object.fromEntries(fields.map((field, index) => [
|
|
@@ -758,7 +730,7 @@ var TableModel = class extends Resource2 {
|
|
|
758
730
|
return;
|
|
759
731
|
}
|
|
760
732
|
const draftData = {
|
|
761
|
-
id:
|
|
733
|
+
id: EntityId.random()
|
|
762
734
|
};
|
|
763
735
|
const validationErrors = this.validateDraftRowData(draftData);
|
|
764
736
|
const draftRow = {
|
|
@@ -841,13 +813,13 @@ var TableModel = class extends Resource2 {
|
|
|
841
813
|
let value;
|
|
842
814
|
if (plane === "frozenRowsEnd") {
|
|
843
815
|
if (row >= 0 && row < this._registry.get(this._draftRows).length) {
|
|
844
|
-
value = getValue(this._registry.get(this._draftRows)[row].data, field.path);
|
|
816
|
+
value = SchemaEx.getValue(this._registry.get(this._draftRows)[row].data, field.path);
|
|
845
817
|
} else {
|
|
846
818
|
return void 0;
|
|
847
819
|
}
|
|
848
820
|
} else {
|
|
849
821
|
const sortedRows = this._registry.get(this._sortedRows);
|
|
850
|
-
value = getValue(sortedRows[row], field.path);
|
|
822
|
+
value = SchemaEx.getValue(sortedRows[row], field.path);
|
|
851
823
|
}
|
|
852
824
|
if (value == null) {
|
|
853
825
|
return "";
|
|
@@ -858,7 +830,7 @@ var TableModel = class extends Resource2 {
|
|
|
858
830
|
if (!field.referencePath) {
|
|
859
831
|
return "";
|
|
860
832
|
}
|
|
861
|
-
return getValue(value.target, field.referencePath);
|
|
833
|
+
return SchemaEx.getValue(value.target, field.referencePath);
|
|
862
834
|
}
|
|
863
835
|
default: {
|
|
864
836
|
return formatForEditing({
|
|
@@ -893,7 +865,7 @@ var TableModel = class extends Resource2 {
|
|
|
893
865
|
const snapshot = {
|
|
894
866
|
...draftRow.data
|
|
895
867
|
};
|
|
896
|
-
setValue(snapshot, field.path, transformedValue);
|
|
868
|
+
SchemaEx.setValue(snapshot, field.path, transformedValue);
|
|
897
869
|
const validationErrors = this.validateDraftRowData(snapshot);
|
|
898
870
|
if (validationErrors.length > 0) {
|
|
899
871
|
const error = validationErrors.find((err) => err.path === field.path);
|
|
@@ -909,45 +881,23 @@ var TableModel = class extends Resource2 {
|
|
|
909
881
|
};
|
|
910
882
|
} else {
|
|
911
883
|
const currentRow = this._registry.get(this._rows)[row];
|
|
912
|
-
invariant(currentRow, "Invalid row index", {
|
|
913
|
-
F: __dxlog_file,
|
|
914
|
-
L: 693,
|
|
915
|
-
S: this,
|
|
916
|
-
A: [
|
|
917
|
-
"currentRow",
|
|
918
|
-
"'Invalid row index'"
|
|
919
|
-
]
|
|
920
|
-
});
|
|
884
|
+
invariant(currentRow, "Invalid row index", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 537, S: this, A: ["currentRow", "'Invalid row index'"] });
|
|
921
885
|
const snapshot = {
|
|
922
886
|
...getSnapshot(currentRow)
|
|
923
887
|
};
|
|
924
|
-
setValue(snapshot, field.path, transformedValue);
|
|
925
|
-
const
|
|
926
|
-
invariant(
|
|
927
|
-
|
|
928
|
-
L: 699,
|
|
929
|
-
S: this,
|
|
930
|
-
A: [
|
|
931
|
-
"schema",
|
|
932
|
-
""
|
|
933
|
-
]
|
|
934
|
-
});
|
|
888
|
+
SchemaEx.setValue(snapshot, field.path, transformedValue);
|
|
889
|
+
const type = Obj.getType(currentRow);
|
|
890
|
+
invariant(type, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 544, S: this, A: ["type", ""] });
|
|
891
|
+
const schema = Type.getSchema(type);
|
|
935
892
|
const validationResult = validateSchema(schema, snapshot);
|
|
936
893
|
if (validationResult && validationResult.length > 0) {
|
|
937
|
-
const error = validationResult
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
""
|
|
945
|
-
]
|
|
946
|
-
});
|
|
947
|
-
return {
|
|
948
|
-
valid: false,
|
|
949
|
-
error: error.message
|
|
950
|
-
};
|
|
894
|
+
const error = validationResult.find((err) => err.path === field.path);
|
|
895
|
+
if (error) {
|
|
896
|
+
return {
|
|
897
|
+
valid: false,
|
|
898
|
+
error: error.message
|
|
899
|
+
};
|
|
900
|
+
}
|
|
951
901
|
}
|
|
952
902
|
return {
|
|
953
903
|
valid: true
|
|
@@ -968,14 +918,14 @@ var TableModel = class extends Resource2 {
|
|
|
968
918
|
}
|
|
969
919
|
if (plane === "frozenRowsEnd") {
|
|
970
920
|
if (row >= 0 && row < this._registry.get(this._draftRows).length) {
|
|
971
|
-
setValue(this._registry.get(this._draftRows)[row].data, field.path, transformedValue);
|
|
921
|
+
SchemaEx.setValue(this._registry.get(this._draftRows)[row].data, field.path, transformedValue);
|
|
972
922
|
this.validateDraftRow(row);
|
|
973
923
|
}
|
|
974
924
|
} else {
|
|
975
925
|
const sortedRows = this._registry.get(this._sortedRows);
|
|
976
926
|
const rowData = sortedRows[row];
|
|
977
927
|
this._change.row(rowData, (mutableRow) => {
|
|
978
|
-
setValue(mutableRow, field.path, transformedValue);
|
|
928
|
+
SchemaEx.setValue(mutableRow, field.path, transformedValue);
|
|
979
929
|
});
|
|
980
930
|
}
|
|
981
931
|
};
|
|
@@ -989,10 +939,10 @@ var TableModel = class extends Resource2 {
|
|
|
989
939
|
const field = fields[col];
|
|
990
940
|
const sortedRows = this._registry.get(this._sortedRows);
|
|
991
941
|
const rowData = sortedRows[row];
|
|
992
|
-
const value = getValue(rowData, field.path);
|
|
942
|
+
const value = SchemaEx.getValue(rowData, field.path);
|
|
993
943
|
const updatedValue = update(value);
|
|
994
944
|
this._change.row(rowData, (mutableRow) => {
|
|
995
|
-
setValue(mutableRow, field.path, updatedValue);
|
|
945
|
+
SchemaEx.setValue(mutableRow, field.path, updatedValue);
|
|
996
946
|
});
|
|
997
947
|
}
|
|
998
948
|
/**
|
|
@@ -1107,12 +1057,12 @@ var TableModel = class extends Resource2 {
|
|
|
1107
1057
|
const field = this._projection.getFields().find((f) => f.id === inMemorySort.fieldId);
|
|
1108
1058
|
if (field) {
|
|
1109
1059
|
const newQuery = baseQuery.orderBy(Order.property(field.path, inMemorySort.direction));
|
|
1110
|
-
Obj.
|
|
1060
|
+
Obj.update(view, (view2) => {
|
|
1111
1061
|
view2.query.ast = newQuery.ast;
|
|
1112
1062
|
});
|
|
1113
1063
|
}
|
|
1114
1064
|
} else {
|
|
1115
|
-
Obj.
|
|
1065
|
+
Obj.update(view, (view2) => {
|
|
1116
1066
|
view2.query.ast = baseQuery.ast;
|
|
1117
1067
|
});
|
|
1118
1068
|
}
|
|
@@ -1170,7 +1120,8 @@ var editorTextToCellValue = (props, value) => {
|
|
|
1170
1120
|
import { Atom as Atom3 } from "@effect-atom/atom-react";
|
|
1171
1121
|
import * as Predicate from "effect/Predicate";
|
|
1172
1122
|
import { Obj as Obj2 } from "@dxos/echo";
|
|
1173
|
-
import { Format as Format3, TypeEnum
|
|
1123
|
+
import { Format as Format3, TypeEnum } from "@dxos/echo/Format";
|
|
1124
|
+
import { SchemaEx as SchemaEx2 } from "@dxos/effect";
|
|
1174
1125
|
import { cellClassesForFieldType, formatForDisplay } from "@dxos/react-ui-form";
|
|
1175
1126
|
import { toPlaneCellIndex } from "@dxos/react-ui-grid";
|
|
1176
1127
|
import { VIEW_FIELD_LIMIT } from "@dxos/schema";
|
|
@@ -1251,7 +1202,7 @@ var TablePresentation = class {
|
|
|
1251
1202
|
const { props } = this.getFieldProjection(field.id);
|
|
1252
1203
|
const cell = {
|
|
1253
1204
|
get value() {
|
|
1254
|
-
const value =
|
|
1205
|
+
const value = SchemaEx2.getValue(obj, field.path);
|
|
1255
1206
|
if (value == null) {
|
|
1256
1207
|
return "";
|
|
1257
1208
|
}
|
|
@@ -1268,7 +1219,7 @@ var TablePresentation = class {
|
|
|
1268
1219
|
if (!field.referencePath) {
|
|
1269
1220
|
return "";
|
|
1270
1221
|
}
|
|
1271
|
-
return
|
|
1222
|
+
return SchemaEx2.getValue(value.target, field.referencePath);
|
|
1272
1223
|
}
|
|
1273
1224
|
default: {
|
|
1274
1225
|
return formatForDisplay({
|
|
@@ -1291,7 +1242,7 @@ var TablePresentation = class {
|
|
|
1291
1242
|
}
|
|
1292
1243
|
cell.className = mx(classes);
|
|
1293
1244
|
if (props.type === TypeEnum.Array) {
|
|
1294
|
-
const targetArray =
|
|
1245
|
+
const targetArray = SchemaEx2.getValue(obj, field.path);
|
|
1295
1246
|
if (targetArray && Array.isArray(targetArray)) {
|
|
1296
1247
|
const getLabel = (value) => {
|
|
1297
1248
|
if (!value) {
|
|
@@ -1314,18 +1265,18 @@ var TablePresentation = class {
|
|
|
1314
1265
|
const tags = targetArray.map(getLabel).filter(Predicate.isNotNullable).map((title) => {
|
|
1315
1266
|
return `<span class="dx-tag" data-hue="neutral">${title}</span>`;
|
|
1316
1267
|
}).join("");
|
|
1317
|
-
cell.accessoryHtml = `<div
|
|
1268
|
+
cell.accessoryHtml = `<div class="flex flex-row gap-1 overflow-x-auto">${tags}</div>`;
|
|
1318
1269
|
}
|
|
1319
1270
|
}
|
|
1320
1271
|
if (props.format === Format3.TypeFormat.Ref && props.referenceSchema) {
|
|
1321
|
-
const targetObj =
|
|
1272
|
+
const targetObj = SchemaEx2.getValue(obj, field.path)?.target;
|
|
1322
1273
|
if (targetObj) {
|
|
1323
|
-
const
|
|
1324
|
-
cell.accessoryHtml = `<div role="none" class="absolute end-0 inset-y-0 p-(--dx-grid-cell-content-padding-block)"><dx-anchor
|
|
1274
|
+
const uri = Obj2.getURI(targetObj);
|
|
1275
|
+
cell.accessoryHtml = `<div role="none" class="absolute end-0 inset-y-0 p-(--dx-grid-cell-content-padding-block)"><dx-anchor uri=${uri} 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>`;
|
|
1325
1276
|
}
|
|
1326
1277
|
}
|
|
1327
1278
|
if (props.format === Format3.TypeFormat.Boolean) {
|
|
1328
|
-
const value =
|
|
1279
|
+
const value = SchemaEx2.getValue(obj, field.path);
|
|
1329
1280
|
cell.accessoryHtml = tableControls.switch.render({
|
|
1330
1281
|
colIndex,
|
|
1331
1282
|
rowIndex: displayIndex,
|
|
@@ -1334,7 +1285,7 @@ var TablePresentation = class {
|
|
|
1334
1285
|
cell.readonly = "no-text-select";
|
|
1335
1286
|
}
|
|
1336
1287
|
if (props.format === Format3.TypeFormat.SingleSelect) {
|
|
1337
|
-
const value =
|
|
1288
|
+
const value = SchemaEx2.getValue(obj, field.path);
|
|
1338
1289
|
const options = this.model.projection.getFieldProjection(field.id).props.options;
|
|
1339
1290
|
if (options) {
|
|
1340
1291
|
const option = options.find((o) => o.id === value);
|
|
@@ -1344,7 +1295,7 @@ var TablePresentation = class {
|
|
|
1344
1295
|
}
|
|
1345
1296
|
}
|
|
1346
1297
|
if (props.format === Format3.TypeFormat.MultiSelect) {
|
|
1347
|
-
const values =
|
|
1298
|
+
const values = SchemaEx2.getValue(obj, field.path);
|
|
1348
1299
|
const options = this.model.projection.getFieldProjection(field.id).props.options;
|
|
1349
1300
|
if (options && values && values.length > 0) {
|
|
1350
1301
|
const tags = values.map((value) => {
|
|
@@ -1593,11 +1544,11 @@ var cellClassesForRowSelection = (selected, selectionMode) => {
|
|
|
1593
1544
|
switch (selectionMode) {
|
|
1594
1545
|
case "single":
|
|
1595
1546
|
return [
|
|
1596
|
-
"dx-grid__cell--no-focus-unfurl
|
|
1547
|
+
"dx-grid__cell--no-focus-unfurl bg-current-surface! hover:bg-hover-surface cursor-pointer!"
|
|
1597
1548
|
];
|
|
1598
1549
|
case "multiple":
|
|
1599
1550
|
return [
|
|
1600
|
-
"
|
|
1551
|
+
"bg-grid-cell-selected!"
|
|
1601
1552
|
];
|
|
1602
1553
|
}
|
|
1603
1554
|
};
|
|
@@ -1624,7 +1575,7 @@ var useAddRow = ({ db, schema }) => {
|
|
|
1624
1575
|
|
|
1625
1576
|
// src/hooks/useProjectionModel.ts
|
|
1626
1577
|
import { useState } from "react";
|
|
1627
|
-
import {
|
|
1578
|
+
import { Type as Type2 } from "@dxos/echo";
|
|
1628
1579
|
import { useAsyncEffect } from "@dxos/react-ui";
|
|
1629
1580
|
import { ProjectionModel, createEchoChangeCallback as createEchoChangeCallback2 } from "@dxos/schema";
|
|
1630
1581
|
var useProjectionModel = (schema, table, registry) => {
|
|
@@ -1632,8 +1583,8 @@ var useProjectionModel = (schema, table, registry) => {
|
|
|
1632
1583
|
useAsyncEffect(async () => {
|
|
1633
1584
|
if (schema && table) {
|
|
1634
1585
|
const view = await table.view.load();
|
|
1635
|
-
const jsonSchema =
|
|
1636
|
-
const change = createEchoChangeCallback2(view,
|
|
1586
|
+
const jsonSchema = schema.jsonSchema;
|
|
1587
|
+
const change = createEchoChangeCallback2(view, Type2.getDatabase(schema) != null ? schema : void 0);
|
|
1637
1588
|
const projection2 = new ProjectionModel({
|
|
1638
1589
|
registry,
|
|
1639
1590
|
view,
|
|
@@ -1659,7 +1610,7 @@ import { useSelected, useSelectionActions } from "@dxos/react-ui-attention";
|
|
|
1659
1610
|
import { isNonNullable } from "@dxos/util";
|
|
1660
1611
|
var useTableModel = ({ object, projection, db, rows, rowActions, features, onSelectionChanged, onRowAction, ...props }) => {
|
|
1661
1612
|
const registry = useContext(RegistryContext);
|
|
1662
|
-
const selected = useSelected(object && Obj4.
|
|
1613
|
+
const selected = useSelected(object && Obj4.getURI(object), "multi");
|
|
1663
1614
|
const initialSelection = useMemo(() => selected, [
|
|
1664
1615
|
object
|
|
1665
1616
|
]);
|
|
@@ -1750,4 +1701,4 @@ export {
|
|
|
1750
1701
|
useProjectionModel,
|
|
1751
1702
|
useTableModel
|
|
1752
1703
|
};
|
|
1753
|
-
//# sourceMappingURL=chunk-
|
|
1704
|
+
//# sourceMappingURL=chunk-KOSV2J5N.mjs.map
|