@dxos/react-ui-table 0.3.8-next.f4e0086 → 0.3.9-main.03b62b6

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 (65) hide show
  1. package/dist/lib/browser/index.mjs +605 -532
  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/Cell/Cell.d.ts +12 -0
  5. package/dist/types/src/components/Cell/Cell.d.ts.map +1 -0
  6. package/dist/types/src/components/{ComboboxCell.d.ts → Cell/CellCombobox.d.ts} +4 -4
  7. package/dist/types/src/components/Cell/CellCombobox.d.ts.map +1 -0
  8. package/dist/types/src/components/Cell/index.d.ts +2 -0
  9. package/dist/types/src/components/Cell/index.d.ts.map +1 -0
  10. package/dist/types/src/components/ColumnMenu.d.ts.map +1 -1
  11. package/dist/types/src/components/Table/Table.d.ts +3 -0
  12. package/dist/types/src/components/Table/Table.d.ts.map +1 -0
  13. package/dist/types/src/components/{Table.stories.d.ts → Table/Table.stories.d.ts} +4 -7
  14. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -0
  15. package/dist/types/src/components/Table/TableBody.d.ts +11 -0
  16. package/dist/types/src/components/Table/TableBody.d.ts.map +1 -0
  17. package/dist/types/src/components/Table/TableContext.d.ts +14 -0
  18. package/dist/types/src/components/Table/TableContext.d.ts.map +1 -0
  19. package/dist/types/src/components/Table/TableFooter.d.ts +7 -0
  20. package/dist/types/src/components/Table/TableFooter.d.ts.map +1 -0
  21. package/dist/types/src/components/Table/TableHead.d.ts +8 -0
  22. package/dist/types/src/components/Table/TableHead.d.ts.map +1 -0
  23. package/dist/types/src/components/Table/index.d.ts +3 -0
  24. package/dist/types/src/components/Table/index.d.ts.map +1 -0
  25. package/dist/types/src/components/Table/props.d.ts +40 -0
  26. package/dist/types/src/components/Table/props.d.ts.map +1 -0
  27. package/dist/types/src/components/index.d.ts +1 -1
  28. package/dist/types/src/components/index.d.ts.map +1 -1
  29. package/dist/types/src/helpers.d.ts +21 -15
  30. package/dist/types/src/helpers.d.ts.map +1 -1
  31. package/dist/types/src/index.d.ts +1 -0
  32. package/dist/types/src/index.d.ts.map +1 -1
  33. package/dist/types/src/schema.d.ts +0 -1
  34. package/dist/types/src/schema.d.ts.map +1 -1
  35. package/dist/types/src/theme.d.ts +30 -33
  36. package/dist/types/src/theme.d.ts.map +1 -1
  37. package/dist/types/src/translations.d.ts +11 -0
  38. package/dist/types/src/translations.d.ts.map +1 -1
  39. package/dist/types/src/types.d.ts +13 -10
  40. package/dist/types/src/types.d.ts.map +1 -1
  41. package/package.json +12 -10
  42. package/src/components/Cell/Cell.tsx +43 -0
  43. package/src/components/{ComboboxCell.tsx → Cell/CellCombobox.tsx} +6 -6
  44. package/src/components/Cell/index.ts +5 -0
  45. package/src/components/ColumnMenu.tsx +16 -16
  46. package/src/components/{Table.stories.tsx → Table/Table.stories.tsx} +51 -51
  47. package/src/components/Table/Table.tsx +184 -0
  48. package/src/components/Table/TableBody.tsx +70 -0
  49. package/src/components/Table/TableContext.tsx +28 -0
  50. package/src/components/Table/TableFooter.tsx +42 -0
  51. package/src/components/Table/TableHead.tsx +79 -0
  52. package/src/components/Table/index.ts +6 -0
  53. package/src/components/Table/props.ts +58 -0
  54. package/src/components/index.ts +1 -1
  55. package/src/helpers.tsx +289 -219
  56. package/src/index.ts +1 -0
  57. package/src/schema.ts +0 -8
  58. package/src/theme.ts +102 -63
  59. package/src/translations.ts +11 -0
  60. package/src/types.ts +15 -10
  61. package/dist/types/src/components/ComboboxCell.d.ts.map +0 -1
  62. package/dist/types/src/components/Table.d.ts +0 -29
  63. package/dist/types/src/components/Table.d.ts.map +0 -1
  64. package/dist/types/src/components/Table.stories.d.ts.map +0 -1
  65. package/src/components/Table.tsx +0 -551
