@dxos/react-ui-table 0.7.1 → 0.7.2-main.f1adc9f
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-A5W4XWPD.mjs → chunk-EUQZHWXM.mjs} +10 -6
- package/dist/lib/browser/chunk-EUQZHWXM.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +29 -15
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types/index.mjs +3 -1
- package/dist/lib/node/{chunk-32IGMRME.cjs → chunk-OM65ZSS6.cjs} +14 -9
- package/dist/lib/node/chunk-OM65ZSS6.cjs.map +7 -0
- package/dist/lib/node/index.cjs +30 -16
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +4 -2
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{chunk-DWQ4KGLD.mjs → chunk-U6VD6VZ4.mjs} +10 -6
- package/dist/lib/node-esm/chunk-U6VD6VZ4.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +29 -15
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/types/index.mjs +3 -1
- package/dist/types/src/components/Table/ColumnActionsMenu.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.map +1 -1
- package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +3 -2
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/model/table-model.d.ts.map +1 -1
- package/dist/types/src/playwright/TableManager.d.ts +17 -0
- package/dist/types/src/playwright/TableManager.d.ts.map +1 -0
- package/dist/types/src/playwright/playwright.config.d.ts +3 -0
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
- package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
- package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
- package/dist/types/src/types/table.d.ts +60 -7
- package/dist/types/src/types/table.d.ts.map +1 -1
- package/dist/types/src/util/grid.d.ts +3 -3
- package/dist/types/src/util/grid.d.ts.map +1 -1
- package/dist/types/src/util/table-buttons.d.ts.map +1 -1
- package/dist/types/src/util/table.d.ts +5 -2
- package/dist/types/src/util/table.d.ts.map +1 -1
- package/package.json +38 -39
- package/src/_deprecated/components/ColumnMenu/ColumnMenu.stories.tsx +1 -1
- package/src/_deprecated/components/ColumnMenu/ColumnSettings.stories.tsx +1 -1
- package/src/_deprecated/components/Table/Table.stories.tsx +1 -1
- package/src/components/Table/ColumnActionsMenu.tsx +11 -6
- package/src/components/Table/ColumnSettings.tsx +2 -2
- package/src/components/Table/RowActionsMenu.tsx +2 -3
- package/src/components/Table/Table.stories.tsx +6 -4
- package/src/components/Table/Table.tsx +2 -3
- package/src/components/TableCellEditor/TableCellEditor.stories.tsx +1 -1
- package/src/model/table-model.ts +1 -0
- package/src/playwright/TableManager.ts +60 -0
- package/src/playwright/playwright.config.ts +18 -0
- package/src/playwright/smoke.spec.ts +105 -0
- package/src/types/table.ts +13 -3
- package/src/util/grid.ts +3 -3
- package/src/util/table-buttons.ts +9 -4
- package/src/util/table-controls.ts +1 -1
- package/src/util/table.ts +11 -3
- package/dist/lib/browser/chunk-A5W4XWPD.mjs.map +0 -7
- package/dist/lib/node/chunk-32IGMRME.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-DWQ4KGLD.mjs.map +0 -7
|
@@ -2,17 +2,21 @@
|
|
|
2
2
|
import { ref, S, TypedObject } from "@dxos/echo-schema";
|
|
3
3
|
import { ThreadType } from "@dxos/plugin-space";
|
|
4
4
|
import { ViewType } from "@dxos/schema";
|
|
5
|
+
var TableSchema = S.Struct({
|
|
6
|
+
id: S.String,
|
|
7
|
+
name: S.optional(S.String),
|
|
8
|
+
view: S.optional(ref(ViewType)),
|
|
9
|
+
// TODO(burdon): Should not import from plugin. Either factor out type or use reverse deps when supported.
|
|
10
|
+
threads: S.optional(S.Array(ref(ThreadType)))
|
|
11
|
+
});
|
|
5
12
|
var TableType = class extends TypedObject({
|
|
6
13
|
typename: "dxos.org/type/Table",
|
|
7
14
|
version: "0.1.0"
|
|
8
|
-
})({
|
|
9
|
-
name: S.optional(S.String),
|
|
10
|
-
view: S.optional(ref(ViewType)),
|
|
11
|
-
threads: S.optional(S.mutable(S.Array(ref(ThreadType))))
|
|
12
|
-
}) {
|
|
15
|
+
})(TableSchema.fields) {
|
|
13
16
|
};
|
|
14
17
|
|
|
15
18
|
export {
|
|
19
|
+
TableSchema,
|
|
16
20
|
TableType
|
|
17
21
|
};
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-EUQZHWXM.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/table.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { ThreadType } from '@dxos/plugin-space';\nimport { ViewType } from '@dxos/schema';\n\nexport const TableSchema = S.Struct({\n id: S.String,\n name: S.optional(S.String),\n view: S.optional(ref(ViewType)),\n // TODO(burdon): Should not import from plugin. Either factor out type or use reverse deps when supported.\n threads: S.optional(S.Array(ref(ThreadType))),\n});\n\n// type TableType = S.ClassType<typeof TableSchema>;\n\n// TODO(burdon): UX should not depend on ECHO types.\nexport class TableType extends TypedObject({\n typename: 'dxos.org/type/Table',\n version: '0.1.0',\n})(TableSchema.fields) {}\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,KAAKC,GAAGC,mBAAmB;AACpC,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AAElB,IAAMC,cAAcC,EAAEC,OAAO;EAClCC,IAAIF,EAAEG;EACNC,MAAMJ,EAAEK,SAASL,EAAEG,MAAM;EACzBG,MAAMN,EAAEK,SAASE,IAAIC,QAAAA,CAAAA;;EAErBC,SAAST,EAAEK,SAASL,EAAEU,MAAMH,IAAII,UAAAA,CAAAA,CAAAA;AAClC,CAAA;AAKO,IAAMC,YAAN,cAAwBC,YAAY;EACzCC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGhB,YAAYiB,MAAM,EAAA;AAAG;",
|
|
6
|
+
"names": ["ref", "S", "TypedObject", "ThreadType", "ViewType", "TableSchema", "S", "Struct", "id", "String", "name", "optional", "view", "ref", "ViewType", "threads", "Array", "ThreadType", "TableType", "TypedObject", "typename", "version", "fields"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
+
TableSchema,
|
|
2
3
|
TableType
|
|
3
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EUQZHWXM.mjs";
|
|
4
5
|
|
|
5
6
|
// packages/ui/react-ui-table/src/translations.ts
|
|
6
7
|
var translationKey = "table";
|
|
@@ -60,14 +61,19 @@ var ColumnActionsMenu = ({ model }) => {
|
|
|
60
61
|
}, /* @__PURE__ */ React.createElement(DropdownMenu.VirtualTrigger, {
|
|
61
62
|
virtualRef: model.modalController.trigger
|
|
62
63
|
}), /* @__PURE__ */ React.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React.createElement(DropdownMenu.Viewport, null, (!isCurrentColumnSorted || currentSort?.direction === "asc") && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
64
|
+
"data-testid": "column-sort-descending",
|
|
63
65
|
onClick: () => model.setSort(state.fieldId, "desc")
|
|
64
66
|
}, t("column action sort descending")), (!isCurrentColumnSorted || currentSort?.direction === "desc") && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
67
|
+
"data-testid": "column-sort-ascending",
|
|
65
68
|
onClick: () => model.setSort(state.fieldId, "asc")
|
|
66
69
|
}, t("column action sort ascending")), isCurrentColumnSorted && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
70
|
+
"data-testid": "column-clear-sort",
|
|
67
71
|
onClick: () => model.clearSort()
|
|
68
72
|
}, t("column action clear sorting")), model.getColumnCount() > 1 && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
73
|
+
"data-testid": "column-delete",
|
|
69
74
|
onClick: () => model.deleteColumn(state.fieldId)
|
|
70
75
|
}, t("column action delete")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
|
|
76
|
+
"data-testid": "column-settings",
|
|
71
77
|
onClick: () => model.modalController.openColumnSettings()
|
|
72
78
|
}, t("column action settings"))), /* @__PURE__ */ React.createElement(DropdownMenu.Arrow, null))));
|
|
73
79
|
};
|
|
@@ -104,7 +110,7 @@ var ColumnSettings = ({ model }) => {
|
|
|
104
110
|
state
|
|
105
111
|
]);
|
|
106
112
|
const field = existingField ?? newField;
|
|
107
|
-
const
|
|
113
|
+
const handleSave = useCallback(() => {
|
|
108
114
|
model?.modalController.close();
|
|
109
115
|
}, [
|
|
110
116
|
model?.modalController
|
|
@@ -133,7 +139,7 @@ var ColumnSettings = ({ model }) => {
|
|
|
133
139
|
projection: model.projection,
|
|
134
140
|
field,
|
|
135
141
|
registry: space?.db.schemaRegistry,
|
|
136
|
-
|
|
142
|
+
onSave: handleSave,
|
|
137
143
|
onCancel: handleCancel
|
|
138
144
|
})), /* @__PURE__ */ React2.createElement(DropdownMenu2.Arrow, null))));
|
|
139
145
|
};
|
|
@@ -143,8 +149,8 @@ import React3 from "react";
|
|
|
143
149
|
import { DropdownMenu as DropdownMenu3, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
144
150
|
var RowActionsMenu = ({ model }) => {
|
|
145
151
|
const { t } = useTranslation2(translationKey);
|
|
146
|
-
const state = model.modalController.state.value;
|
|
147
152
|
const hasSelection = model.selection.hasSelection.value;
|
|
153
|
+
const state = model.modalController.state.value;
|
|
148
154
|
if (state?.type !== "row") {
|
|
149
155
|
return null;
|
|
150
156
|
}
|
|
@@ -155,6 +161,7 @@ var RowActionsMenu = ({ model }) => {
|
|
|
155
161
|
}, /* @__PURE__ */ React3.createElement(DropdownMenu3.VirtualTrigger, {
|
|
156
162
|
virtualRef: model.modalController.trigger
|
|
157
163
|
}), /* @__PURE__ */ React3.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React3.createElement(DropdownMenu3.Viewport, null, /* @__PURE__ */ React3.createElement(DropdownMenu3.Item, {
|
|
164
|
+
"data-testid": "row-menu-delete",
|
|
158
165
|
onClick: () => model.deleteRow(state.rowIndex)
|
|
159
166
|
}, t(hasSelection ? "bulk delete row label" : "delete row label"))), /* @__PURE__ */ React3.createElement(DropdownMenu3.Arrow, null)));
|
|
160
167
|
};
|
|
@@ -225,12 +232,12 @@ import { PublicKey } from "@dxos/react-client";
|
|
|
225
232
|
import { create } from "@dxos/react-client/echo";
|
|
226
233
|
import { createFieldId, createView, ViewProjection } from "@dxos/schema";
|
|
227
234
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-table/src/util/table.ts";
|
|
228
|
-
var initializeTable = ({ space, table }) => {
|
|
235
|
+
var initializeTable = ({ space, table, initialRow = true }) => {
|
|
229
236
|
log.info("initializeTable", {
|
|
230
237
|
table
|
|
231
238
|
}, {
|
|
232
239
|
F: __dxlog_file,
|
|
233
|
-
L:
|
|
240
|
+
L: 32,
|
|
234
241
|
S: void 0,
|
|
235
242
|
C: (f, a) => f(...a)
|
|
236
243
|
});
|
|
@@ -279,7 +286,9 @@ var initializeTable = ({ space, table }) => {
|
|
|
279
286
|
title: "Manager"
|
|
280
287
|
}
|
|
281
288
|
});
|
|
282
|
-
|
|
289
|
+
if (initialRow) {
|
|
290
|
+
space.db.add(create(contactSchema, {}));
|
|
291
|
+
}
|
|
283
292
|
return contactSchema;
|
|
284
293
|
};
|
|
285
294
|
|
|
@@ -294,9 +303,9 @@ var ICONS = {
|
|
|
294
303
|
rowMenu: "ph--dots-three--regular",
|
|
295
304
|
newColumn: "ph--plus--regular"
|
|
296
305
|
};
|
|
297
|
-
var createButtonHtml = ({ button, value = "", disabled = false }) => {
|
|
306
|
+
var createButtonHtml = ({ button, value = "", disabled = false, testId }) => {
|
|
298
307
|
const buttonClasses = "ch-button is-6 pli-0.5 min-bs-0 absolute inset-block-1 inline-end-2";
|
|
299
|
-
return `<button class="${buttonClasses}" ${TABLE_ATTRS[button]}="${value}" ${disabled ? "disabled" : ""}><svg><use href="/icons.svg#${ICONS[button]}"/></svg></button>`;
|
|
308
|
+
return `<button class="${buttonClasses}" ${TABLE_ATTRS[button]}="${value}" data-testid="${testId}" ${disabled ? "disabled" : ""}><svg><use href="/icons.svg#${ICONS[button]}"/></svg></button>`;
|
|
300
309
|
};
|
|
301
310
|
var tableButtons = {
|
|
302
311
|
columnSettings: {
|
|
@@ -304,7 +313,8 @@ var tableButtons = {
|
|
|
304
313
|
icon: ICONS.columnSettings,
|
|
305
314
|
render: ({ fieldId }) => createButtonHtml({
|
|
306
315
|
button: "columnSettings",
|
|
307
|
-
value: fieldId
|
|
316
|
+
value: fieldId,
|
|
317
|
+
testId: "table-column-settings-button"
|
|
308
318
|
})
|
|
309
319
|
},
|
|
310
320
|
rowMenu: {
|
|
@@ -312,7 +322,8 @@ var tableButtons = {
|
|
|
312
322
|
icon: ICONS.rowMenu,
|
|
313
323
|
render: ({ rowIndex }) => createButtonHtml({
|
|
314
324
|
button: "rowMenu",
|
|
315
|
-
value: rowIndex.toString()
|
|
325
|
+
value: rowIndex.toString(),
|
|
326
|
+
testId: "table-row-menu-button"
|
|
316
327
|
})
|
|
317
328
|
},
|
|
318
329
|
addColumn: {
|
|
@@ -320,7 +331,8 @@ var tableButtons = {
|
|
|
320
331
|
icon: ICONS.newColumn,
|
|
321
332
|
render: ({ disabled } = {}) => createButtonHtml({
|
|
322
333
|
button: "newColumn",
|
|
323
|
-
disabled
|
|
334
|
+
disabled,
|
|
335
|
+
testId: "table-new-column-button"
|
|
324
336
|
})
|
|
325
337
|
}
|
|
326
338
|
};
|
|
@@ -471,7 +483,7 @@ var frozen = {
|
|
|
471
483
|
var TableRoot = ({ children, role }) => {
|
|
472
484
|
return /* @__PURE__ */ React5.createElement("div", {
|
|
473
485
|
role: "none",
|
|
474
|
-
className: mx("relative border-bs !border-separator", role === "section" ? "attention-surface overflow-hidden [&_.dx-grid]:max-is-
|
|
486
|
+
className: mx("relative border-bs !border-separator", role === "section" ? "attention-surface overflow-hidden [&_.dx-grid]:max-is-[--dx-grid-content-inline-size]" : "flex flex-col [&_.dx-grid]:grow [&_.dx-grid]:max-is-[--dx-grid-content-inline-size] [&_.dx-grid]:bs-0 [&_.dx-grid]:max-bs-[--dx-grid-content-block-size]")
|
|
475
487
|
}, children);
|
|
476
488
|
};
|
|
477
489
|
var TableMain = /* @__PURE__ */ forwardRef(({ model, ignoreAttention }, forwardedRef) => {
|
|
@@ -541,7 +553,7 @@ var TableMain = /* @__PURE__ */ forwardRef(({ model, ignoreAttention }, forwarde
|
|
|
541
553
|
const space = getSpace2(model.table);
|
|
542
554
|
invariant2(space, void 0, {
|
|
543
555
|
F: __dxlog_file3,
|
|
544
|
-
L:
|
|
556
|
+
L: 157,
|
|
545
557
|
S: void 0,
|
|
546
558
|
A: [
|
|
547
559
|
"space",
|
|
@@ -847,7 +859,7 @@ var checkboxAttributes = {
|
|
|
847
859
|
var renderCheckbox = ({ rowIndex, header = false, checked = false, disabled = false }) => {
|
|
848
860
|
const baseClasses = "absolute inset-block-[6px] inline-end-[6px] ch-checkbox";
|
|
849
861
|
const { attributes } = tableControls.checkbox;
|
|
850
|
-
return `<input type="checkbox" class="${baseClasses}" ${attributes.checkbox}="${rowIndex}" ${header ? attributes.header : ""} ${checked ? "checked" : ""} ${disabled ? "disabled" : ""}/>`;
|
|
862
|
+
return `<input type="checkbox" class="${baseClasses}" ${attributes.checkbox}="${rowIndex}" ${header ? attributes.header : ""} ${checked ? "checked" : ""} ${disabled ? "disabled" : ""} data-testid="table-selection"/>`;
|
|
851
863
|
};
|
|
852
864
|
var tableControls = {
|
|
853
865
|
checkbox: {
|
|
@@ -982,6 +994,7 @@ var TableModel = class extends Resource2 {
|
|
|
982
994
|
col,
|
|
983
995
|
row: 0
|
|
984
996
|
})] = {
|
|
997
|
+
// TODO(burdon): Use same logic as form for fallback title.
|
|
985
998
|
value: props.title ?? field.path,
|
|
986
999
|
readonly: true,
|
|
987
1000
|
resizeHandle: "col",
|
|
@@ -1384,6 +1397,7 @@ var useTableModel = ({ objects, table, projection, ...props }) => {
|
|
|
1384
1397
|
};
|
|
1385
1398
|
export {
|
|
1386
1399
|
Table,
|
|
1400
|
+
TableSchema,
|
|
1387
1401
|
TableType,
|
|
1388
1402
|
Toolbar,
|
|
1389
1403
|
fromGridCell,
|