@dxos/react-ui-table 0.7.1 → 0.7.2-staging.6d26b2a

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.
Files changed (55) hide show
  1. package/dist/lib/browser/{chunk-A5W4XWPD.mjs → chunk-EWGUNGJC.mjs} +8 -6
  2. package/dist/lib/browser/chunk-EWGUNGJC.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +22 -11
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +1 -1
  7. package/dist/lib/node/{chunk-32IGMRME.cjs → chunk-A2N7XWW6.cjs} +11 -9
  8. package/dist/lib/node/chunk-A2N7XWW6.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +23 -12
  10. package/dist/lib/node/index.cjs.map +3 -3
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/types/index.cjs +2 -2
  13. package/dist/lib/node/types/index.cjs.map +1 -1
  14. package/dist/lib/node-esm/{chunk-DWQ4KGLD.mjs → chunk-SABDOZ6I.mjs} +8 -6
  15. package/dist/lib/node-esm/chunk-SABDOZ6I.mjs.map +7 -0
  16. package/dist/lib/node-esm/index.mjs +22 -11
  17. package/dist/lib/node-esm/index.mjs.map +3 -3
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/types/index.mjs +1 -1
  20. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
  21. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/testing.d.ts +3 -2
  23. package/dist/types/src/components/testing.d.ts.map +1 -1
  24. package/dist/types/src/playwright/TableManager.d.ts +17 -0
  25. package/dist/types/src/playwright/TableManager.d.ts.map +1 -0
  26. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  27. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  28. package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
  29. package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
  30. package/dist/types/src/types/table.d.ts +9 -7
  31. package/dist/types/src/types/table.d.ts.map +1 -1
  32. package/dist/types/src/util/grid.d.ts +3 -3
  33. package/dist/types/src/util/grid.d.ts.map +1 -1
  34. package/dist/types/src/util/table-buttons.d.ts.map +1 -1
  35. package/dist/types/src/util/table.d.ts +5 -2
  36. package/dist/types/src/util/table.d.ts.map +1 -1
  37. package/package.json +38 -39
  38. package/src/_deprecated/components/ColumnMenu/ColumnMenu.stories.tsx +1 -1
  39. package/src/_deprecated/components/ColumnMenu/ColumnSettings.stories.tsx +1 -1
  40. package/src/_deprecated/components/Table/Table.stories.tsx +1 -1
  41. package/src/components/Table/ColumnActionsMenu.tsx +11 -5
  42. package/src/components/Table/RowActionsMenu.tsx +1 -1
  43. package/src/components/Table/Table.stories.tsx +5 -3
  44. package/src/components/Table/Table.tsx +2 -2
  45. package/src/playwright/TableManager.ts +60 -0
  46. package/src/playwright/playwright.config.ts +18 -0
  47. package/src/playwright/smoke.spec.ts +105 -0
  48. package/src/types/table.ts +12 -3
  49. package/src/util/grid.ts +3 -3
  50. package/src/util/table-buttons.ts +9 -4
  51. package/src/util/table-controls.ts +1 -1
  52. package/src/util/table.ts +11 -3
  53. package/dist/lib/browser/chunk-A5W4XWPD.mjs.map +0 -7
  54. package/dist/lib/node/chunk-32IGMRME.cjs.map +0 -7
  55. package/dist/lib/node-esm/chunk-DWQ4KGLD.mjs.map +0 -7
@@ -2,17 +2,19 @@
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
+ threads: S.optional(S.Array(ref(ThreadType)))
10
+ });
5
11
  var TableType = class extends TypedObject({
6
12
  typename: "dxos.org/type/Table",
7
13
  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
- }) {
14
+ })(TableSchema.fields) {
13
15
  };
14
16
 
15
17
  export {
16
18
  TableType
17
19
  };
