@dxos/react-ui-table 0.4.7-next.f4b92be → 0.4.8-main.00e6f19

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.
@@ -93,4 +93,7 @@ export declare const Editable: {
93
93
  export declare const Resizable: {
94
94
  render: () => JSX.Element;
95
95
  };
96
+ export declare const TenThousandRows: {
97
+ render: () => JSX.Element;
98
+ };
96
99
  //# sourceMappingURL=Table.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAMpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;4BAwGsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAL5B,wBAkDE;AAEF,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;CAMtB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,OAAO;;CA+BnB,CAAC;AAEF,eAAO,MAAM,QAAQ;;CAwBpB,CAAC;AAEF,eAAO,MAAM,SAAS;;CAuBrB,CAAC"}
1
+ {"version":3,"file":"Table.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/Table.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAMpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;4BA4FsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAL5B,wBAuCE;AAEF,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;CAKrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;CAMtB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;CAIjB,CAAC;AAEF,eAAO,MAAM,OAAO;;CAmCnB,CAAC;AAEF,eAAO,MAAM,QAAQ;;CA4BpB,CAAC;AAEF,eAAO,MAAM,SAAS;;CAyBrB,CAAC;AAEF,eAAO,MAAM,eAAe;;CA4B3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const selectedRow = "!bg-primary-100 dark:!bg-primary-700";
6
6
  export declare const flushPadding = "pli-0 plb-0";
7
7
  export declare const textPadding = "pli-2 plb-0.5";
8
8
  export declare const headPadding = "pli-2 plb-1.5";
9
- export declare const gridCellFocusRing = "focus:z-[11] focus:outline outline-2 outline-primary-500 dark:outline-primary-400";
9
+ export declare const gridCellFocusRing = "focus-within:z-[11] focus-within:outline outline-2 outline-primary-500 dark:outline-primary-400";
10
10
  export type TableStyleProps = Partial<TableContextValue<any>>;
11
11
  export declare const tableRoot: ComponentFunction<TableStyleProps>;
12
12
  export declare const groupTh: ComponentFunction<TableStyleProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,eAAO,MAAM,iBAAiB,sFAAsF,CAAC;AAMrH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAC4D,CAAC;AAEtH,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAOpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,eAAe,CAI5D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC;AAMzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACpE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAOtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAC/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACJ,CAAC;AAEtD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACO,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWzD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvE,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,eAAO,MAAM,WAAW,yCAAyC,CAAC;AAClE,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAC3C,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,eAAO,MAAM,iBAAiB,oGACqE,CAAC;AAMpG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACN,CAAC;AAEpD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACH,CAAC;AAMrD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAC4D,CAAC;AAEtH,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAA2C,CAAC;AAEnG,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAOpD,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,eAAe,CAI5D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,eAAe,CACQ,CAAC;AAMzE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACpE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAOtD,CAAC;AAMJ,eAAO,MAAM,MAAM,EAAE,iBAAiB,CAAC,eAAe,CACwD,CAAC;AAE/G,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAkC,CAAC;AAMlG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,eAAe,CACJ,CAAC;AAEtD,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAkC,CAAC;AAE1F,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,eAAe,CACO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-table",
3
- "version": "0.4.7-next.f4b92be",
3
+ "version": "0.4.8-main.00e6f19",
4
4
  "description": "A table component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -22,27 +22,28 @@
22
22
  "@tanstack/react-table": "^8.9.3",
23
23
  "@tanstack/react-virtual": "^3.0.1",
24
24
  "date-fns": "^3.3.1",
25
- "@dxos/async": "0.4.7-next.f4b92be",
26
- "@dxos/keys": "0.4.7-next.f4b92be",
27
- "@dxos/react-ui-searchlist": "0.4.7-next.f4b92be",
28
- "@dxos/invariant": "0.4.7-next.f4b92be",
29
- "@dxos/react-ui-theme": "0.4.7-next.f4b92be",
30
- "@dxos/react-ui": "0.4.7-next.f4b92be",
31
- "@dxos/react-ui-types": "0.4.7-next.f4b92be",
32
- "@dxos/util": "0.4.7-next.f4b92be"
25
+ "@dxos/async": "0.4.8-main.00e6f19",
26
+ "@dxos/invariant": "0.4.8-main.00e6f19",
27
+ "@dxos/log": "0.4.8-main.00e6f19",
28
+ "@dxos/react-ui": "0.4.8-main.00e6f19",
29
+ "@dxos/keys": "0.4.8-main.00e6f19",
30
+ "@dxos/react-ui-theme": "0.4.8-main.00e6f19",
31
+ "@dxos/react-ui-searchlist": "0.4.8-main.00e6f19",
32
+ "@dxos/react-ui-types": "0.4.8-main.00e6f19",
33
+ "@dxos/util": "0.4.8-main.00e6f19"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@phosphor-icons/react": "^2.0.5",
36
37
  "@types/react": "^18.0.21",
37
38
  "@types/react-dom": "^18.0.6",
38
- "deepsignal": "^1.5.0",
39
39
  "react": "^18.2.0",
40
40
  "react-dom": "^18.2.0",
41
- "vite": "^5.1.3",
41
+ "vite": "^5.1.5",
42
42
  "vite-plugin-turbosnap": "^1.0.2",
43
- "@dxos/react-ui-theme": "0.4.7-next.f4b92be",
44
- "@dxos/storybook-utils": "0.4.7-next.f4b92be",
45
- "@dxos/random": "0.4.7-next.f4b92be"
43
+ "@dxos/echo-schema": "0.4.8-main.00e6f19",
44
+ "@dxos/storybook-utils": "0.4.8-main.00e6f19",
45
+ "@dxos/random": "0.4.8-main.00e6f19",
46
+ "@dxos/react-ui-theme": "0.4.8-main.00e6f19"
46
47
  },
47
48
  "peerDependencies": {
48
49
  "@phosphor-icons/react": "^2.0.5",
@@ -18,8 +18,11 @@ const CELL_NAME = 'Cell';
18
18
  const FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {
19
19
  const tableContext = useTableContext(CELL_NAME);
20
20
  const domAttributes = useFocusableGroup({ tabBehavior: 'limited' });
21
+
22
+ const className = tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames);
23
+
21
24
  return (
22
- <td tabIndex={0} {...domAttributes} className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>
25
+ <td tabIndex={0} {...domAttributes} className={className}>
23
26
  {children}
24
27
  </td>
25
28
  );
@@ -5,12 +5,12 @@
5
5
  import '@dxosTheme';
6
6
 
7
7
  import { Plugs, PlugsConnected } from '@phosphor-icons/react';
8
- import { deepSignal } from 'deepsignal/react';
9
- import React, { useEffect, useRef, useState } from 'react';
8
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
10
9
 
10
+ import * as E from '@dxos/echo-schema/schema';
11
11
  import { PublicKey } from '@dxos/keys';
12
12
  import { faker } from '@dxos/random';
13
- import { DensityProvider, AnchoredOverflow } from '@dxos/react-ui';
13
+ import { AnchoredOverflow, DensityProvider } from '@dxos/react-ui';
14
14
  import { withTheme } from '@dxos/storybook-utils';
15
15
  import { range } from '@dxos/util';
16
16
 
@@ -35,7 +35,7 @@ faker.seed(911);
35
35
  const createItems = (count: number) =>
36
36
  range(count).map(
37
37
  () =>
38
- deepSignal<Item>({
38
+ E.object<Item>({
39
39
  publicKey: PublicKey.random(),
40
40
  name: faker.commerce.productName(),
41
41
  count: faker.datatype.boolean({ probability: 0.9 }) ? faker.number.int({ min: 0, max: 10_000 }) : undefined,
@@ -72,7 +72,7 @@ const tableStorySelectModel: SearchListQueryModel<Item> = {
72
72
 
73
73
  const { helper, builder } = createColumnBuilder<Item>();
74
74
 
75
- const columns = (onUpdate?: ValueUpdater<Item, any>): TableColumnDef<Item, any>[] => [
75
+ const makeColumns = (onUpdate?: ValueUpdater<Item, any>): TableColumnDef<Item, any>[] => [
76
76
  helper.display(builder.selectRow()),
77
77
  helper.accessor((item) => item.publicKey, { id: 'key', ...builder.key({ tooltip: true }) }),
78
78
  helper.accessor(
@@ -90,26 +90,14 @@ const columns = (onUpdate?: ValueUpdater<Item, any>): TableColumnDef<Item, any>[
90
90
  builder.number({
91
91
  label: 'Count',
92
92
  meta: { resizable: true },
93
- // TODO(burdon): Sorting.
94
- getGroupingValue: (row) => (row.count ? (row.count < 2_000 ? 'A' : row.count < 5_000 ? 'B' : 'C') : 'D'),
95
- }),
96
- ),
97
- helper.accessor(
98
- 'company',
99
- builder.combobox({
100
- label: 'Company',
101
- model: tableStorySelectModel,
102
93
  onUpdate,
94
+ getGroupingValue: (row) => (row.count ? (row.count < 2000 ? 'A' : row.count < 5000 ? 'B' : 'C') : 'D'),
103
95
  }),
104
96
  ),
97
+ helper.accessor('company', builder.combobox({ label: 'Company', model: tableStorySelectModel, onUpdate })),
105
98
  helper.accessor(
106
99
  'complete',
107
- builder.switch({
108
- // enableGrouping: true,
109
- getGroupingValue: (row) => row.complete === true,
110
- label: '',
111
- onUpdate,
112
- }),
100
+ builder.switch({ getGroupingValue: (row) => row.complete === true, label: '', onUpdate }),
113
101
  ),
114
102
  helper.accessor('complete', builder.icon({ id: 'done', label: '' })),
115
103
  helper.accessor(
@@ -135,18 +123,10 @@ export default {
135
123
  keyAccessor: (item: Item) => item.publicKey.toHex(),
136
124
  },
137
125
  argTypes: {
138
- header: {
139
- control: 'boolean',
140
- },
141
- footer: {
142
- control: 'boolean',
143
- },
144
- border: {
145
- control: 'boolean',
146
- },
147
- fullWidth: {
148
- control: 'boolean',
149
- },
126
+ header: { control: 'boolean' },
127
+ footer: { control: 'boolean' },
128
+ border: { control: 'boolean' },
129
+ fullWidth: { control: 'boolean' },
150
130
  grouping: {
151
131
  control: 'select',
152
132
  options: ['none', 'complete', 'count'],
@@ -164,10 +144,7 @@ export default {
164
144
  limited: { key: false, started: false },
165
145
  },
166
146
  },
167
- rowsSelectable: {
168
- control: 'select',
169
- options: [false, true, 'multi'],
170
- },
147
+ rowsSelectable: { control: 'select', options: [false, true, 'multi'] },
171
148
  },
172
149
  decorators: [
173
150
  withTheme,
@@ -181,21 +158,21 @@ export default {
181
158
 
182
159
  export const Default = {
183
160
  args: {
184
- columns: columns(),
161
+ columns: makeColumns(),
185
162
  data: createItems(20),
186
163
  },
187
164
  };
188
165
 
189
166
  export const Scrolling = {
190
167
  args: {
191
- columns: columns(),
168
+ columns: makeColumns(),
192
169
  data: createItems(200),
193
170
  },
194
171
  };
195
172
 
196
173
  export const Visibility = {
197
174
  args: {
198
- columns: columns(),
175
+ columns: makeColumns(),
199
176
  data: createItems(10),
200
177
  columnVisibility: { key: false, started: false },
201
178
  },
@@ -203,7 +180,7 @@ export const Visibility = {
203
180
 
204
181
  export const Empty = {
205
182
  args: {
206
- columns: columns(),
183
+ columns: makeColumns(),
207
184
  },
208
185
  };
209
186
 
@@ -211,6 +188,7 @@ export const Dynamic = {
211
188
  render: () => {
212
189
  const containerRef = useRef<HTMLDivElement | null>(null);
213
190
  const [items, setItems] = useState<Item[]>(createItems(50));
191
+
214
192
  useEffect(() => {
215
193
  const interval = setInterval(() => {
216
194
  setItems((items) => {
@@ -222,12 +200,15 @@ export const Dynamic = {
222
200
  }, 500);
223
201
  return () => clearInterval(interval);
224
202
  }, []);
203
+
204
+ const columns = useMemo(() => makeColumns(), []);
205
+
225
206
  return (
226
207
  <AnchoredOverflow.Root classNames='max-bs-[80dvh]' ref={containerRef}>
227
208
  <Table<Item>
228
209
  rowsSelectable='multi'
229
210
  keyAccessor={(row) => row.publicKey.toHex()}
230
- columns={columns()}
211
+ columns={columns}
231
212
  data={items}
232
213
  fullWidth
233
214
  footer
@@ -244,9 +225,13 @@ export const Editable = {
244
225
  render: () => {
245
226
  const containerRef = useRef<HTMLDivElement | null>(null);
246
227
  const [items, setItems] = useState<Item[]>(createItems(200));
247
- const onUpdate: ValueUpdater<Item, any> = (item, prop, value) => {
248
- setItems((items) => updateItems(items, item.publicKey, prop, value));
249
- };
228
+
229
+ const onUpdate: ValueUpdater<Item, any> = useCallback(
230
+ (item, prop, value) => setItems((items) => updateItems(items, item.publicKey, prop, value)),
231
+ [setItems],
232
+ );
233
+
234
+ const columns = useMemo(() => makeColumns(onUpdate), [onUpdate]);
250
235
 
251
236
  return (
252
237
  <div ref={containerRef} className='fixed inset-0 overflow-auto'>
@@ -254,7 +239,7 @@ export const Editable = {
254
239
  role='grid'
255
240
  rowsSelectable='multi'
256
241
  keyAccessor={(row) => row.publicKey.toHex()}
257
- columns={columns(onUpdate)}
242
+ columns={columns}
258
243
  data={items}
259
244
  fullWidth
260
245
  stickyHeader
@@ -268,25 +253,57 @@ export const Editable = {
268
253
 
269
254
  export const Resizable = {
270
255
  render: () => {
256
+ const containerRef = useRef<HTMLDivElement | null>(null);
271
257
  const [items, setItems] = useState<Item[]>(createItems(10));
272
- const onUpdate: ValueUpdater<Item, any> = (item, prop, value) => {
273
- setItems((items) => updateItems(items, item.publicKey, prop, value));
274
- };
275
258
 
276
- // const handleColumnResize = (state) => {
277
- // console.log('resize', state);
278
- // };
259
+ const onUpdate: ValueUpdater<Item, any> = useCallback(
260
+ (item, prop, value) => setItems((items) => updateItems(items, item.publicKey, prop, value)),
261
+ [setItems],
262
+ );
279
263
 
280
264
  return (
281
- <Table<Item>
282
- rowsSelectable='multi'
283
- keyAccessor={(row) => row.publicKey.toHex()}
284
- columns={columns(onUpdate)}
285
- data={items}
286
- fullWidth
287
- stickyHeader
288
- // onColumnResize={handleColumnResize}
289
- />
265
+ <div ref={containerRef} className='fixed inset-0 overflow-auto'>
266
+ <Table<Item>
267
+ rowsSelectable='multi'
268
+ keyAccessor={(row) => row.publicKey.toHex()}
269
+ columns={makeColumns(onUpdate)}
270
+ data={items}
271
+ fullWidth
272
+ stickyHeader
273
+ getScrollElement={() => containerRef.current}
274
+ // onColumnResize={handleColumnResize}
275
+ />
276
+ </div>
277
+ );
278
+ },
279
+ };
280
+
281
+ export const TenThousandRows = {
282
+ render: () => {
283
+ const containerRef = useRef<HTMLDivElement | null>(null);
284
+ const [items, setItems] = useState<Item[]>(createItems(10000));
285
+
286
+ const onUpdate: ValueUpdater<Item, any> = useCallback(
287
+ (item, prop, value) => setItems((items) => updateItems(items, item.publicKey, prop, value)),
288
+ [setItems],
289
+ );
290
+
291
+ const columns = useMemo(() => makeColumns(onUpdate), [onUpdate]);
292
+
293
+ return (
294
+ <div ref={containerRef} className='fixed inset-0 overflow-auto'>
295
+ <Table<Item>
296
+ role='grid'
297
+ rowsSelectable='multi'
298
+ keyAccessor={(row) => row.publicKey.toHex()}
299
+ columns={columns}
300
+ data={items}
301
+ fullWidth
302
+ stickyHeader
303
+ border
304
+ getScrollElement={() => containerRef.current}
305
+ />
306
+ </div>
290
307
  );
291
308
  },
292
309
  };
@@ -1,7 +1,6 @@
1
1
  //
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
-
5
4
  import { useControllableState } from '@radix-ui/react-use-controllable-state';
6
5
  import {
7
6
  getCoreRowModel,
@@ -18,6 +17,8 @@ import { useVirtualizer, type VirtualizerOptions } from '@tanstack/react-virtual
18
17
  import React, { Fragment, useCallback, useEffect, useState } from 'react';
19
18
 
20
19
  import { debounce } from '@dxos/async';
20
+ import { log } from '@dxos/log';
21
+ import { useDefaultValue } from '@dxos/react-ui';
21
22
 
22
23
  import { TableBody } from './TableBody';
23
24
  import { TableProvider as UntypedTableProvider, type TypedTableProvider, useTableContext } from './TableContext';
@@ -29,25 +30,23 @@ import { groupTh, tableRoot } from '../../theme';
29
30
  export const Table = <TData extends RowData>(props: TableProps<TData>) => {
30
31
  const {
31
32
  role,
32
- data = [],
33
- columns = [],
34
33
  onColumnResize,
35
34
  columnVisibility,
36
35
  header = true,
37
36
  rowsSelectable,
38
37
  debug,
39
38
  onDataSelectionChange,
39
+ getScrollElement,
40
40
  } = props;
41
41
 
42
- const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;
42
+ const columns = useDefaultValue(props.columns, []);
43
+ const data = useDefaultValue(props.data, []);
43
44
 
44
- //
45
- // Column resizing
46
- //
45
+ const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;
47
46
 
48
47
  const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});
48
+
49
49
  useEffect(() => {
50
- // Set initial state.
51
50
  setColumnSizing(
52
51
  columns
53
52
  .filter((column) => !!column.size && (column as any).prop !== undefined)
@@ -56,19 +55,9 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
56
55
  return state;
57
56
  }, {}),
58
57
  );
59
- }, [columns]);
58
+ }, [columns, setColumnSizing]);
60
59
 
61
60
  const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);
62
- const onColumnResizeDebounced = onColumnResize && debounce<ColumnSizingState>(onColumnResize, 1_000);
63
- useEffect(() => {
64
- if (columnSizingInfo.columnSizingStart?.length === 0) {
65
- onColumnResizeDebounced?.(table.getState().columnSizing);
66
- }
67
- }, [columnSizingInfo]);
68
-
69
- //
70
- // Row selection
71
- //
72
61
 
73
62
  const [rowSelection = {}, setRowSelection] = useControllableState({
74
63
  prop: props.rowSelection,
@@ -76,10 +65,6 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
76
65
  defaultProp: props.defaultRowSelection,
77
66
  });
78
67
 
79
- useEffect(() => {
80
- onDataSelectionChange?.(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));
81
- }, [onDataSelectionChange, rowSelection]);
82
-
83
68
  // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...
84
69
  const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(
85
70
  (updaterOrValue) => {
@@ -93,15 +78,11 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
93
78
  setRowSelection({});
94
79
  }
95
80
  },
96
- [rowSelection, setRowSelection],
81
+ [rowsSelectable, setRowSelection, rowSelection],
97
82
  );
98
83
 
99
- //
100
- // Row grouping
101
- //
102
-
103
84
  const [grouping, handleGroupingChange] = useState<GroupingState>(props.grouping ?? []);
104
- useEffect(() => handleGroupingChange(props.grouping ?? []), [props.grouping]);
85
+ useEffect(() => handleGroupingChange(props.grouping ?? []), [handleGroupingChange, props.grouping]);
105
86
 
106
87
  const table = useReactTable({
107
88
  // Data
@@ -137,21 +118,36 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
137
118
  getGroupedRowModel: grouping.length > 1 ? getGroupedRowModel() : undefined,
138
119
  onGroupingChange: handleGroupingChange,
139
120
 
140
- // Selection
141
- ...(rowsSelectable === 'multi'
142
- ? { enableMultiRowSelection: true }
143
- : rowsSelectable
144
- ? { enableRowSelection: true }
145
- : {}),
121
+ enableMultiRowSelection: rowsSelectable === 'multi' ? true : undefined,
122
+ enableRowSelection: rowsSelectable === true ? true : undefined,
123
+
146
124
  onRowSelectionChange: handleRowSelectionChange,
147
125
 
148
126
  // Debug
149
127
  debugTable: debug,
150
128
  });
151
129
 
130
+ const onColumnResizeDebounced = onColumnResize && debounce(onColumnResize, 1_000);
131
+
132
+ useEffect(() => {
133
+ onDataSelectionChange?.(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));
134
+ }, [onDataSelectionChange, rowSelection, table]);
135
+
136
+ useEffect(() => {
137
+ const shouldTriggerResize = columnSizingInfo.columnSizingStart?.length === 0;
138
+
139
+ if (shouldTriggerResize) {
140
+ onColumnResizeDebounced?.(table.getState().columnSizing);
141
+ }
142
+ }, [columnSizingInfo, onColumnResizeDebounced, table]);
143
+
152
144
  // Create additional expansion column if all columns have fixed width.
153
145
  const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;
154
146
 
147
+ if (!getScrollElement) {
148
+ log.warn('Table: getScrollElement is not set. This is required for virtualized tables.');
149
+ }
150
+
155
151
  return (
156
152
  <TableProvider
157
153
  {...props}
@@ -160,7 +156,7 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
160
156
  expand={expand}
161
157
  isGrid={role === 'grid' || role === 'treegrid'}
162
158
  >
163
- <TableImpl<TData> debug={false} />
159
+ <TableImpl<TData> debug={false} getScrollElement={getScrollElement} {...props} />
164
160
  </TableProvider>
165
161
  );
166
162
  };
@@ -169,7 +165,7 @@ export const Table = <TData extends RowData>(props: TableProps<TData>) => {
169
165
  * Pure implementation of table outside of context set-up.
170
166
  */
171
167
  const TableImpl = <TData extends RowData>(props: TableProps<TData>) => {
172
- const { role, footer, grouping, getScrollElement, fullWidth, classNames, debug } = props;
168
+ const { debug, classNames, getScrollElement, role, footer, grouping, fullWidth } = props;
173
169
  const { table } = useTableContext<TData>('TableImpl');
174
170
  const { rows } = table.getRowModel();
175
171
 
@@ -181,6 +177,8 @@ const TableImpl = <TData extends RowData>(props: TableProps<TData>) => {
181
177
  );
182
178
  }
183
179
 
180
+ const isResizingColumn = table.getState().columnSizingInfo.isResizingColumn;
181
+
184
182
  return (
185
183
  <table
186
184
  role={role}
@@ -191,7 +189,11 @@ const TableImpl = <TData extends RowData>(props: TableProps<TData>) => {
191
189
 
192
190
  {grouping?.length !== 0 ? (
193
191
  getScrollElement ? (
194
- <VirtualizedTableContent getScrollElement={getScrollElement} />
192
+ isResizingColumn ? (
193
+ <MemoizedVirtualisedTableContent getScrollElement={getScrollElement} />
194
+ ) : (
195
+ <VirtualizedTableContent getScrollElement={getScrollElement} />
196
+ )
195
197
  ) : (
196
198
  <TableBody rows={rows} />
197
199
  )
@@ -210,14 +212,16 @@ const VirtualizedTableContent = ({
210
212
  const {
211
213
  table: { getRowModel },
212
214
  } = useTableContext('VirtualizedTableContent');
215
+
213
216
  const rows = getRowModel().rows;
214
217
 
215
218
  const { getTotalSize, getVirtualItems } = useVirtualizer({
216
219
  getScrollElement,
217
220
  count: rows.length,
218
- overscan: 16,
221
+ overscan: 4,
219
222
  estimateSize: () => 33,
220
223
  });
224
+
221
225
  const virtualRows = getVirtualItems();
222
226
  const totalSize = getTotalSize();
223
227
 
@@ -245,6 +249,8 @@ const VirtualizedTableContent = ({
245
249
  );
246
250
  };
247
251
 
252
+ export const MemoizedVirtualisedTableContent = React.memo(VirtualizedTableContent) as typeof VirtualizedTableContent;
253
+
248
254
  const GroupedTableContent = () => {
249
255
  const {
250
256
  table: { getGroupedRowModel, getHeaderGroups, getState },