@jielga/tmdatagrid 2.0.0-beta.2 → 2.0.0-beta.21

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 (150) hide show
  1. package/README.md +5 -212
  2. package/dist/index.d.ts +1664 -632
  3. package/dist/index.js +5226 -3223
  4. package/dist/index.js.map +1 -1
  5. package/dist/styles.css +1 -1
  6. package/docs/anatomy.md +102 -0
  7. package/docs/cell-selection.md +154 -0
  8. package/docs/column-layout.md +204 -0
  9. package/docs/columns.md +262 -0
  10. package/docs/components.md +304 -0
  11. package/docs/editing.md +603 -0
  12. package/docs/editors.md +250 -0
  13. package/docs/export.md +326 -0
  14. package/docs/filtering.md +358 -0
  15. package/docs/getting-started.md +123 -0
  16. package/docs/grouping.md +165 -0
  17. package/docs/loading-and-empty.md +92 -0
  18. package/docs/localization.md +79 -0
  19. package/docs/menu.md +143 -0
  20. package/docs/pagination.md +144 -0
  21. package/docs/persistence.md +111 -0
  22. package/docs/portfolio-rebalancer.md +94 -0
  23. package/docs/query-builder.md +175 -0
  24. package/docs/quick-search.md +83 -0
  25. package/docs/row-details.md +113 -0
  26. package/docs/row-interaction.md +148 -0
  27. package/docs/row-pinning.md +132 -0
  28. package/docs/row-selection.md +134 -0
  29. package/docs/row-styling.md +133 -0
  30. package/docs/scrolling.md +111 -0
  31. package/docs/server-query.md +246 -0
  32. package/docs/server-side.md +206 -0
  33. package/docs/sorting.md +101 -0
  34. package/docs/styling.md +126 -0
  35. package/docs/summary-row.md +76 -0
  36. package/docs/testing.md +309 -0
  37. package/docs/toolbar.md +161 -0
  38. package/docs/use-tm-data-grid.md +361 -0
  39. package/package.json +21 -45
  40. package/skills/appearance/SKILL.md +70 -17
  41. package/skills/cell-selection/SKILL.md +70 -76
  42. package/skills/columns/SKILL.md +131 -32
  43. package/skills/data/SKILL.md +100 -23
  44. package/skills/editing/SKILL.md +217 -96
  45. package/skills/editing/references/common-mistakes.md +111 -24
  46. package/skills/editing/references/editing-api.md +63 -39
  47. package/skills/editing/references/editors-and-validation.md +77 -19
  48. package/skills/filtering/SKILL.md +148 -40
  49. package/skills/getting-started/SKILL.md +18 -16
  50. package/skills/grouping/SKILL.md +32 -15
  51. package/skills/options/SKILL.md +39 -9
  52. package/skills/rows/SKILL.md +22 -18
  53. package/skills/server-side/SKILL.md +170 -17
  54. package/skills/testing/SKILL.md +10 -7
  55. package/src/{tmdatagrid/TMDataGridContext.ts → TMDataGridContext.ts} +7 -19
  56. package/src/{tmdatagrid/components → components}/TMDataGrid.module.css +7 -1
  57. package/src/{tmdatagrid/components → components}/TMDataGrid.tsx +39 -23
  58. package/src/{tmdatagrid/components → components}/TMDataGridCellEditor.tsx +106 -38
  59. package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.module.css +5 -1
  60. package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.tsx +47 -55
  61. package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.tsx +4 -4
  62. package/src/components/TMDataGridDraftActions.tsx +307 -0
  63. package/src/{tmdatagrid/components → components}/TMDataGridEditColumn.tsx +58 -50
  64. package/src/{tmdatagrid/components → components}/TMDataGridEntryRows.tsx +150 -115
  65. package/src/components/TMDataGridExportPicker.module.css +77 -0
  66. package/src/components/TMDataGridExportPicker.tsx +234 -0
  67. package/src/components/TMDataGridFilterPanel.module.css +54 -0
  68. package/src/components/TMDataGridFilterPanel.tsx +348 -0
  69. package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.tsx +7 -5
  70. package/src/components/TMDataGridFilterSurface.module.css +54 -0
  71. package/src/components/TMDataGridFilterSurface.tsx +167 -0
  72. package/src/{tmdatagrid/components → components}/TMDataGridFooter.tsx +53 -13
  73. package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.tsx +4 -3
  74. package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.module.css +10 -0
  75. package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.tsx +100 -28
  76. package/src/components/TMDataGridHeaderFilterRow.module.css +51 -0
  77. package/src/components/TMDataGridHeaderFilterRow.tsx +301 -0
  78. package/src/components/TMDataGridMenu.tsx +354 -0
  79. package/src/{tmdatagrid/components → components}/TMDataGridSelectColumn.tsx +12 -7
  80. package/src/{tmdatagrid/components → components}/TMDataGridTable.module.css +90 -67
  81. package/src/{tmdatagrid/components → components}/TMDataGridTable.tsx +678 -156
  82. package/src/components/TMDataGridToolbar.module.css +21 -0
  83. package/src/components/TMDataGridToolbar.tsx +181 -0
  84. package/src/{tmdatagrid/components → components}/editors/TMDataGridBooleanEditor.tsx +3 -3
  85. package/src/{tmdatagrid/components → components}/editors/TMDataGridDateEditor.tsx +3 -3
  86. package/src/{tmdatagrid/components → components}/editors/TMDataGridMultiSelectEditor.tsx +3 -3
  87. package/src/components/editors/TMDataGridNumberEditor.tsx +70 -0
  88. package/src/{tmdatagrid/components → components}/editors/TMDataGridSelectEditor.tsx +3 -3
  89. package/src/{tmdatagrid/components → components}/editors/TMDataGridStringEditor.tsx +3 -3
  90. package/src/{tmdatagrid/components → components}/editors/editorShared.ts +17 -31
  91. package/src/{tmdatagrid/components → components}/filters/DgAutocompleteFilter.tsx +5 -4
  92. package/src/{tmdatagrid/components → components}/filters/DgDateRangeFilter.tsx +22 -5
  93. package/src/{tmdatagrid/components → components}/filters/DgRangeSliderFilter.tsx +5 -1
  94. package/src/{tmdatagrid/components → components}/filters/DgTriStateFilter.tsx +5 -1
  95. package/src/{tmdatagrid/components → components}/filters/TMDataGridFilterValueInput.tsx +44 -28
  96. package/src/components/filters/controlLayout.ts +32 -0
  97. package/src/components/filters/filterControlFor.ts +65 -0
  98. package/src/{tmdatagrid/components → components}/icons.ts +1 -0
  99. package/src/{tmdatagrid/components → components}/sticky.module.css +44 -0
  100. package/src/components/useHideableColumns.ts +52 -0
  101. package/src/{tmdatagrid/core → core}/autosize.ts +5 -2
  102. package/src/{tmdatagrid/core → core}/capabilities.ts +14 -6
  103. package/src/{tmdatagrid/core → core}/columnOptions.ts +46 -0
  104. package/src/{tmdatagrid/core → core}/columnOrdering.ts +33 -14
  105. package/src/{tmdatagrid/core → core}/columnUtils.ts +44 -5
  106. package/src/core/controlledState.ts +179 -0
  107. package/src/core/controlledStateSync.ts +108 -0
  108. package/src/core/deletedRows.ts +34 -0
  109. package/src/core/dom.ts +74 -0
  110. package/src/core/editEngine.ts +2476 -0
  111. package/src/{tmdatagrid/core → core}/editorFocus.ts +8 -4
  112. package/src/core/export.ts +843 -0
  113. package/src/{tmdatagrid/core → core}/filterControls.ts +38 -1
  114. package/src/{tmdatagrid/core → core}/filterOperators.ts +64 -1
  115. package/src/core/filterSurface.ts +99 -0
  116. package/src/{tmdatagrid/core → core}/labels.ts +66 -8
  117. package/src/{tmdatagrid/core → core}/labelsSv.ts +26 -3
  118. package/src/core/pageReset.ts +120 -0
  119. package/src/{tmdatagrid/core → core}/persistence.ts +22 -5
  120. package/src/core/resizePreview.ts +141 -0
  121. package/src/core/summary.ts +59 -0
  122. package/src/core/useSettledTableState.ts +36 -0
  123. package/src/{tmdatagrid/index.ts → index.ts} +75 -12
  124. package/src/{tmdatagrid/useTMDataGrid.tsx → useTMDataGrid.tsx} +734 -135
  125. package/src/useTMDataGridExport.ts +78 -0
  126. package/src/tmdatagrid/components/TMDataGridEditActions.tsx +0 -162
  127. package/src/tmdatagrid/components/TMDataGridFilterPanel.module.css +0 -35
  128. package/src/tmdatagrid/components/TMDataGridFilterPanel.tsx +0 -354
  129. package/src/tmdatagrid/components/TMDataGridToolbar.module.css +0 -12
  130. package/src/tmdatagrid/components/TMDataGridToolbar.tsx +0 -162
  131. package/src/tmdatagrid/components/editors/TMDataGridNumberEditor.tsx +0 -40
  132. package/src/tmdatagrid/core/cellExport.ts +0 -320
  133. package/src/tmdatagrid/core/editEngine.ts +0 -1006
  134. package/src/tmdatagrid/core/summary.ts +0 -35
  135. /package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.module.css +0 -0
  136. /package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.module.css +0 -0
  137. /package/src/{tmdatagrid/components → components}/TMDataGridFooter.module.css +0 -0
  138. /package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.module.css +0 -0
  139. /package/src/{tmdatagrid/components → components}/TMDataGridRowNumberColumn.tsx +0 -0
  140. /package/src/{tmdatagrid/components → components}/TMDataGridSearch.tsx +0 -0
  141. /package/src/{tmdatagrid/core → core}/cellNavigation.ts +0 -0
  142. /package/src/{tmdatagrid/core → core}/cellRange.ts +0 -0
  143. /package/src/{tmdatagrid/core → core}/draftCellContext.ts +0 -0
  144. /package/src/{tmdatagrid/core → core}/expanding.ts +0 -0
  145. /package/src/{tmdatagrid/core → core}/grouping.ts +0 -0
  146. /package/src/{tmdatagrid/core → core}/matchHighlight.ts +0 -0
  147. /package/src/{tmdatagrid/core → core}/quickSearch.ts +0 -0
  148. /package/src/{tmdatagrid/core → core}/rowPinning.ts +0 -0
  149. /package/src/{tmdatagrid/core → core}/rowSelection.ts +0 -0
  150. /package/src/{tmdatagrid/core → core}/sizes.ts +0 -0
