material-react-table 0.6.9 → 0.7.0-alpha.2

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 (107) hide show
  1. package/dist/MaterialReactTable.d.ts +308 -107
  2. package/dist/body/MRT_TableBody.d.ts +3 -0
  3. package/dist/body/MRT_TableBodyCell.d.ts +2 -11
  4. package/dist/body/MRT_TableBodyRow.d.ts +3 -1
  5. package/dist/body/MRT_TableDetailPanel.d.ts +2 -1
  6. package/dist/buttons/MRT_CopyButton.d.ts +4 -2
  7. package/dist/buttons/MRT_EditActionButtons.d.ts +2 -1
  8. package/dist/buttons/MRT_ExpandAllButton.d.ts +2 -0
  9. package/dist/buttons/MRT_ExpandButton.d.ts +2 -1
  10. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +2 -0
  11. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +2 -0
  12. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +3 -2
  13. package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -0
  14. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +2 -0
  15. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -1
  16. package/dist/buttons/MRT_ToggleSearchButton.d.ts +2 -0
  17. package/dist/enums.d.ts +2 -1
  18. package/dist/filtersFNs.d.ts +13 -5
  19. package/dist/footer/MRT_TableFooter.d.ts +3 -0
  20. package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
  21. package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
  22. package/dist/head/MRT_TableHead.d.ts +3 -0
  23. package/dist/head/MRT_TableHeadCell.d.ts +4 -18
  24. package/dist/head/MRT_TableHeadRow.d.ts +2 -1
  25. package/dist/icons.d.ts +1 -1
  26. package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
  27. package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
  28. package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
  29. package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
  30. package/dist/localization.d.ts +9 -2
  31. package/dist/material-react-table.cjs.development.js +2258 -2470
  32. package/dist/material-react-table.cjs.development.js.map +1 -1
  33. package/dist/material-react-table.cjs.production.min.js +1 -1
  34. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  35. package/dist/material-react-table.esm.js +2260 -2472
  36. package/dist/material-react-table.esm.js.map +1 -1
  37. package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
  38. package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
  39. package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
  40. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
  41. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
  42. package/dist/table/MRT_Table.d.ts +3 -0
  43. package/dist/table/MRT_TableContainer.d.ts +2 -0
  44. package/dist/table/MRT_TablePaper.d.ts +7 -0
  45. package/dist/table/MRT_TableRoot.d.ts +3 -0
  46. package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
  47. package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
  48. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
  49. package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
  50. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
  51. package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
  52. package/dist/utils.d.ts +12 -2
  53. package/package.json +27 -28
  54. package/src/MaterialReactTable.tsx +598 -295
  55. package/src/body/MRT_TableBody.tsx +26 -22
  56. package/src/body/MRT_TableBodyCell.tsx +76 -55
  57. package/src/body/MRT_TableBodyRow.tsx +37 -67
  58. package/src/body/MRT_TableDetailPanel.tsx +21 -17
  59. package/src/buttons/MRT_CopyButton.tsx +36 -11
  60. package/src/buttons/MRT_EditActionButtons.tsx +16 -13
  61. package/src/buttons/MRT_ExpandAllButton.tsx +36 -28
  62. package/src/buttons/MRT_ExpandButton.tsx +35 -41
  63. package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
  64. package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
  65. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +22 -11
  66. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
  67. package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
  68. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +27 -22
  69. package/src/buttons/MRT_ToggleSearchButton.tsx +24 -12
  70. package/src/enums.ts +2 -1
  71. package/src/filtersFNs.ts +17 -3
  72. package/src/footer/MRT_TableFooter.tsx +24 -8
  73. package/src/footer/MRT_TableFooterCell.tsx +34 -26
  74. package/src/footer/MRT_TableFooterRow.tsx +21 -39
  75. package/src/head/MRT_TableHead.tsx +24 -8
  76. package/src/head/MRT_TableHeadCell.tsx +185 -142
  77. package/src/head/MRT_TableHeadRow.tsx +16 -93
  78. package/src/icons.ts +3 -3
  79. package/src/inputs/MRT_EditCellTextField.tsx +23 -24
  80. package/src/inputs/MRT_FilterTextField.tsx +53 -39
  81. package/src/inputs/MRT_SearchTextField.tsx +71 -25
  82. package/src/inputs/MRT_SelectCheckbox.tsx +42 -30
  83. package/src/localization.ts +19 -4
  84. package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
  85. package/src/menus/MRT_FilterTypeMenu.tsx +55 -23
  86. package/src/menus/MRT_RowActionMenu.tsx +21 -14
  87. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
  88. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +27 -17
  89. package/src/table/MRT_Table.tsx +25 -15
  90. package/src/table/MRT_TableContainer.tsx +106 -45
  91. package/src/table/MRT_TablePaper.tsx +65 -0
  92. package/src/table/MRT_TableRoot.tsx +236 -0
  93. package/src/toolbar/MRT_LinearProgressBar.tsx +10 -7
  94. package/src/toolbar/MRT_TablePagination.tsx +30 -19
  95. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +33 -20
  96. package/src/toolbar/MRT_ToolbarBottom.tsx +32 -21
  97. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +34 -20
  98. package/src/toolbar/MRT_ToolbarTop.tsx +36 -29
  99. package/src/utils.ts +37 -8
  100. package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
  101. package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
  102. package/dist/useMRT.d.ts +0 -27
  103. package/src/@types/faker.d.ts +0 -4
  104. package/src/@types/react-table-config.d.ts +0 -53
  105. package/src/head/MRT_TableHeadCellActions.tsx +0 -29
  106. package/src/table/MRT_TableSpacerCell.tsx +0 -20
  107. package/src/useMRT.tsx +0 -215
