material-react-table 2.7.0 → 2.8.0

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 (93) hide show
  1. package/dist/index.d.ts +239 -93
  2. package/dist/index.esm.js +3489 -3470
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +3486 -3470
  5. package/dist/index.js.map +1 -1
  6. package/package.json +20 -20
  7. package/src/{MaterialReactTable.tsx → components/MaterialReactTable.tsx} +3 -3
  8. package/src/{body → components/body}/MRT_TableBody.tsx +4 -4
  9. package/src/{body → components/body}/MRT_TableBodyCell.tsx +6 -23
  10. package/src/{body → components/body}/MRT_TableBodyCellValue.tsx +2 -2
  11. package/src/{body → components/body}/MRT_TableBodyRow.tsx +3 -3
  12. package/src/{body → components/body}/MRT_TableBodyRowGrabHandle.tsx +3 -3
  13. package/src/{body → components/body}/MRT_TableBodyRowPinButton.tsx +3 -3
  14. package/src/{body → components/body}/MRT_TableDetailPanel.tsx +3 -3
  15. package/src/{buttons → components/buttons}/MRT_ColumnPinningButtons.tsx +2 -2
  16. package/src/{buttons → components/buttons}/MRT_CopyButton.tsx +3 -3
  17. package/src/{buttons → components/buttons}/MRT_EditActionButtons.tsx +2 -2
  18. package/src/{buttons → components/buttons}/MRT_ExpandAllButton.tsx +3 -3
  19. package/src/{buttons → components/buttons}/MRT_ExpandButton.tsx +6 -3
  20. package/src/{buttons → components/buttons}/MRT_GrabHandleButton.tsx +3 -3
  21. package/src/{buttons → components/buttons}/MRT_RowPinButton.tsx +3 -3
  22. package/src/{buttons → components/buttons}/MRT_ShowHideColumnsButton.tsx +1 -1
  23. package/src/{buttons → components/buttons}/MRT_ToggleDensePaddingButton.tsx +1 -1
  24. package/src/{buttons → components/buttons}/MRT_ToggleFiltersButton.tsx +1 -1
  25. package/src/{buttons → components/buttons}/MRT_ToggleFullScreenButton.tsx +1 -1
  26. package/src/{buttons → components/buttons}/MRT_ToggleGlobalFilterButton.tsx +1 -1
  27. package/src/{buttons → components/buttons}/MRT_ToggleRowActionMenuButton.tsx +4 -4
  28. package/src/{footer → components/footer}/MRT_TableFooter.tsx +2 -2
  29. package/src/{footer → components/footer}/MRT_TableFooterCell.tsx +3 -3
  30. package/src/{footer → components/footer}/MRT_TableFooterRow.tsx +3 -3
  31. package/src/{head → components/head}/MRT_TableHead.tsx +3 -3
  32. package/src/{head → components/head}/MRT_TableHeadCell.tsx +3 -3
  33. package/src/{head → components/head}/MRT_TableHeadCellColumnActionsButton.tsx +4 -4
  34. package/src/{head → components/head}/MRT_TableHeadCellFilterContainer.tsx +5 -5
  35. package/src/{head → components/head}/MRT_TableHeadCellFilterLabel.tsx +2 -2
  36. package/src/{head → components/head}/MRT_TableHeadCellGrabHandle.tsx +4 -3
  37. package/src/{head → components/head}/MRT_TableHeadCellResizeHandle.tsx +2 -2
  38. package/src/{head → components/head}/MRT_TableHeadCellSortLabel.tsx +2 -2
  39. package/src/{head → components/head}/MRT_TableHeadRow.tsx +3 -3
  40. package/src/{inputs → components/inputs}/MRT_EditCellTextField.tsx +12 -4
  41. package/src/{inputs → components/inputs}/MRT_FilterCheckbox.tsx +3 -3
  42. package/src/{inputs → components/inputs}/MRT_FilterRangeFields.tsx +2 -2
  43. package/src/{inputs → components/inputs}/MRT_FilterRangeSlider.tsx +2 -2
  44. package/src/{inputs → components/inputs}/MRT_FilterTextField.tsx +3 -3
  45. package/src/{inputs → components/inputs}/MRT_GlobalFilterTextField.tsx +2 -2
  46. package/src/{inputs → components/inputs}/MRT_SelectCheckbox.tsx +3 -3
  47. package/src/{menus → components/menus}/MRT_ColumnActionMenu.tsx +8 -8
  48. package/src/{menus → components/menus}/MRT_FilterOptionMenu.tsx +2 -2
  49. package/src/{menus → components/menus}/MRT_RowActionMenu.tsx +9 -9
  50. package/src/{menus → components/menus}/MRT_ShowHideColumnsMenu.tsx +5 -7
  51. package/src/{menus → components/menus}/MRT_ShowHideColumnsMenuItems.tsx +6 -5
  52. package/src/{modals → components/modals}/MRT_EditRowModal.tsx +4 -4
  53. package/src/{table → components/table}/MRT_Table.tsx +4 -4
  54. package/src/{table → components/table}/MRT_TableContainer.tsx +2 -2
  55. package/src/{table → components/table}/MRT_TableLoadingOverlay.tsx +3 -3
  56. package/src/{table → components/table}/MRT_TablePaper.tsx +3 -3
  57. package/src/{toolbar → components/toolbar}/MRT_BottomToolbar.tsx +3 -3
  58. package/src/{toolbar → components/toolbar}/MRT_LinearProgressBar.tsx +2 -2
  59. package/src/{toolbar → components/toolbar}/MRT_TablePagination.tsx +3 -3
  60. package/src/{toolbar → components/toolbar}/MRT_ToolbarAlertBanner.tsx +2 -2
  61. package/src/{toolbar → components/toolbar}/MRT_ToolbarDropZone.tsx +2 -2
  62. package/src/{toolbar → components/toolbar}/MRT_ToolbarInternalButtons.tsx +2 -2
  63. package/src/{toolbar → components/toolbar}/MRT_TopToolbar.tsx +3 -3
  64. package/src/{filterFns.ts → fns/filterFns.ts} +1 -1
  65. package/src/{sortingFns.ts → fns/sortingFns.ts} +1 -1
  66. package/src/hooks/display-columns/getMRT_DisplayColumns.tsx +26 -0
  67. package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +34 -0
  68. package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +35 -0
  69. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +96 -0
  70. package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +36 -0
  71. package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +30 -0
  72. package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +40 -0
  73. package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +40 -0
  74. package/src/hooks/useMRT_ColumnVirtualizer.ts +2 -4
  75. package/src/hooks/useMRT_Effects.ts +1 -1
  76. package/src/hooks/useMRT_RowVirtualizer.ts +2 -4
  77. package/src/hooks/useMRT_Rows.ts +2 -2
  78. package/src/hooks/useMRT_TableInstance.ts +54 -39
  79. package/src/hooks/useMRT_TableOptions.ts +3 -3
  80. package/src/{useMaterialReactTable.ts → hooks/useMaterialReactTable.ts} +3 -3
  81. package/src/index.ts +79 -82
  82. package/src/types.ts +54 -26
  83. package/src/utils/column.utils.ts +173 -0
  84. package/src/utils/displayColumn.utils.ts +134 -0
  85. package/src/utils/row.utils.ts +26 -0
  86. package/src/{style.utils.ts → utils/style.utils.ts} +21 -15
  87. package/src/utils/tanstack.helpers.ts +64 -0
  88. package/src/utils/utils.ts +23 -0
  89. package/src/utils/virtualization.utils.ts +19 -0
  90. package/src/utils.ts +0 -0
  91. package/src/column.utils.ts +0 -361
  92. package/src/hooks/useMRT_DisplayColumns.tsx +0 -290
  93. /package/src/{aggregationFns.ts → fns/aggregationFns.ts} +0 -0