@@ -6,21 +6,26 @@ description: >
6
6
  enablePagination, manualPagination), the Footer's renderPagination slot over {
7
7
  state, actions, Controls }, getTMDataGridPaginationApi, isPagingActive versus
8
8
  canPaginate, always-on virtualization with overscan and meta.rowHeight,
9
- scrollToRow and scrollerRef, the edge callbacks onScrollToBottom /
10
- onScrollToRight and why onReachEnd is better for loading more, the header and
11
- pinned-lane depth shadows, and the four empty states in precedence order with
12
- meta.loading, renderEmptyState, hasActiveFilters, TMDataGrid.LoadingIndicator
13
- and TMDataGrid.SummaryCount. Load when adding a pager, tuning scrolling,
14
- scrolling to a row, or deciding what an empty grid should say.
9
+ scrollToRow, the edge callbacks onScrollToBottom / onScrollToRight and why
10
+ onReachEnd is better for loading more, the header and pinned-lane depth
11
+ shadows, and the four empty states in precedence order with meta.loading,
12
+ renderEmptyState, hasActiveFilters, TMDataGrid.LoadingIndicator and
13
+ TMDataGrid.SummaryCount, and export: TMDataGrid.Menu.Export and
14
+ Menu.ExportSelected, useTMDataGridExport, exportGrid, exportOptions, the
15
+ csvExcel / csv / tsv / json formats, meta.exportValue and meta.enableExport.
16
+ Load when adding a pager, tuning scrolling, scrolling to a row, deciding what
17
+ an empty grid should say, or exporting rows to Excel or CSV.
15
18
  metadata:
16
19
  type: core
17
20
  library: '@jielga/tmdatagrid'
18
- library_version: '2.0.0-beta.2'
21
+ library_version: '2.0.0-beta.21'
19
22
  sources:
20
- - 'Jielga/TMDataGrid:src/docs/pagination.md'
21
- - 'Jielga/TMDataGrid:src/docs/scrolling.md'
22
- - 'Jielga/TMDataGrid:src/docs/loading-and-empty.md'
23
- - 'Jielga/TMDataGrid:src/tmdatagrid/components/TMDataGridFooter.tsx'
23
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/docs/pagination.md'
24
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/docs/scrolling.md'
25
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/docs/loading-and-empty.md'
26
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/docs/export.md'
27
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/src/components/TMDataGridFooter.tsx'
28
+ - 'Jielga/TMDataGrid:packages/tmdatagrid/src/core/export.ts'
24
29
  ---
25
30
 
26
31
  # TMDataGrid - Pagination, scrolling and empty states
@@ -77,7 +82,10 @@ pieces, already wired.
77
82
  `Controls.PageSize`, `Controls.Range` and `Controls.Pager` are what the default
78
83
  footer renders, in that order, so a custom layout can keep the parts it wants
79
84
  instead of rebuilding them. They behave exactly as before, including greying out