18
- //# sourceMappingURL=chunk-A5W4XWPD.mjs.map
20
+ //# sourceMappingURL=chunk-EWGUNGJC.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\n// TODO(burdon): Factor out echo dependency and define pattern for react-ui-xxx.\nconst TableSchema = S.Struct({\n id: S.String,\n name: S.optional(S.String),\n view: S.optional(ref(ViewType)),\n threads: S.optional(S.Array(ref(ThreadType))),\n});\n\ntype _TableType = S.Schema.Type<typeof TableSchema>;\n\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;AAGzB,IAAMC,cAAcC,EAAEC,OAAO;EAC3BC,IAAIF,EAAEG;EACNC,MAAMJ,EAAEK,SAASL,EAAEG,MAAM;EACzBG,MAAMN,EAAEK,SAASE,IAAIC,QAAAA,CAAAA;EACrBC,SAAST,EAAEK,SAASL,EAAEU,MAAMH,IAAII,UAAAA,CAAAA,CAAAA;AAClC,CAAA;AAIO,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,6 @@
1
1
  import {
2
2
  TableType
3
- } from "./chunk-A5W4XWPD.mjs";
3
+ } from "./chunk-EWGUNGJC.mjs";
4
4
 
5
5
  // packages/ui/react-ui-table/src/translations.ts
6
6
  var translationKey = "table";
@@ -60,14 +60,19 @@ var ColumnActionsMenu = ({ model }) => {
60
60
  }, /* @__PURE__ */ React.createElement(DropdownMenu.VirtualTrigger, {
61
61
  virtualRef: model.modalController.trigger
62
62
  }), /* @__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, {
63
+ "data-testid": "column-sort-descending",
63
64
  onClick: () => model.setSort(state.fieldId, "desc")
64
65
  }, t("column action sort descending")), (!isCurrentColumnSorted || currentSort?.direction === "desc") && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
66
+ "data-testid": "column-sort-ascending",
65
67
  onClick: () => model.setSort(state.fieldId, "asc")
66
68
  }, t("column action sort ascending")), isCurrentColumnSorted && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
69
+ "data-testid": "column-clear-sort",
67
70
  onClick: () => model.clearSort()
68
71
  }, t("column action clear sorting")), model.getColumnCount() > 1 && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
72
+ "data-testid": "column-delete",
69
73
  onClick: () => model.deleteColumn(state.fieldId)
70
74
  }, t("column action delete")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
75
+ "data-testid": "column-settings",
71
76
  onClick: () => model.modalController.openColumnSettings()
72
77
  }, t("column action settings"))), /* @__PURE__ */ React.createElement(DropdownMenu.Arrow, null))));
73
78
  };
@@ -155,6 +160,7 @@ var RowActionsMenu = ({ model }) => {
155
160
  }, /* @__PURE__ */ React3.createElement(DropdownMenu3.VirtualTrigger, {
156
161
  virtualRef: model.modalController.trigger
157
162
  }), /* @__PURE__ */ React3.createElement(DropdownMenu3.Content, null, /* @__PURE__ */ React3.createElement(DropdownMenu3.Viewport, null, /* @__PURE__ */ React3.createElement(DropdownMenu3.Item, {
163
+ "data-testid": "row-menu-delete",
158
164
  onClick: () => model.deleteRow(state.rowIndex)
159
165
  }, t(hasSelection ? "bulk delete row label" : "delete row label"))), /* @__PURE__ */ React3.createElement(DropdownMenu3.Arrow, null)));
160
166
  };
@@ -225,12 +231,12 @@ import { PublicKey } from "@dxos/react-client";
225
231
  import { create } from "@dxos/react-client/echo";
226
232
  import { createFieldId, createView, ViewProjection } from "@dxos/schema";
227
233
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-table/src/util/table.ts";
228
- var initializeTable = ({ space, table }) => {
234
+ var initializeTable = ({ space, table, initialRow = true }) => {
229
235
  log.info("initializeTable", {
230
236
  table
231
237
  }, {
232
238
  F: __dxlog_file,
233
- L: 26,
239
+ L: 32,
234
240
  S: void 0,
235
241
  C: (f, a) => f(...a)
236
242
  });
@@ -279,7 +285,9 @@ var initializeTable = ({ space, table }) => {
279
285
  title: "Manager"
280
286
  }
281
287
  });
