@dxos/react-ui-table 0.4.10-main.ef6fbc2 → 0.4.10-main.f635fb0

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 (66) hide show
  1. package/dist/lib/browser/index.mjs +477 -308
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/components/{ColumnMenu.d.ts → ColumnMenu/ColumnMenu.d.ts} +1 -1
  5. package/dist/types/src/components/ColumnMenu/ColumnMenu.d.ts.map +1 -0
  6. package/dist/types/src/components/{ColumnMenu.stories.d.ts → ColumnMenu/ColumnMenu.stories.d.ts} +6 -2
  7. package/dist/types/src/components/ColumnMenu/ColumnMenu.stories.d.ts.map +1 -0
  8. package/dist/types/src/components/{ColumnSettingsForm.d.ts → ColumnMenu/ColumnSettingsForm.d.ts} +5 -4
  9. package/dist/types/src/components/ColumnMenu/ColumnSettingsForm.d.ts.map +1 -0
  10. package/dist/types/src/components/ColumnMenu/index.d.ts +3 -0
  11. package/dist/types/src/components/ColumnMenu/index.d.ts.map +1 -0
  12. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  13. package/dist/types/src/components/Table/Table.stories.d.ts +3 -0
  14. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  15. package/dist/types/src/components/index.d.ts +1 -1
  16. package/dist/types/src/components/index.d.ts.map +1 -1
  17. package/dist/types/src/hooks/index.d.ts +3 -0
  18. package/dist/types/src/hooks/index.d.ts.map +1 -0
  19. package/dist/types/src/hooks/useColumnSorting.d.ts.map +1 -0
  20. package/dist/types/src/hooks/usePinLastRow.d.ts +3 -0
  21. package/dist/types/src/hooks/usePinLastRow.d.ts.map +1 -0
  22. package/dist/types/src/index.d.ts +2 -1
  23. package/dist/types/src/index.d.ts.map +1 -1
  24. package/dist/types/src/schema/SchemaToTable.stories.d.ts.map +1 -0
  25. package/dist/types/src/schema/index.d.ts +3 -0
  26. package/dist/types/src/schema/index.d.ts.map +1 -0
  27. package/dist/types/src/{components/schema → schema}/schema.d.ts +1 -1
  28. package/dist/types/src/schema/schema.d.ts.map +1 -0
  29. package/dist/types/src/schema/schema.test.d.ts.map +1 -0
  30. package/dist/types/src/{components/schema → schema}/schemaToColumns.d.ts +1 -1
  31. package/dist/types/src/schema/schemaToColumns.d.ts.map +1 -0
  32. package/dist/types/src/{schema.d.ts → schema/types.d.ts} +1 -1
  33. package/dist/types/src/schema/types.d.ts.map +1 -0
  34. package/package.json +15 -15
  35. package/src/components/{ColumnMenu.stories.tsx → ColumnMenu/ColumnMenu.stories.tsx} +31 -1
  36. package/src/components/{ColumnMenu.tsx → ColumnMenu/ColumnMenu.tsx} +2 -2
  37. package/src/components/{ColumnSettingsForm.tsx → ColumnMenu/ColumnSettingsForm.tsx} +83 -75
  38. package/src/components/ColumnMenu/index.ts +6 -0
  39. package/src/components/Table/Table.stories.tsx +58 -3
  40. package/src/components/Table/Table.tsx +24 -9
  41. package/src/components/index.ts +1 -1
  42. package/src/hooks/index.ts +6 -0
  43. package/src/hooks/usePinLastRow.ts +64 -0
  44. package/src/index.ts +3 -1
  45. package/src/{components/schema → schema}/SchemaToTable.stories.tsx +2 -2
  46. package/src/schema/index.ts +6 -0
  47. package/src/{components/schema → schema}/schema.test.ts +1 -1
  48. package/src/{components/schema → schema}/schema.ts +37 -41
  49. package/src/{components/schema → schema}/schemaToColumns.ts +7 -9
  50. package/dist/types/src/components/ColumnMenu.d.ts.map +0 -1
  51. package/dist/types/src/components/ColumnMenu.stories.d.ts.map +0 -1
  52. package/dist/types/src/components/ColumnSettingsForm.d.ts.map +0 -1
  53. package/dist/types/src/components/hooks/useColumnSorting.d.ts.map +0 -1
  54. package/dist/types/src/components/hooks/usePinLastRow.d.ts +0 -3
  55. package/dist/types/src/components/hooks/usePinLastRow.d.ts.map +0 -1
  56. package/dist/types/src/components/schema/SchemaToTable.stories.d.ts.map +0 -1
  57. package/dist/types/src/components/schema/schema.d.ts.map +0 -1
  58. package/dist/types/src/components/schema/schema.test.d.ts.map +0 -1
  59. package/dist/types/src/components/schema/schemaToColumns.d.ts.map +0 -1
  60. package/dist/types/src/schema.d.ts.map +0 -1
  61. package/src/components/hooks/usePinLastRow.ts +0 -43
  62. /package/dist/types/src/{components/hooks → hooks}/useColumnSorting.d.ts +0 -0
  63. /package/dist/types/src/{components/schema → schema}/SchemaToTable.stories.d.ts +0 -0
  64. /package/dist/types/src/{components/schema → schema}/schema.test.d.ts +0 -0
  65. /package/src/{components/hooks → hooks}/useColumnSorting.ts +0 -0
  66. /package/src/{schema.ts → schema/types.ts} +0 -0
@@ -2,22 +2,21 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import type * as S from '@effect/schema/Schema';
6
5
  import { type ColumnDef } from '@tanstack/react-table';