80
- under a suspended pager.
85
+ under a suspended pager. `Controls.PageNumber` - the "Page 3 of 200" label a
86
+ server-paged grid usually shows in place of a row range - is a fourth control,
87
+ not in the default footer; put it in through the slot rather than writing it by
88
+ hand.
81
89
 
82
90
  `state` carries `pageIndex`, `pageSize`, `pageCount`, `rowCount`,
83
91
  `canPreviousPage`, `canNextPage`, `from`, `to` and `isPagingActive`. `actions`
@@ -118,8 +126,13 @@ grid.scrollToRow({ rowId: "42", align: "center" });
118
126
 
119
127
  `scrollToRow` exists because the target row may not be mounted, and
120
128
  `element.scrollIntoView()` cannot find an element that is not rendered. `align`
121
- is `"start"`, `"center"`, `"end"` or `"auto"`. `scrollerRef` is the scroll
122
- container itself.
129
+ is `"start"`, `"center"`, `"end"` or `"auto"`. It answers whether the row could
130
+ be reached: `false` when it is filtered out, on another page or an id matching
131
+ no row, and a pinned row answers `true` without scrolling.
132
+
133
+ The hook reaches the virtualizer through `scrollerRef`, which
134
+ `TMDataGrid.Table` fills in. That is internal wiring, not an API - spread the
135
+ whole grid object onto `<TMDataGrid>` or nothing scrolls.
123
136
 
124
137
  `TMDataGrid.Table` reports arrivals at each edge - `onScrollToTop`,
125
138
  `onScrollToBottom`, `onScrollToLeft`, `onScrollToRight` - firing **once** on
@@ -173,6 +186,71 @@ server-driven grid refetching with rows still on screen keeps showing them.
173
186
  total, where the total is `meta.totalRowCount` when provided and the pre-filtered
174
187
  count otherwise.
175
188
 