@@ -1,9 +1,18 @@
1
- import React, { ChangeEvent, FC, MouseEvent, ReactNode } from 'react';
1
+ import React, {
2
+ ChangeEvent,
3
+ Dispatch,
4
+ FC,
5
+ MouseEvent,
6
+ ReactNode,
7
+ SetStateAction,
8
+ } from 'react';
2
9
  import {
3
10
  AlertProps,
11
+ ButtonProps,
4
12
  CheckboxProps,
5
13
  IconButtonProps,
6
14
  LinearProgressProps,
15
+ PaperProps,
7
16
  SkeletonProps,
8
17
  TableBodyProps,
9
18
  TableCellProps,
@@ -19,233 +28,303 @@ import {
19
28
  import {
20
29
  Cell,
21
30
  Column,
22
- ColumnInstance,
31
+ ColumnDef,
32
+ DefaultGenerics,
23
33
  FilterType,
24
- ColumnInterface,
34
+ Header,
25
35
  HeaderGroup,
36
+ Options,
37
+ Overwrite,
38
+ PaginationState,
26
39
  Row,
27
40
  TableInstance,
28
- TableOptions,
29
41
  TableState,
30
- UseColumnOrderInstanceProps,
31
- UseColumnOrderState,
32
- UseExpandedInstanceProps,
33
- UseExpandedOptions,
34
- UseExpandedRowProps,
35
- UseExpandedState,
36
- UseFiltersColumnOptions,
37
- UseFiltersColumnProps,
38
- UseFiltersInstanceProps,
39
- UseFiltersOptions,
40
- UseFiltersState,
41
- UseGlobalFiltersColumnOptions,
42
- UseGlobalFiltersInstanceProps,
43
- UseGlobalFiltersOptions,
44
- UseGlobalFiltersState,
45
- UseGroupByCellProps,
46
- UseGroupByColumnOptions,
47
- UseGroupByColumnProps,
48
- UseGroupByInstanceProps,
49
- UseGroupByOptions,
50
- UseGroupByRowProps,
51
- UseGroupByState,
52
- UsePaginationInstanceProps,
53
- UsePaginationOptions,
54
- UsePaginationState,
55
- UseResizeColumnsColumnOptions,
56
- UseResizeColumnsColumnProps,
57
- UseResizeColumnsOptions,
58
- UseResizeColumnsState,
59
- UseRowSelectInstanceProps,
60
- UseRowSelectOptions,
61
- UseRowSelectRowProps,
62
- UseRowSelectState,
63
- UseRowStateCellProps,
64
- UseRowStateInstanceProps,
65
- UseRowStateOptions,
66
- UseRowStateRowProps,
67
- UseRowStateState,
68
- UseSortByColumnOptions,
69
- UseSortByColumnProps,
70
- UseSortByInstanceProps,
71
- UseSortByOptions,
72
- UseSortByState,
73
- UseTableHeaderGroupProps,
74
- UseTableInstanceProps,
75
- UseTableOptions,
76
- } from 'react-table';
77
- import { MaterialReactTableProvider } from './useMRT';
78
- import { MRT_TableContainer } from './table/MRT_TableContainer';
42
+ VisibilityState,
43
+ } from '@tanstack/react-table';
79
44
  import { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';
80
45
  import { MRT_Default_Icons, MRT_Icons } from './icons';
81
46
  import { MRT_FILTER_TYPE } from './enums';
82
- import { defaultFilterFNs } from './filtersFNs';
47
+ import { MRT_TableRoot } from './table/MRT_TableRoot';
83
48
 
84
- export type MRT_TableOptions<D extends {} = {}> = TableOptions<D> &
85
- UseExpandedOptions<D> &
86
- UseFiltersOptions<D> &
87
- UseGlobalFiltersOptions<D> &
88
- UseGroupByOptions<D> &
89
- UsePaginationOptions<D> &
90
- UseResizeColumnsOptions<D> &
91
- UseRowSelectOptions<D> &
92
- UseRowStateOptions<D> &
93
- UseSortByOptions<D> & {
94
- columns: MRT_ColumnInterface[];
95
- data: D[];
96
- initialState?: Partial<MRT_TableState>;
97
- };
49
+ export type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<
50
+ Omit<
51
+ Options<D>,
52
+ 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'
53
+ >
54
+ > & {
55
+ columns: MRT_ColumnInterface<D>[];
56
+ data: D[];
57
+ initialState?: Partial<MRT_TableState<D>>;
58
+ state?: Partial<MRT_TableState<D>>;
59
+ expandRowsFn?: (dataRow: D) => D[];
60
+ };
98
61
 
99
- export type MRT_TableInstance<D extends {} = {}> = TableInstance<D> &
100
- UseTableInstanceProps<D> &
101
- UseColumnOrderInstanceProps<D> &
102
- UseExpandedInstanceProps<D> &
103
- UseFiltersInstanceProps<D> &
104
- UseGlobalFiltersInstanceProps<D> &
105
- UseGroupByInstanceProps<D> &
106
- UsePaginationInstanceProps<D> &
107
- UseRowSelectInstanceProps<D> &
108
- UseRowStateInstanceProps<D> &
109
- UseSortByInstanceProps<D> & {
110
- columns: (Column<D> & MRT_ColumnInstance<D>)[];
111
- footerGroups: MRT_HeaderGroup<D>[];
112
- getToggleAllRowsExpandedProps: () => void;
113
- headerGroups: MRT_HeaderGroup<D>[];
114
- page: MRT_Row<D>[];
115
- resetResizing: () => void;
116
- rows: MRT_Row<D>[];
117
- state: MRT_TableState<D>;
118
- };
62
+ export interface MRT_RowModel<D extends Record<string, any> = {}> {
63
+ flatRows: MRT_Row<D>[];
64
+ rows: MRT_Row<D>[];
65
+ rowsById: { [key: string]: MRT_Row<D> };
66
+ }
119
67
 
120
- export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
121
- UseFiltersColumnOptions<D> &
122
- UseGlobalFiltersColumnOptions<D> &
123
- UseGroupByColumnOptions<D> &
124
- UseResizeColumnsColumnOptions<D> &
125
- UseSortByColumnOptions<D> & {
126
- Edit?: ({
127
- cell,
128
- onChange,
129
- }: {
130
- cell: MRT_Cell<D>;
131
- onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
132
- }) => ReactNode;
133
- Filter?: ({ column }: { column: MRT_HeaderGroup<D> }) => ReactNode;
134
- Footer?: string;
135
- Header?: string;
136
- accessor?: string;
137
- columns?: MRT_ColumnInterface<D>[];
138
- disableClickToCopy?: boolean;
139
- disableColumnActions?: boolean;
140
- disableColumnHiding?: boolean;
141
- disableEditing?: boolean;
142
- disableFilters?: boolean;
143
- filter?: MRT_FilterType | string | FilterType<D>;
144
- filterSelectOptions?: (string | { text: string; value: string })[];
145
- filterTypes?: (MRT_FILTER_TYPE | string)[];
146
- muiTableBodyCellEditTextFieldProps?:
147
- | TextFieldProps
148
- | ((cell: MRT_Cell<D>) => TextFieldProps);
149
- muiTableBodyCellProps?:
150
- | TableCellProps
151
- | ((cell: MRT_Cell<D>) => TableCellProps);
152
- muiTableFooterCellProps?:
153
- | TableCellProps
154
- | ((column: Column<D>) => TableCellProps);
155
- muiTableHeadCellFilterTextFieldProps?:
156
- | TextFieldProps
157
- | ((column: Column<D>) => TextFieldProps);
158
- muiTableHeadCellColumnActionsButtonProps?:
159
- | IconButtonProps
160
- | ((column: Column<D>) => IconButtonProps);
161
- muiTableHeadCellProps?:
162
- | TableCellProps
163
- | ((column: Column<D>) => TableCellProps);
164
- onCellEditChange?: (
165
- event: ChangeEvent<HTMLInputElement>,
166
- cell: MRT_Cell<D>,
167
- ) => void;
168
- onFilterChange?: (
169
- event: ChangeEvent<HTMLInputElement>,
170
- filterValue: any,
171
- ) => void;
68
+ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
69
+ TableInstance<
70
+ Overwrite<
71
+ Partial<DefaultGenerics>,
72
+ {
73
+ Row: D;
74
+ }
75
+ >
76
+ >,
77
+ | 'getAllColumns'
78
+ | 'getAllLeafColumns'
79
+ | 'getExpandedRowModel'
80
+ | 'getPaginationRowModel'
81
+ | 'getPrePaginationRowModel'
82
+ | 'getRowModel'
83
+ | 'getSelectedRowModel'
84
+ | 'getState'
85
+ | 'options'
86
+ > & {
87
+ getAllColumns: () => MRT_ColumnInstance<D>[];
88
+ getAllLeafColumns: () => MRT_ColumnInstance<D>[];
89
+ getExpandedRowModel: () => MRT_RowModel<D>;
90
+ getPaginationRowModel: () => MRT_RowModel<D>;
91
+ getPrePaginationRowModel: () => MRT_RowModel<D>;
92
+ getRowModel: () => MRT_RowModel<D>;
93
+ getSelectedRowModel: () => MRT_RowModel<D>;
94
+ getState: () => MRT_TableState<D>;
95
+ options: MaterialReactTableProps<D> & {
96
+ icons: MRT_Icons;
97
+ idPrefix: string;
98
+ filterTypes: { [key in MRT_FILTER_TYPE]: any };
99
+ localization: MRT_Localization;
100
+ setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
101
+ setCurrentFilterTypes: Dispatch<
102
+ SetStateAction<{
103
+ [key: string]: MRT_FilterType;
104
+ }>
105
+ >;
106
+ setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
107
+ setIsDensePadding: Dispatch<SetStateAction<boolean>>;
108
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
109
+ setShowFilters: Dispatch<SetStateAction<boolean>>;
110
+ setShowSearch: Dispatch<SetStateAction<boolean>>;
172
111
  };
112
+ };
173
113
 
174
- export type MRT_ColumnInstance<D extends {} = {}> = ColumnInstance<D> &
175
- UseFiltersColumnProps<D> &
176
- UseGroupByColumnProps<D> &
177
- UseResizeColumnsColumnProps<D> &
178
- UseSortByColumnProps<D> &
114
+ export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
115
+ TableState,
116
+ 'pagination'
117
+ > & {
118
+ currentEditingRow: MRT_Row<D> | null;
119
+ currentFilterTypes: Record<string, string | Function>;
120
+ currentGlobalFilterType: Record<string, string | Function>;
121
+ isDensePadding: boolean;
122
+ isFullScreen: boolean;
123
+ showFilters: boolean;
124
+ showSearch: boolean;
125
+ pagination: Partial<PaginationState>;
126
+ };
127
+
128
+ export type MRT_ColumnInterface<D extends Record<string, any> = {}> = Omit<
129
+ ColumnDef<D>,
130
+ 'header' | 'footer' | 'columns'
131
+ > & {
132
+ Edit?: ({
133
+ cell,
134
+ tableInstance,
135
+ }: // onChange,
136
+ {
137
+ cell: MRT_Cell<D>;
138
+ tableInstance: MRT_TableInstance<D>;
139
+ // onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
140
+ }) => ReactNode;
141
+ Filter?: ({
142
+ // onChange,
143
+ header,
144
+ tableInstance,
145
+ }: {
146
+ // onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
147
+ header: MRT_Header<D>;
148
+ tableInstance: MRT_TableInstance<D>;
149
+ }) => ReactNode;
150
+ Footer?: ({
151
+ footer,
152
+ tableInstance,
153
+ }: {
154
+ footer: MRT_Header<D>;
155
+ tableInstance: MRT_TableInstance<D>;
156
+ }) => ReactNode;
157
+ Header?: ({
158
+ header,
159
+ tableInstance,
160
+ }: {
161
+ header: MRT_Header<D>;
162
+ tableInstance: MRT_TableInstance<D>;
163
+ }) => ReactNode;
164
+ Cell?: ({
165
+ cell,
166
+ tableInstance,
167
+ }: {
168
+ cell: MRT_Cell<D>;
169
+ tableInstance: MRT_TableInstance<D>;
170
+ }) => ReactNode;
171
+ id: keyof D | string;
172
+ columns?: MRT_ColumnInterface<D>[];
173
+ enableClickToCopy?: boolean;
174
+ enableColumnActions?: boolean;
175
+ enableEditing?: boolean;
176
+ enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
177
+ filter?: MRT_FilterType | string | FilterType<D>;
178
+ filterSelectOptions?: (string | { text: string; value: string })[];
179
+ footer?: string;
180
+ header: string;
181
+ muiTableBodyCellCopyButtonProps?:
182
+ | ButtonProps
183
+ | (({
184
+ tableInstance,
185
+ cell,
186
+ }: {
187
+ tableInstance: MRT_TableInstance;
188
+ cell: MRT_Cell<D>;
189
+ }) => ButtonProps);
190
+ muiTableBodyCellEditTextFieldProps?:
191
+ | TextFieldProps
192
+ | (({
193
+ tableInstance,
194
+ cell,
195
+ }: {
196
+ tableInstance: MRT_TableInstance;
197
+ cell: MRT_Cell<D>;
198
+ }) => TextFieldProps);
199
+ muiTableBodyCellProps?:
200
+ | TableCellProps
201
+ | (({
202
+ tableInstance,
203
+ cell,
204
+ }: {
205
+ tableInstance: MRT_TableInstance;
206
+ cell: MRT_Cell<D>;
207
+ }) => TableCellProps);
208
+ muiTableFooterCellProps?:
209
+ | TableCellProps
210
+ | (({
211
+ tableInstance,
212
+ column,
213
+ }: {
214
+ tableInstance: MRT_TableInstance;
215
+ column: MRT_ColumnInstance<D>;
216
+ }) => TableCellProps);
217
+ muiTableHeadCellColumnActionsButtonProps?:
218
+ | IconButtonProps
219
+ | (({
220
+ tableInstance,
221
+ column,
222
+ }: {
223
+ tableInstance: MRT_TableInstance;
224
+ column: MRT_ColumnInstance<D>;
225
+ }) => IconButtonProps);
226
+ muiTableHeadCellFilterTextFieldProps?:
227
+ | TextFieldProps
228
+ | (({
229
+ tableInstance,
230
+ column,
231
+ }: {
232
+ tableInstance: MRT_TableInstance;
233
+ column: MRT_ColumnInstance<D>;
234
+ }) => TextFieldProps);
235
+ muiTableHeadCellProps?:
236
+ | TableCellProps
237
+ | (({
238
+ tableInstance,
239
+ column,
240
+ }: {
241
+ tableInstance: MRT_TableInstance;
242
+ column: MRT_ColumnInstance<D>;
243
+ }) => TableCellProps);
244
+ onCellEditChange?: ({
245
+ cell,
246
+ event,
247
+ tableInstance,
248
+ }: {
249
+ event: ChangeEvent<HTMLInputElement>;
250
+ cell: MRT_Cell<D>;
251
+ tableInstance: MRT_TableInstance<D>;
252
+ }) => void;
253
+ onColumnFilterValueChange?: ({
254
+ event,
255
+ filterValue,
256
+ }: {
257
+ event: ChangeEvent<HTMLInputElement>;
258
+ filterValue: any;
259
+ }) => void;
260
+ };
261
+
262
+ export type MRT_ColumnInstance<D extends Record<string, any> = {}> = Omit<
263
+ Column<D>,
264
+ 'header' | 'footer' | 'columns'
265
+ > &
179
266
  MRT_ColumnInterface<D> & {
180
267
  columns?: MRT_ColumnInstance<D>[];
181
268
  };
182
269
 
183
- export type MRT_HeaderGroup<D extends {} = {}> = HeaderGroup<D> &
184
- MRT_ColumnInstance<D> &
185
- UseTableHeaderGroupProps<D> & {
186
- headers: MRT_HeaderGroup<D>[];
187
- };
270
+ export type MRT_Header<D extends Record<string, any> = {}> = Omit<
271
+ Header<D>,
272
+ 'column'
273
+ > & {
274
+ column: MRT_ColumnInstance<D>;
275
+ };
188
276
 
189
- export type MRT_Row<D extends {} = {}> = Row<D> &
190
- UseExpandedRowProps<D> &
191
- UseGroupByRowProps<D> &
192
- UseRowSelectRowProps<D> &
193
- UseRowStateRowProps<D> & {
194
- cells: MRT_Cell<D>[];
195
- };
277
+ export type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<
278
+ HeaderGroup<D>,
279
+ 'headers'
280
+ > & {
281
+ headers: MRT_Header<D>[];
282
+ };
196
283
 
197
- export type MRT_Cell<D extends {} = {}, _V = any> = Cell<D> &
198
- UseGroupByCellProps<D> &
199
- UseRowStateCellProps<D> & {
200
- column: MRT_ColumnInstance<D>;
201
- };
284
+ export type MRT_Row<D extends Record<string, any> = {}> = Omit<
285
+ Row<D>,
286
+ | 'getVisibleCells'
287
+ | 'getAllCells'
288
+ | 'subRows'
289
+ | 'original'
290
+ | 'getLeftVisibleCells'
291
+ | 'getRightVisibleCells'
292
+ | 'getCenterVisibleCells'
293
+ > & {
294
+ getAllCells: () => MRT_Cell<D>[];
295
+ getCenterVisibleCells: () => MRT_Cell<D>[];
296
+ getLeftVisibleCells: () => MRT_Cell<D>[];
297
+ getRightVisibleCells: () => MRT_Cell<D>[];
298
+ getVisibleCells: () => MRT_Cell<D>[];
299
+ subRows?: MRT_Row<D>[];
300
+ original: D;
301
+ };
202
302
 
203
- export type MRT_FilterType = MRT_FILTER_TYPE | Function;
303
+ export type MRT_Cell<D extends Record<string, any> = {}> = Omit<
304
+ Cell<D>,
305
+ 'column' | 'row'
306
+ > & {
307
+ column: MRT_ColumnInstance<D>;
308
+ row: MRT_Row<D>;
309
+ };
204
310
 
205
- export type MRT_TableState<D extends {} = {}> = TableState<D> &
206
- UseColumnOrderState<D> &
207
- UseExpandedState<D> &
208
- UseFiltersState<D> &
209
- UseGlobalFiltersState<D> &
210
- UseGroupByState<D> &
211
- UsePaginationState<D> &
212
- UseResizeColumnsState<D> &
213
- UseRowSelectState<D> &
214
- UseRowStateState<D> &
215
- UseSortByState<D> & {
216
- currentEditingRow: MRT_Row<D> | null;
217
- currentFilterTypes: { [key: string]: MRT_FilterType };
218
- densePadding: boolean;
219
- fullScreen: boolean;
220
- showFilters: boolean;
221
- showSearch: boolean;
222
- };
311
+ export type MRT_FilterType = MRT_FILTER_TYPE | Function;
223
312
 
224
- export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
225
- UseExpandedOptions<D> &
226
- UseFiltersOptions<D> &
227
- UseGlobalFiltersOptions<D> &
228
- UseGroupByOptions<D> &
229
- UsePaginationOptions<D> &
230
- UseResizeColumnsOptions<D> &
231
- UseRowSelectOptions<D> &
232
- UseRowStateOptions<D> &
233
- UseSortByOptions<D> &
313
+ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
234
314
  MRT_TableOptions<D> & {
235
- disableColumnActions?: boolean;
236
- disableColumnHiding?: boolean;
237
- disableDensePaddingToggle?: boolean;
238
- disableExpandAll?: boolean;
239
- disableFullScreenToggle?: boolean;
240
- disableSelectAll?: boolean;
241
- disableSubRowTree?: boolean;
242
315
  enableClickToCopy?: boolean;
243
- enableColumnGrouping?: boolean;
244
- enableColumnResizing?: boolean;
316
+ enableColumnActions?: boolean;
317
+ enableColumnPinning?: boolean;
318
+ enableDensePaddingToggle?: boolean;
319
+ enableExpandAll?: boolean;
320
+ enableFullScreenToggle?: boolean;
321
+ enablePagination?: boolean;
245
322
  enableRowActions?: boolean;
323
+ enableStickyHeader?: boolean;
246
324
  enableRowEditing?: boolean;
247
325
  enableRowNumbers?: boolean;
248
- enableSelection?: boolean;
326
+ enableSelectAll?: boolean;
327
+ enabledGlobalFilterTypes?: (MRT_FILTER_TYPE | string)[];
249
328
  filterTypes?: { [key in MRT_FILTER_TYPE]: any };
250
329
  hideTableFooter?: boolean;
251
330
  hideTableHead?: boolean;
@@ -254,141 +333,362 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
254
333
  hideToolbarTop?: boolean;
255
334
  icons?: Partial<MRT_Icons>;
256
335
  idPrefix?: string;
257
- isFetching?: boolean;
336
+ isReloading?: boolean;
258
337
  isLoading?: boolean;
259
338
  localization?: Partial<MRT_Localization>;
260
339
  muiLinearProgressProps?:
261
340
  | LinearProgressProps
262
- | ((tableInstance: MRT_TableInstance) => LinearProgressProps);
263
- muiSearchTextFieldProps?: TextFieldProps;
341
+ | (({
342
+ tableInstance,
343
+ }: {
344
+ tableInstance: MRT_TableInstance;
345
+ }) => LinearProgressProps);
346
+ muiSearchTextFieldProps?:
347
+ | TextFieldProps
348
+ | (({
349
+ tableInstance,
350
+ }: {
351
+ tableInstance: MRT_TableInstance;
352
+ }) => TextFieldProps);
264
353
  muiSelectCheckboxProps?:
265
354
  | CheckboxProps
266
- | ((
267
- isSelectAll?: boolean,
268
- row?: MRT_Row<D>,
269
- tableInstance?: MRT_TableInstance<D>,
270
- ) => CheckboxProps);
355
+ | (({
356
+ tableInstance,
357
+ isSelectAll,
358
+ row,
359
+ }: {
360
+ tableInstance: MRT_TableInstance;
361
+ isSelectAll: boolean;
362
+ row?: MRT_Row<D>;
363
+ }) => CheckboxProps);
364
+ muiTableBodyCellCopyButtonProps?:
365
+ | ButtonProps
366
+ | (({
367
+ tableInstance,
368
+ cell,
369
+ }: {
370
+ tableInstance: MRT_TableInstance;
371
+ cell: MRT_Cell<D>;
372
+ }) => ButtonProps);
271
373
  muiTableBodyCellEditTextFieldProps?:
272
374
  | TextFieldProps
273
- | ((cell?: MRT_Cell<D>) => TextFieldProps);
375
+ | (({
376
+ tableInstance,
377
+ cell,
378
+ }: {
379
+ tableInstance: MRT_TableInstance;
380
+ cell: MRT_Cell<D>;
381
+ }) => TextFieldProps);
274
382
  muiTableBodyCellProps?:
275
383
  | TableCellProps
276
- | ((cell?: MRT_Cell<D>) => TableCellProps);
384
+ | (({
385
+ tableInstance,
386
+ cell,
387
+ }: {
388
+ tableInstance: MRT_TableInstance;
389
+ cell: MRT_Cell<D>;
390
+ }) => TableCellProps);
277
391
  muiTableBodyCellSkeletonProps?:
278
392
  | SkeletonProps
279
- | ((cell?: MRT_Cell<D>) => SkeletonProps);
393
+ | (({
394
+ tableInstance,
395
+ cell,
396
+ }: {
397
+ tableInstance: MRT_TableInstance;
398
+ cell: MRT_Cell<D>;
399
+ }) => SkeletonProps);
280
400
  muiTableBodyProps?:
281
401
  | TableBodyProps
282
- | ((tableInstance: MRT_TableInstance<D>) => TableBodyProps);
283
- muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
402
+ | (({
403
+ tableInstance,
404
+ }: {
405
+ tableInstance: MRT_TableInstance;
406
+ }) => TableBodyProps);
407
+ muiTableBodyRowProps?:
408
+ | TableRowProps
409
+ | (({
410
+ tableInstance,
411
+ row,
412
+ }: {
413
+ tableInstance: MRT_TableInstance;
414
+ row: MRT_Row<D>;
415
+ }) => TableRowProps);
284
416
  muiTableContainerProps?:
285
417
  | TableContainerProps
286
- | ((tableInstance: MRT_TableInstance<D>) => TableContainerProps);
418
+ | (({
419
+ tableInstance,
420
+ }: {
421
+ tableInstance: MRT_TableInstance;
422
+ }) => TableContainerProps);
287
423
  muiTableDetailPanelProps?:
288
424
  | TableCellProps
289
- | ((row: Row<D>) => TableCellProps);
425
+ | (({
426
+ tableInstance,
427
+ row,
428
+ }: {
429
+ tableInstance: MRT_TableInstance;
430
+ row: MRT_Row<D>;
431
+ }) => TableCellProps);
290
432
  muiTableFooterCellProps?:
291
433
  | TableCellProps
292
- | ((column: Column<D>) => TableCellProps);
434
+ | (({
435
+ tableInstance,
436
+ column,
437
+ }: {
438
+ tableInstance: MRT_TableInstance;
439
+ column: MRT_ColumnInstance<D>;
440
+ }) => TableCellProps);
293
441
  muiTableFooterProps?:
294
442
  | TableFooterProps
295
- | ((tableInstance: MRT_TableInstance<D>) => TableFooterProps);
443
+ | (({
444
+ tableInstance,
445
+ }: {
446
+ tableInstance: MRT_TableInstance;
447
+ }) => TableFooterProps);
296
448
  muiTableFooterRowProps?:
297
449
  | TableRowProps
298
- | ((footerGroup: MRT_HeaderGroup<D>) => TableRowProps);
450
+ | (({
451
+ tableInstance,
452
+ footerGroup,
453
+ }: {
454
+ tableInstance: MRT_TableInstance;
455
+ footerGroup: MRT_HeaderGroup<D>;
456
+ }) => TableRowProps);
299
457
  muiTableHeadCellColumnActionsButtonProps?:
300
458
  | IconButtonProps
301
- | ((column: Column<D>) => IconButtonProps);
459
+ | (({
460
+ tableInstance,
461
+ column,
462
+ }: {
463
+ tableInstance: MRT_TableInstance;
464
+ column: MRT_ColumnInstance<D>;
465
+ }) => IconButtonProps);
302
466
  muiTableHeadCellFilterTextFieldProps?:
303
467
  | TextFieldProps
304
- | ((column: Column<D>) => TextFieldProps);
468
+ | (({
469
+ tableInstance,
470
+ column,
471
+ }: {
472
+ tableInstance: MRT_TableInstance;
473
+ column: MRT_ColumnInstance<D>;
474
+ }) => TextFieldProps);
305
475
  muiTableHeadCellProps?:
306
476
  | TableCellProps
307
- | ((column: Column<D>) => TableCellProps);
477
+ | (({
478
+ tableInstance,
479
+ column,
480
+ }: {
481
+ tableInstance: MRT_TableInstance;
482
+ column: MRT_ColumnInstance<D>;
483
+ }) => TableCellProps);
308
484
  muiTableHeadProps?:
309
485
  | TableHeadProps
310
- | ((tableInstance: MRT_TableInstance<D>) => TableHeadProps);
486
+ | (({
487
+ tableInstance,
488
+ }: {
489
+ tableInstance: MRT_TableInstance;
490
+ }) => TableHeadProps);
311
491
  muiTableHeadRowProps?:
312
492
  | TableRowProps
313
- | ((row: MRT_HeaderGroup<D>) => TableRowProps);
493
+ | (({
494
+ tableInstance,
495
+ headerGroup,
496
+ }: {
497
+ tableInstance: MRT_TableInstance;
498
+ headerGroup: MRT_HeaderGroup<D>;
499
+ }) => TableRowProps);
500
+ muiTablePaperProps?:
501
+ | PaperProps
502
+ | (({
503
+ tableInstance,
504
+ }: {
505
+ tableInstance: MRT_TableInstance;
506
+ }) => PaperProps);
314
507
  muiTablePaginationProps?:
315
508
  | Partial<TablePaginationProps>
316
- | ((
317
- tableInstance: MRT_TableInstance<D>,
318
- ) => Partial<TablePaginationProps>);
509
+ | (({
510
+ tableInstance,
511
+ }: {
512
+ tableInstance: MRT_TableInstance;
513
+ }) => Partial<TablePaginationProps>);
319
514
  muiTableProps?:
320
515
  | TableProps
321
- | ((tableInstance: MRT_TableInstance<D>) => TableProps);
516
+ | (({
517
+ tableInstance,
518
+ }: {
519
+ tableInstance: MRT_TableInstance;
520
+ }) => TableProps);
322
521
  muiTableToolbarAlertBannerProps?:
323
522
  | AlertProps
324
- | ((tableInstance: MRT_TableInstance<D>) => AlertProps);
523
+ | (({
524
+ tableInstance,
525
+ }: {
526
+ tableInstance: MRT_TableInstance;
527
+ }) => AlertProps);
325
528
  muiTableToolbarBottomProps?:
326
529
  | ToolbarProps
327
- | ((tableInstance: MRT_TableInstance<D>) => ToolbarProps);
530
+ | (({
531
+ tableInstance,
532
+ }: {
533
+ tableInstance: MRT_TableInstance;
534
+ }) => ToolbarProps);
328
535
  muiTableToolbarTopProps?:
329
536
  | ToolbarProps
330
- | ((tableInstance: MRT_TableInstance<D>) => ToolbarProps);
331
- onCellClick?: (
332
- event: MouseEvent<HTMLTableCellElement>,
333
- cell: MRT_Cell<D>,
334
- ) => void;
335
- onColumnHide?: (column: Column<D>, hiddenColumns?: string[]) => void;
336
- onDetailPanelClick?: (
337
- event: MouseEvent<HTMLTableCellElement>,
338
- row: Row<D>,
339
- ) => void;
340
- onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
341
- onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
342
- onRowEditSubmit?: (row: Row<D>) => Promise<void> | void;
343
- onRowExpandChange?: (
344
- event: MouseEvent<HTMLButtonElement>,
345
- row: Row<D>,
346
- ) => void;
347
- onSelectChange?: (
348
- event: ChangeEvent,
349
- row: Row<D>,
350
- selectedRows: Row<D>[],
351
- ) => void;
352
- onSelectAllChange?: (event: ChangeEvent, selectedRows: Row<D>[]) => void;
537
+ | (({
538
+ tableInstance,
539
+ }: {
540
+ tableInstance: MRT_TableInstance;
541
+ }) => ToolbarProps);
542
+ onCellClick?: ({
543
+ cell,
544
+ event,
545
+ tableInstance,
546
+ }: {
547
+ cell: MRT_Cell<D>;
548
+ tableInstance: MRT_TableInstance<D>;
549
+ event: MouseEvent<HTMLTableCellElement>;
550
+ }) => void;
551
+ onColumnHide?: ({
552
+ column,
553
+ columnVisibility,
554
+ tableInstance,
555
+ }: {
556
+ column: MRT_ColumnInstance<D>;
557
+ columnVisibility: VisibilityState;
558
+ tableInstance: MRT_TableInstance<D>;
559
+ }) => void;
560
+ onDetailPanelClick?: ({
561
+ event,
562
+ row,
563
+ tableInstance,
564
+ }: {
565
+ event: MouseEvent<HTMLTableCellElement>;
566
+ row: MRT_Row<D>;
567
+ tableInstance: MRT_TableInstance<D>;
568
+ }) => void;
569
+ onGlobalFilterChange?: ({
570
+ event,
571
+ tableInstance,
572
+ }: {
573
+ event: ChangeEvent<HTMLInputElement>;
574
+ tableInstance: MRT_TableInstance<D>;
575
+ }) => void;
576
+ onRowClick?: ({
577
+ event,
578
+ row,
579
+ tableInstance,
580
+ }: {
581
+ event: MouseEvent<HTMLTableRowElement>;
582
+ row: MRT_Row<D>;
583
+ tableInstance: MRT_TableInstance<D>;
584
+ }) => void;
585
+ onRowEditSubmit?: ({
586
+ row,
587
+ tableInstance,
588
+ }: {
589
+ row: MRT_Row<D>;
590
+ tableInstance: MRT_TableInstance<D>;
591
+ }) => Promise<void> | void;
592
+ onRowExpandChange?: ({
593
+ event,
594
+ row,
595
+ }: {
596
+ event: MouseEvent<HTMLButtonElement>;
597
+ row: MRT_Row<D>;
598
+ tableInstance: MRT_TableInstance<D>;
599
+ }) => void;
600
+ onSelectAllChange?: ({
601
+ event,
602
+ selectedRows,
603
+ tableInstance,
604
+ }: {
605
+ event: ChangeEvent;
606
+ selectedRows: MRT_Row<D>[];
607
+ tableInstance: MRT_TableInstance<D>;
608
+ }) => void;
609
+ onSelectChange?: ({
610
+ event,
611
+ row,
612
+ selectedRows,
613
+ tableInstance,
614
+ }: {
615
+ event: ChangeEvent;
616
+ row: MRT_Row<D>;
617
+ selectedRows: MRT_Row<D>[];
618
+ tableInstance: MRT_TableInstance<D>;
619
+ }) => void;
353
620
  positionActionsColumn?: 'first' | 'last';
354
621
  positionPagination?: 'bottom' | 'top' | 'both';
355
622
  positionToolbarActions?: 'bottom' | 'top';
356
623
  positionToolbarAlertBanner?: 'bottom' | 'top';
357
- renderDetailPanel?: (row: Row<D>) => ReactNode;
358
- renderRowActionMenuItems?: (
359
- rowData: Row<D>,
360
- tableInstance: MRT_TableInstance<D>,
361
- closeMenu: () => void,
362
- ) => ReactNode[];
363
- renderRowActions?: (
364
- row: Row<D>,
365
- tableInstance: MRT_TableInstance<D>,
366
- ) => ReactNode;
367
- renderToolbarCustomActions?: (
368
- tableInstance: MRT_TableInstance<D>,
369
- ) => ReactNode;
370
- renderToolbarInternalActions?: (
371
- tableInstance: MRT_TableInstance<D>,
372
- {
373
- MRT_ToggleSearchButton,
374
- MRT_ToggleFiltersButton,
375
- MRT_ShowHideColumnsButton,
376
- MRT_ToggleDensePaddingButton,
377
- MRT_FullScreenToggleButton,
378
- }: {
379
- MRT_ToggleSearchButton: FC<IconButtonProps>;
380
- MRT_ToggleFiltersButton: FC<IconButtonProps>;
381
- MRT_ShowHideColumnsButton: FC<IconButtonProps>;
382
- MRT_ToggleDensePaddingButton: FC<IconButtonProps>;
383
- MRT_FullScreenToggleButton: FC<IconButtonProps>;
384
- },
385
- ) => ReactNode;
624
+ renderDetailPanel?: ({
625
+ row,
626
+ tableInstance,
627
+ }: {
628
+ row: MRT_Row<D>;
629
+ tableInstance: MRT_TableInstance<D>;
630
+ }) => ReactNode;
631
+ renderRowActionMenuItems?: ({
632
+ closeMenu,
633
+ row,
634
+ tableInstance,
635
+ }: {
636
+ closeMenu: () => void;
637
+ row: MRT_Row<D>;
638
+ tableInstance: MRT_TableInstance<D>;
639
+ }) => ReactNode[];
640
+ renderRowActions?: ({
641
+ row,
642
+ tableInstance,
643
+ }: {
644
+ row: MRT_Row<D>;
645
+ tableInstance: MRT_TableInstance<D>;
646
+ }) => ReactNode;
647
+ renderToolbarCustomActions?: ({
648
+ tableInstance,
649
+ }: {
650
+ tableInstance: MRT_TableInstance<D>;
651
+ }) => ReactNode;
652
+ renderToolbarInternalActions?: ({
653
+ tableInstance,
654
+ MRT_ToggleSearchButton,
655
+ MRT_ToggleFiltersButton,
656
+ MRT_ShowHideColumnsButton,
657
+ MRT_ToggleDensePaddingButton,
658
+ MRT_FullScreenToggleButton,
659
+ }: {
660
+ tableInstance: MRT_TableInstance<D>;
661
+ MRT_ToggleSearchButton: FC<
662
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
663
+ >;
664
+ MRT_ToggleFiltersButton: FC<
665
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
666
+ >;
667
+ MRT_ShowHideColumnsButton: FC<
668
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
669
+ >;
670
+ MRT_ToggleDensePaddingButton: FC<
671
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
672
+ >;
673
+ MRT_FullScreenToggleButton: FC<
674
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
675
+ >;
676
+ }) => ReactNode;
386
677
  };
387
678
 
388
- export default <D extends {} = {}>({
389
- defaultColumn = { minWidth: 50, maxWidth: 1000 },
679
+ export default <D extends Record<string, any> = {}>({
680
+ enableColumnActions = true,
681
+ enableColumnFilters = true,
682
+ enableDensePaddingToggle = true,
683
+ enableExpandAll = true,
684
+ enableFullScreenToggle = true,
685
+ enableGlobalFilter = true,
686
+ enableHiding = true,
687
+ enablePagination = true,
688
+ enableSelectAll = true,
689
+ enableSorting = true,
690
+ enableStickyHeader = true,
390
691
  filterTypes,
391
- globalFilter = 'fuzzy',
392
692
  icons,
393
693
  localization,
394
694
  positionActionsColumn = 'first',
@@ -397,13 +697,18 @@ export default <D extends {} = {}>({
397
697
  positionToolbarAlertBanner = 'top',
398
698
  ...rest
399
699
  }: MaterialReactTableProps<D>) => (
400
- <MaterialReactTableProvider
401
- //@ts-ignore
402
- defaultColumn={defaultColumn}
403
- //@ts-ignore
404
- filterTypes={{ ...defaultFilterFNs, ...filterTypes }}
405
- //@ts-ignore
406
- globalFilter={globalFilter}
700
+ <MRT_TableRoot
701
+ enableColumnActions={enableColumnActions}
702
+ enableColumnFilters={enableColumnFilters}
703
+ enableDensePaddingToggle={enableDensePaddingToggle}
704
+ enableExpandAll={enableExpandAll}
705
+ enableFullScreenToggle={enableFullScreenToggle}
706
+ enableGlobalFilter={enableGlobalFilter}
707
+ enableHiding={enableHiding}
708
+ enablePagination={enablePagination}
709
+ enableSelectAll={enableSelectAll}
710
+ enableSorting={enableSorting}
711
+ enableStickyHeader={enableStickyHeader}
407
712
  icons={{ ...MRT_Default_Icons, ...icons }}
408
713
  localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
409
714
  positionActionsColumn={positionActionsColumn}
@@ -411,7 +716,5 @@ export default <D extends {} = {}>({
411
716
  positionToolbarActions={positionToolbarActions}
412
717
  positionToolbarAlertBanner={positionToolbarAlertBanner}
413
718
  {...rest}
414
- >
415
- <MRT_TableContainer />
416
- </MaterialReactTableProvider>
719
+ />
417
720
  );