@@ -0,0 +1,79 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { flexRender, type RowData } from '@tanstack/react-table';
6
+ import React from 'react';
7
+
8
+ import { mx } from '@dxos/react-ui-theme';
9
+
10
+ import { useTableContext } from './TableContext';
11
+ import { theadResizeRoot, theadResizeThumb, theadRoot, theadTh, theadTr } from '../../theme';
12
+
13
+ const TABLE_HEAD_NAME = 'TableHead';
14
+
15
+ type TableHeadProps = {};
16
+
17
+ const TableHead = <TData extends RowData>(_props: TableHeadProps) => {
18
+ const tableContext = useTableContext<TData>(TABLE_HEAD_NAME);
19
+ const headerGroups = tableContext.table.getHeaderGroups();
20
+ const state = tableContext.table.getState();
21
+ return (
22
+ <thead className={theadRoot(tableContext)}>
23
+ {headerGroups.map((headerGroup) => {
24
+ return (
25
+ // Group element to hover resize handles.
26
+ <tr key={headerGroup.id} className={theadTr(tableContext)}>
27
+ {/* TODO(burdon): Calc. width. */}
28
+ {tableContext.debug && (
29
+ <th className='font-mono' style={{ width: 32 }}>
30
+ #
31
+ </th>
32
+ )}
33
+
34
+ {headerGroup.headers.map((header) => {
35
+ const isResizing = header.column.getIsResizing();
36
+ return (
37
+ <th
38
+ key={header.id}
39
+ style={{
40
+ width: header.getSize(),
41
+ }}
42
+ className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}
43
+ >
44
+ {!header || header.isPlaceholder
45
+ ? null
46
+ : flexRender(header.column.columnDef.header, header.getContext())}
47
+
48
+ {/*
49
+ * Resize handle.
50
+ * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing
51
+ */}
52
+ {header.column.columnDef.meta?.resizable && (
53
+ <div
54
+ className={theadResizeRoot(tableContext, isResizing && 'hidden')}
55
+ style={{
56
+ transform: `translateX(${isResizing ? state.columnSizingInfo.deltaOffset : 0}px)`,
57
+ }}
58
+ onMouseDown={header.getResizeHandler()}
59
+ onTouchStart={header.getResizeHandler()}
60
+ >
61
+ <div className={mx(theadResizeThumb(tableContext))} />
62
+ </div>
63
+ )}
64
+ </th>
65
+ );
66
+ })}
67
+ {tableContext.expand && <th />}
68
+ </tr>
69
+ );
70
+ })}
71
+ </thead>
72
+ );
73
+ };
74
+
75
+ TableHead.displayName = TABLE_HEAD_NAME;
76
+
77
+ export { TableHead };
78
+
79
+ export type { TableHeadProps };
@@ -0,0 +1,6 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './Table';
6
+ export * from './props';
@@ -0,0 +1,58 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type RowData, type RowSelectionState, type Table, type VisibilityState } from '@tanstack/react-table';
6
+
7
+ import { type ClassNameValue } from '@dxos/react-ui-types';
8
+
9
+ import { type KeyValue, type TableColumnDef } from '../../types';
10
+
11
+ export type TableFlags = Partial<{
12
+ role: 'table' | 'grid' | 'treegrid';
13
+ grouping: string[];
14
+ header: boolean;
15
+ footer: boolean;
16
+ border: boolean;
17
+ fullWidth: boolean;
18
+ debug: boolean;
19
+ expand: boolean;
20
+ stickyHeader: boolean;
21
+ rowsSelectable: boolean | 'multi';
22
+ }>;
23
+
24
+ /**
25
+ * This is ‘current’ in the `aria-current` sense.
26
+ */
27
+ export type TableCurrent<TData extends RowData> = Partial<{
28
+ // App state
29
+ currentDatum: TData;
30
+ onDatumClick: (datum: TData) => void;
31
+ }>;
32
+
33
+ export type TableProps<TData extends RowData> = TableFlags &
34
+ TableCurrent<TData> &
35
+ Partial<{
36
+ keyAccessor: KeyValue<TData>;
37
+ data: TData[];
38
+ columns: TableColumnDef<TData>[];
39
+ onColumnResize: (state: Record<string, number>) => void;
40
+ columnVisibility: VisibilityState;
41
+ // Controllable row selection
42
+ rowSelection: RowSelectionState;
43
+ defaultRowSelection: RowSelectionState;
44
+ onRowSelectionChange: (rowSelection: RowSelectionState) => void;
45
+ // Derived from row selection
46
+ onDataSelectionChange: (dataSelection: TData[]) => void;
47
+ // `table` element props
48
+ classNames: ClassNameValue;
49
+ }>;
50
+
51
+ export type { RowSelectionState, VisibilityState, TableColumnDef, KeyValue };
52
+
53
+ export type TableContextValue<TData extends RowData> = TableFlags &
54
+ TableCurrent<TData> &
55
+ Pick<TableProps<TData>, 'keyAccessor'> & {
56
+ table: Table<TData>;
57
+ isGrid: boolean;
58
+ };
@@ -4,4 +4,4 @@
4
4
 
5
5
  export * from './ColumnMenu';
6
6
  export * from './Table';
7
- export * from './ComboboxCell';
7
+ export * from './Cell';