189
+ ## Export
190
+
191
+ Every filtered and sorted row across every page, or the selected rows, as a
192
+ file. The built-in entry points are menu items; a button of your own uses the
193
+ hook.
194
+
195
+ ```tsx
196
+ const grid = useTMDataGrid({
197
+ data,
198
+ columns,
199
+ exportOptions: { format: csvFormat(), fileName: "employees" },
200
+ });
201
+
202
+ <TMDataGrid.Menu>
203
+ <TMDataGrid.Menu.Export />
204
+ <TMDataGrid.Menu.ExportSelected />
205
+ </TMDataGrid.Menu>
206
+ ```
207
+
208
+ ```tsx
209
+ function ExportButton() {
210
+ const { exportAll, exportSelected, selectedCount, canExportSelected } =
211
+ useTMDataGridExport();
212
+ return <Button onClick={() => void exportAll()}>Export</Button>;
213
+ }
214
+ ```
215
+
216
+ What is written: the data columns in render order (never the generated lanes,
217
+ never a column with `meta.enableExport: false`), every row after filtering and
218
+ sorting (a grouped grid writes the records under every group, never the group
219
+ rows), and each cell's **value** rather than what it renders -
220
+ `meta.exportValue: ({ value, row, column }) => unknown` substitutes one.
221
+ `columns` on `exportOptions`, the items and the functions is `"visible"` (the
222
+ default), `"all"` (hidden columns too) or a list of ids; `columns="custom"` on
223
+ a menu item opens a picker instead - every exportable column, the visible ones
224
+ ticked, Export and Cancel - driven by `ui.state.exportPicker` and
225
+ `ui.actions.openExportPicker`. `TMDataGrid.Menu.ExportSelected` counts and
226
+ writes the ticked rows of the current view, in grid order; it renders nothing
227
+ when row selection is off.
228
+
229
+ Formats, each a `TMDataGridExportFormat` from a factory:
230
+
231
+ | Factory | Writes |
232
+ | --- | --- |
233
+ | `csvExcelFormat()` (default) | BOM, `sep=;` line, CRLF, `;` fields, `,` decimal - opens straight into columns in Excel. `separator`, `decimalComma` for another locale. |
234
+ | `csvFormat()` | RFC 4180: `,` fields, `.` decimal, BOM, no `sep=` line - for Google Sheets, Numbers and tooling. |
235
+ | `tsvFormat()` | Tab-separated, the clipboard shape as a file. |
236
+ | `jsonFormat()` | One object per row keyed by column label, numbers as numbers, dates as ISO strings. |
237
+ | `xlsxFormat()` | Excel workbook, from the separate `@jielga/tmdatagrid-xlsx` package. |
238
+
239
+ The text formats guard against formula injection by default: a value starting
240
+ with `=`, `+`, `-` or `@` that is not a number is prefixed with `'`.
241
+ `escapeFormulas: false` on the format turns that off.
242
+
243
+ `exportGrid({ table, rows: "all" | "selected" | rows, options })` is the same
244
+ export for code outside a component; `buildExportData` is the step before the
245
+ file. A format of your own is `{ id, extension, mimeType, write(data, { includeHeaders }) }`
246
+ returning a string, a `Blob`, or a promise of either.
247
+
248
+ Deprecated for one beta: `exportGridToCsv`, the `cellExport` Table prop,
249
+ `TMDataGridCellExportOptions`, `buildCellMatrix` / `buildGridCellMatrix`,
250
+ `toExcelCsv`, `downloadTextFile`, `labels.exportCsv`.
251
+
252
+ Source: `packages/tmdatagrid/docs/export.md`.
253
+
176
254
  ## Common mistakes
177
255
 
178
256
  ### CRITICAL Turning pagination on to make a large grid fast
@@ -181,7 +259,7 @@ Virtualization is already unconditional, so paging a 200 000-row grid changes
181
259
  nothing about rendering cost. It only changes how users navigate. Enable it when
182
260
  they should move page by page, not for performance.
183
261
 
184
- Source: `src/docs/pagination.md`, `src/docs/scrolling.md`.
262
+ Source: `packages/tmdatagrid/docs/pagination.md`, `packages/tmdatagrid/docs/scrolling.md`.
185
263
 
186
264
  ### CRITICAL A variable row height
187
265
 
@@ -202,7 +280,7 @@ Correct:
202
280
  useTMDataGrid({ data, columns, meta: { rowHeight: 64 } });
203
281
  ```
204
282
 
205
- Source: `src/docs/scrolling.md` (Row height).
283
+ Source: `packages/tmdatagrid/docs/scrolling.md` (Row height).
206
284
 
207
285
  ### HIGH `scrollIntoView` on a row that is not mounted
208
286
 
@@ -218,7 +296,7 @@ grid.scrollToRow({ rowId: "4000", align: "center" });
218
296
  `scrollToRow` returns `false` when the row is not in the current view (filtered
219
297
  out, on another page, or an id matching no row) and nothing scrolled.
220
298
 
221
- Source: `src/docs/scrolling.md` (Scrolling to a row).
299
+ Source: `packages/tmdatagrid/docs/scrolling.md` (Scrolling to a row).
222
300
 
223
301
  ### HIGH Loading more rows from `onScrollToBottom`
224
302
 
@@ -226,7 +304,7 @@ It fires at the very bottom, so the user waits at the end of the list for the
226
304
  fetch. `onReachEnd` fires a number of rows earlier and latches per row count, so
227
305
  a pending fetch is not requested twice.
228
306
 
229
- Source: `src/docs/scrolling.md` (Edge callbacks).
307
+ Source: `packages/tmdatagrid/docs/scrolling.md` (Edge callbacks).
230
308
 
231
309
  ### HIGH `SummaryCount` reporting the page under manual pagination
232
310
 
@@ -245,7 +323,7 @@ useTMDataGrid({
245
323
  });
246
324
  ```