@@ -1,290 +0,0 @@
1
- import { type ReactNode, type RefObject, useMemo } from 'react';
2
- import Stack from '@mui/material/Stack';
3
- import Tooltip from '@mui/material/Tooltip';
4
- import { MRT_TableBodyRowGrabHandle } from '../body/MRT_TableBodyRowGrabHandle';
5
- import { MRT_TableBodyRowPinButton } from '../body/MRT_TableBodyRowPinButton';
6
- import { MRT_ExpandAllButton } from '../buttons/MRT_ExpandAllButton';
7
- import { MRT_ExpandButton } from '../buttons/MRT_ExpandButton';
8
- import { MRT_ToggleRowActionMenuButton } from '../buttons/MRT_ToggleRowActionMenuButton';
9
- import { showExpandColumn } from '../column.utils';
10
- import { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';
11
- import { getCommonTooltipProps } from '../style.utils';
12
- import {
13
- type MRT_ColumnDef,
14
- type MRT_DefinedTableOptions,
15
- type MRT_DisplayColumnIds,
16
- type MRT_Localization,
17
- type MRT_RowData,
18
- } from '../types';
19
- import { MRT_DefaultDisplayColumn } from './useMRT_TableOptions';
20
-
21
- export const useMRT_DisplayColumns = <TData extends MRT_RowData>(
22
- tableOptions: MRT_DefinedTableOptions<TData>,
23
- ): MRT_ColumnDef<TData>[] => {
24
- const { columnOrder, creatingRow, grouping, pagination } =
25
- tableOptions.state!;
26
-
27
- return useMemo(
28
- () =>
29
- [
30
- makeRowPinColumn,
31
- makeRowDragColumn,
32
- makeRowActionsColumn,
33
- makeRowExpandColumn,
34
- makeRowSelectColumn,
35
- makeRowNumbersColumn,
36
- makeSpacerColumn,
37
- ]
38
- .map((makeCol) => makeCol(tableOptions))
39
- .filter(Boolean) as MRT_ColumnDef<TData>[],
40
- [
41
- columnOrder,
42
- creatingRow,
43
- grouping,
44
- pagination,
45
- tableOptions.displayColumnDefOptions,
46
- tableOptions.editDisplayMode,
47
- tableOptions.enableColumnDragging,
48
- tableOptions.enableColumnFilterModes,
49
- tableOptions.enableColumnOrdering,
50
- tableOptions.enableEditing,
51
- tableOptions.enableExpandAll,
52
- tableOptions.enableExpanding,
53
- tableOptions.enableGrouping,
54
- tableOptions.enableRowActions,
55
- tableOptions.enableRowDragging,
56
- tableOptions.enableRowNumbers,
57
- tableOptions.enableRowOrdering,
58
- tableOptions.enableRowSelection,
59
- tableOptions.enableSelectAll,
60
- tableOptions.groupedColumnMode,
61
- tableOptions.localization,
62
- tableOptions.positionActionsColumn,
63
- tableOptions.positionExpandColumn,
64
- tableOptions.renderDetailPanel,
65
- tableOptions.renderRowActionMenuItems,
66
- tableOptions.renderRowActions,
67
- ],
68
- );
69
- };
70
-
71
- function defaultDisplayColumnProps<TData extends MRT_RowData>(
72
- {
73
- defaultDisplayColumn,
74
- displayColumnDefOptions,
75
- localization,
76
- }: MRT_DefinedTableOptions<TData>,
77
- id: MRT_DisplayColumnIds,
78
- header?: keyof MRT_Localization,
79
- size = 60,
80
- ) {
81
- return {
82
- ...defaultDisplayColumn,
83
- header: header ? localization[header]! : '',
84
- size,
85
- ...displayColumnDefOptions?.[id],
86
- id,
87
- } as const;
88
- }
89
-
90
- function makeRowPinColumn<TData extends MRT_RowData>(
91
- tableOptions: MRT_DefinedTableOptions<TData>,
92
- ): MRT_ColumnDef<TData> | null {
93
- const id: MRT_DisplayColumnIds = 'mrt-row-pin';
94
- const { columnOrder } = tableOptions.state!;
95
- if (columnOrder?.includes(id)) {
96
- return {
97
- Cell: ({ row, table }) => (
98
- <MRT_TableBodyRowPinButton row={row} table={table} />
99
- ),
100
- ...defaultDisplayColumnProps(tableOptions, id, 'pin'),
101
- };
102
- }
103
- return null;
104
- }
105
-
106
- function makeRowDragColumn<TData extends MRT_RowData>(
107
- tableOptions: MRT_DefinedTableOptions<TData>,
108
- ): MRT_ColumnDef<TData> | null {
109
- const id: MRT_DisplayColumnIds = 'mrt-row-drag';
110
- const { columnOrder } = tableOptions.state!;
111
- if (columnOrder?.includes(id)) {
112
- return {
113
- Cell: ({ row, rowRef, table }) => (
114
- <MRT_TableBodyRowGrabHandle
115
- row={row}
116
- rowRef={rowRef as RefObject<HTMLTableRowElement>}
117
- table={table}
118
- />
119
- ),
120
- ...defaultDisplayColumnProps(tableOptions, id, 'move'),
121
- };
122
- }
123
- return null;
124
- }
125
-
126
- function makeRowActionsColumn<TData extends MRT_RowData>(
127
- tableOptions: MRT_DefinedTableOptions<TData>,
128
- ): MRT_ColumnDef<TData> | null {
129
- const id: MRT_DisplayColumnIds = 'mrt-row-actions';
130
- const { columnOrder, creatingRow } = tableOptions.state!;
131
- if (
132
- columnOrder?.includes(id) ||
133
- (creatingRow && tableOptions.createDisplayMode === 'row')
134
- ) {
135
- return {
136
- Cell: ({ cell, row, staticRowIndex, table }) => (
137
- <MRT_ToggleRowActionMenuButton
138
- cell={cell}
139
- row={row}
140
- staticRowIndex={staticRowIndex}
141
- table={table}
142
- />
143
- ),
144
- ...defaultDisplayColumnProps(tableOptions, id, 'actions'),
145
- };
146
- }
147
- return null;
148
- }
149
-
150
- function makeRowExpandColumn<TData extends MRT_RowData>(
151
- tableOptions: MRT_DefinedTableOptions<TData>,
152
- ): MRT_ColumnDef<TData> | null {
153
- const id: MRT_DisplayColumnIds = 'mrt-row-expand';
154
- const { columnOrder, grouping } = tableOptions.state!;
155
- if (columnOrder?.includes(id) && showExpandColumn(tableOptions, grouping)) {
156
- const alignProps =
157
- tableOptions.positionExpandColumn === 'last'
158
- ? ({
159
- align: 'right',
160
- } as const)
161
- : undefined;
162
-
163
- return {
164
- Cell: ({ cell, column, row, staticRowIndex, table }) => {
165
- const expandButtonProps = { row, staticRowIndex, table };
166
- const subRowsLength = row.subRows?.length;
167
- if (
168
- tableOptions.groupedColumnMode === 'remove' &&
169
- row.groupingColumnId
170
- ) {
171
- return (
172
- <Stack alignItems="center" flexDirection="row" gap="0.25rem">
173
- <MRT_ExpandButton {...expandButtonProps} />
174
- <Tooltip
175
- {...getCommonTooltipProps('right')}
176
- title={table.getColumn(row.groupingColumnId).columnDef.header}
177
- >
178
- <span>{row.groupingValue as ReactNode}</span>
179
- </Tooltip>
180
- {!!subRowsLength && <span>({subRowsLength})</span>}
181
- </Stack>
182
- );
183
- } else {
184
- return (
185
- <>
186
- <MRT_ExpandButton {...expandButtonProps} />
187
- {column.columnDef.GroupedCell?.({ cell, column, row, table })}
188
- </>
189
- );
190
- }
191
- },
192
- Header: tableOptions.enableExpandAll
193
- ? ({ table }) => {
194
- return (
195
- <>
196
- <MRT_ExpandAllButton table={table} />
197
- {tableOptions.groupedColumnMode === 'remove' &&
198
- grouping
199
- ?.map(
200
- (groupedColumnId) =>
201
- table.getColumn(groupedColumnId).columnDef.header,
202
- )
203
- ?.join(', ')}
204
- </>
205
- );
206
- }
207
- : undefined,
208
- muiTableBodyCellProps: alignProps,
209
- muiTableHeadCellProps: alignProps,
210
- ...defaultDisplayColumnProps(
211
- tableOptions,
212
- id,
213
- 'expand',
214
- tableOptions.groupedColumnMode === 'remove'
215
- ? tableOptions?.defaultColumn?.size
216
- : 60,
217
- ),
218
- };
219
- }
220
- return null;
221
- }
222
-
223
- function makeRowSelectColumn<TData extends MRT_RowData>(
224
- tableOptions: MRT_DefinedTableOptions<TData>,
225
- ): MRT_ColumnDef<TData> | null {
226
- const id: MRT_DisplayColumnIds = 'mrt-row-select';
227
- const { columnOrder } = tableOptions.state!;
228
- if (columnOrder?.includes(id)) {
229
- return {
230
- Cell: ({ row, staticRowIndex, table }) => (
231
- <MRT_SelectCheckbox
232
- row={row}
233
- staticRowIndex={staticRowIndex}
234
- table={table}
235
- />
236
- ),
237
- Header:
238
- tableOptions.enableSelectAll && tableOptions.enableMultiRowSelection
239
- ? ({ table }) => <MRT_SelectCheckbox selectAll table={table} />
240
- : undefined,
241
- ...defaultDisplayColumnProps(tableOptions, id, 'select'),
242
- };
243
- }
244
- return null;
245
- }
246
-
247
- function makeRowNumbersColumn<TData extends MRT_RowData>(
248
- tableOptions: MRT_DefinedTableOptions<TData>,
249
- ): MRT_ColumnDef<TData> | null {
250
- const id: MRT_DisplayColumnIds = 'mrt-row-numbers';
251
- const { columnOrder, pagination } = tableOptions.state!;
252
- if (columnOrder?.includes(id) || tableOptions.enableRowNumbers)
253
- return {
254
- Cell: ({ row, staticRowIndex }) =>
255
- ((tableOptions.rowNumberDisplayMode === 'static'
256
- ? (staticRowIndex || 0) +
257
- (pagination?.pageSize || 0) * (pagination?.pageIndex || 0)
258
- : row.index) ?? 0) + 1,
259
- Header: () => tableOptions.localization.rowNumber,
260
- ...defaultDisplayColumnProps(tableOptions, id, 'rowNumbers'),
261
- };
262
- return null;
263
- }
264
-
265
- const blankColProps = {
266
- children: null,
267
- sx: {
268
- flex: '1 0 auto',
269
- minWidth: 0,
270
- p: 0,
271
- width: 0,
272
- },
273
- };
274
-
275
- function makeSpacerColumn<TData extends MRT_RowData>(
276
- tableOptions: MRT_DefinedTableOptions<TData>,
277
- ): MRT_ColumnDef<TData> | null {
278
- const id: MRT_DisplayColumnIds = 'mrt-row-spacer';
279
- const { columnOrder } = tableOptions.state!;
280
- if (columnOrder?.includes(id)) {
281
- return {
282
- ...defaultDisplayColumnProps(tableOptions, id, undefined, 0),
283
- ...MRT_DefaultDisplayColumn,
284
- muiTableBodyCellProps: blankColProps,
285
- muiTableFooterCellProps: blankColProps,
286
- muiTableHeadCellProps: blankColProps,
287
- };
288
- }
289
- return null;
290
- }