7
6
 
7
+ import type { S } from '@dxos/echo-schema';
8
+
8
9
  import { classifySchemaProperties } from './schema';
9
- import { createColumnBuilder } from '../../helpers';
10
+ import { createColumnBuilder } from '../helpers';
10
11
 
11
12
  export const schemaToColumnDefs = <T>(schema: S.Schema<T, any>): ColumnDef<T, any>[] => {
12
- const classified = classifySchemaProperties(schema);
13
-
14
13
  const { helper, builder } = createColumnBuilder<T>();
15
14
 
15
+ const classified = classifySchemaProperties(schema);
16
16
  return classified.map(([name, type]) => {
17
17
  const propertyKey = name.toString();
18
18
 
19
19
  let column: Partial<ColumnDef<any, any>> | undefined;
20
-
21
20
  switch (type) {
22
21
  case 'string': {
23
22
  column = builder.string({ label: propertyKey });
@@ -39,10 +38,9 @@ export const schemaToColumnDefs = <T>(schema: S.Schema<T, any>): ColumnDef<T, an
39
38
  column = builder.display({ label: propertyKey, id: propertyKey });
40
39
  break;
41
40
  }
42
- }
43
-
44
- if (column === undefined) {
45
- throw new Error(`Unhandled column type: ${type}`);
41
+ default: {
42
+ throw new Error(`Unhandled column type: ${type}`);
43
+ }
46
44
  }
47
45
 
48
46
  return helper.accessor(propertyKey as any, column);
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/ColumnMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAQ7F,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,IAAI;IAC3D,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,UAAU,sGAqFtB,CAAC;AAEF,eAAO,MAAM,mBAAmB;aAOe,MAAM,IAAI;iBAkBxD,CAAC;AAEF,eAAO,MAAM,aAAa;eAIb,aAAa,GAAG,KAAK;iBACnB,GAAG,KAAK,IAAI;wBAsB1B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnMenu.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/ColumnMenu.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAQpB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;;;;;;AAE7C,wBAIE;AAEF,eAAO,MAAM,OAAO;;;;;;;2CAUa,OAAO;;;;;;;yBAY5B,GAAG;;;;CASd,CAAC;AAEF,eAAO,MAAM,YAAY;;CA2CxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnSettingsForm.d.ts","sourceRoot":"","sources":["../../../../src/components/ColumnSettingsForm.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAmB,MAAM,WAAW,CAAC;AAS7E,eAAO,MAAM,kBAAkB;YAQrB,WAAW;cACT,QAAQ;eACP,QAAQ,EAAE;qBACJ,MAAM,UAAU,WAAW,KAAK,IAAI;qBACpC,MAAM,KAAK,IAAI;aACvB,MAAM,IAAI;iBA4KpB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useColumnSorting.d.ts","sourceRoot":"","sources":["../../../../../src/components/hooks/useColumnSorting.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGxE,eAAO,MAAM,gBAAgB,WAAY,OAAO,GAAG,CAAC;;;8BAoCjB,aAAa;;;CAU/C,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type Table } from '@tanstack/react-table';
2
- export declare const usePinLastRow: (pinLastRow: boolean | undefined, table: Table<any>, data: any, getScrollElement?: () => Element | null) => void;
3
- //# sourceMappingURL=usePinLastRow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePinLastRow.d.ts","sourceRoot":"","sources":["../../../../../src/components/hooks/usePinLastRow.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,eAAO,MAAM,aAAa,eACZ,OAAO,GAAG,SAAS,SACxB,MAAM,GAAG,CAAC,QACX,GAAG,qBACU,MAAM,OAAO,GAAG,IAAI,SA+BxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaToTable.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/schema/SchemaToTable.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;;;;;;AAapB,wBAWE;AAuBF,eAAO,MAAM,WAAW;;CAoBvB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/components/schema/schema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,SAAS,CAAC;AA4D1D,eAAO,MAAM,wBAAwB,WAAY,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,qCA0BlE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/schema/schema.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemaToColumns.d.ts","sourceRoot":"","sources":["../../../../../src/components/schema/schemaToColumns.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKvD,eAAO,MAAM,kBAAkB,6DAuC9B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/schema.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
@@ -1,43 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type Table } from '@tanstack/react-table';
6
- import { useEffect, useState } from 'react';
7
-
8
- export const usePinLastRow = (
9
- pinLastRow: boolean | undefined,
10
- table: Table<any>,
11
- data: any,
12
- getScrollElement?: () => Element | null,
13
- ) => {
14
- const [pinnedRowKey, setPinnedRowKey] = useState<string>();
15
-
16
- useEffect(() => {
17
- if (!pinLastRow) {
18
- return;
19
- }
20
-
21
- const rows = table.getRowModel().rows;
22
- const rowToPin = rows[rows.length - 1];
23
- const rowId = rowToPin.id;
24
-
25
- if (rowId === pinnedRowKey) {
26
- return;
27
- }
28
-
29
- table.resetRowPinning();
30
- rowToPin.pin('bottom');
31
-
32
- const scrollElement = getScrollElement?.();
33
- const isFirstRender = pinnedRowKey === undefined;
34
-
35
- if (scrollElement && !isFirstRender) {
36
- requestAnimationFrame(() => {
37
- scrollElement.scrollTo({ top: scrollElement.scrollHeight });
38
- });
39
- }
40
-
41
- setPinnedRowKey(rowId);
42
- }, [pinLastRow, table, getScrollElement, pinnedRowKey, setPinnedRowKey, data]);
43
- };
File without changes