247
325
 
248
- Source: `src/docs/loading-and-empty.md` (Counting what is there).
326
+ Source: `packages/tmdatagrid/docs/loading-and-empty.md` (Counting what is there).
249
327
 
250
328
  ### MEDIUM Rendering an empty message while data is loading
251
329
 
@@ -259,7 +337,7 @@ Correct:
259
337
  useTMDataGrid({ data, columns, meta: { loading: isFetching } });
260
338
  ```
261
339
 
262
- Source: `src/docs/loading-and-empty.md` (What wins).
340
+ Source: `packages/tmdatagrid/docs/loading-and-empty.md` (What wins).
263
341
 
264
342
  ### MEDIUM Trusting the pager while grouped
265
343
 
@@ -267,7 +345,7 @@ Source: `src/docs/loading-and-empty.md` (What wins).
267
345
  grid is rendering the whole tree. A custom pager must read
268
346
  `isPagingActive(table, features)` rather than the page count.
269
347
 
270
- Source: `src/docs/pagination.md` (Grouping suspends it).
348
+ Source: `packages/tmdatagrid/docs/pagination.md` (Grouping suspends it).
271
349
 
272
350
  ## Reference
273
351
 
@@ -278,7 +356,7 @@ Source: `src/docs/pagination.md` (Grouping suspends it).
278
356
  | `rowCount` | Table option | `number` | – | The true total, required under `manualPagination`. |
279
357
  | `initialState.pagination` | Table option | `{ pageIndex, pageSize }` | `{ 0, 25 }` | Where paging starts. A `data` slice, so it persists. |
280
358
  | `onPaginationChange` | Table option | `OnChangeFn` | – | Controls the pagination state. |
281
- | `TMDataGrid.Footer` | Component | `pageSizeOptions`, `pagination` | `[10, 25, 50, 100]` | The footer bar. Renders nothing when paging is off. |
359
+ | `TMDataGrid.Footer` | Component | `pageSizeOptions`, `renderPagination`, Mantine `BoxProps` | `[10, 25, 50, 100]` | The footer bar. Renders nothing when paging is off. Style props set on the bar. |
282
360
  | `Footer` `renderPagination` | Slot | `({ state, actions, Controls }) => ReactNode` | Built-in pager | Replaces the pager, and hands over its pieces. |
283
361
  | `getTMDataGridPaginationApi` | Export | `(table) => { state, actions }` | – | The pager API, outside the Footer. |
284
362
  | `TMDataGridPaginationState` · `TMDataGridPaginationActions` · `TMDataGridPaginationControls` | Exports | types | – | The three parts of the slot argument. |
@@ -286,7 +364,6 @@ Source: `src/docs/pagination.md` (Grouping suspends it).
286
364
  | `overscan` | Option | `number` | `6` | Rows kept mounted beyond each edge of the viewport. |
287
365
  | `meta.rowHeight` | Option | `number` | From `size` | Row height in pixels. The virtualizer needs a number. |
288
366
  | `scrollToRow` | Hook return | `({ rowId, align? }) => boolean` | `align: "auto"` | Scrolls a row into view, mounted or not. |
289
- | `scrollerRef` | Hook return | `RefObject<HTMLDivElement>` | – | The scroll container. |
290
367
  | `onScrollToTop` · `onScrollToBottom` · `onScrollToLeft` · `onScrollToRight` | Table props | `() => void` | – | Fire once on arriving at that edge. |
291
368
  | `TMDataGridScrollAlign` | Export | `"start" \| "center" \| "end" \| "auto"` | – | The `align` argument. |
292
369
  | `meta.loading` | Option | `boolean` | `false` | A fetch is in flight. Takes precedence over every empty message. |