282
- space.db.add(create(contactSchema, {}));
288
+ if (initialRow) {
289
+ space.db.add(create(contactSchema, {}));
290
+ }
283
291
  return contactSchema;
284
292
  };
285
293
 
@@ -294,9 +302,9 @@ var ICONS = {
294
302
  rowMenu: "ph--dots-three--regular",
295
303
  newColumn: "ph--plus--regular"
296
304
  };
297
- var createButtonHtml = ({ button, value = "", disabled = false }) => {
305
+ var createButtonHtml = ({ button, value = "", disabled = false, testId }) => {
298
306
  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>`;
307
+ return `<button class="${buttonClasses}" ${TABLE_ATTRS[button]}="${value}" data-testid="${testId}" ${disabled ? "disabled" : ""}><svg><use href="/icons.svg#${ICONS[button]}"/></svg></button>`;
300
308
  };
301
309
  var tableButtons = {
302
310
  columnSettings: {
@@ -304,7 +312,8 @@ var tableButtons = {
304
312
  icon: ICONS.columnSettings,
305
313
  render: ({ fieldId }) => createButtonHtml({
306
314
  button: "columnSettings",
307
- value: fieldId
315
+ value: fieldId,
316
+ testId: "table-column-settings-button"
308
317
  })
309
318
  },
310
319
  rowMenu: {
@@ -312,7 +321,8 @@ var tableButtons = {
312
321
  icon: ICONS.rowMenu,
313
322
  render: ({ rowIndex }) => createButtonHtml({
314
323
  button: "rowMenu",
315
- value: rowIndex.toString()
324
+ value: rowIndex.toString(),
325
+ testId: "table-row-menu-button"
316
326
  })
317
327
  },
318
328
  addColumn: {
@@ -320,7 +330,8 @@ var tableButtons = {
320
330
  icon: ICONS.newColumn,
321
331
  render: ({ disabled } = {}) => createButtonHtml({
322
332
  button: "newColumn",
323
- disabled
333
+ disabled,
334
+ testId: "table-new-column-button"
324
335
  })
325
336
  }
326
337
  };
@@ -471,7 +482,7 @@ var frozen = {
471
482
  var TableRoot = ({ children, role }) => {
472
483
  return /* @__PURE__ */ React5.createElement("div", {
473
484
  role: "none",
474
- className: mx("relative border-bs !border-separator", role === "section" ? "attention-surface overflow-hidden [&_.dx-grid]:max-is-max" : "flex flex-col [&_.dx-grid]:grow [&_.dx-grid]:max-is-max [&_.dx-grid]:bs-0 [&_.dx-grid]:max-bs-max")
485
+ 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
486
  }, children);
476
487
  };
477
488
  var TableMain = /* @__PURE__ */ forwardRef(({ model, ignoreAttention }, forwardedRef) => {
@@ -847,7 +858,7 @@ var checkboxAttributes = {
847
858
  var renderCheckbox = ({ rowIndex, header = false, checked = false, disabled = false }) => {
848
859
  const baseClasses = "absolute inset-block-[6px] inline-end-[6px] ch-checkbox";
849
860
  const { attributes } = tableControls.checkbox;
850
- return `<input type="checkbox" class="${baseClasses}" ${attributes.checkbox}="${rowIndex}" ${header ? attributes.header : ""} ${checked ? "checked" : ""} ${disabled ? "disabled" : ""}/>`;
861
+ return `<input type="checkbox" class="${baseClasses}" ${attributes.checkbox}="${rowIndex}" ${header ? attributes.header : ""} ${checked ? "checked" : ""} ${disabled ? "disabled" : ""} data-testid="table-selection"/>`;
851
862
  };
852
863
  var tableControls = {
853
864
  checkbox: {