material-react-table 0.6.10 → 0.7.0-alpha.1

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 (103) hide show
  1. package/dist/MaterialReactTable.d.ts +142 -82
  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/footer/MRT_TableFooter.d.ts +3 -0
  18. package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
  19. package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
  20. package/dist/head/MRT_TableHead.d.ts +3 -0
  21. package/dist/head/MRT_TableHeadCell.d.ts +4 -18
  22. package/dist/head/MRT_TableHeadRow.d.ts +2 -1
  23. package/dist/icons.d.ts +1 -1
  24. package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
  25. package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
  26. package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
  27. package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
  28. package/dist/localization.d.ts +7 -2
  29. package/dist/material-react-table.cjs.development.js +2142 -1729
  30. package/dist/material-react-table.cjs.development.js.map +1 -1
  31. package/dist/material-react-table.cjs.production.min.js +1 -1
  32. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  33. package/dist/material-react-table.esm.js +2143 -1730
  34. package/dist/material-react-table.esm.js.map +1 -1
  35. package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
  36. package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
  37. package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
  38. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
  39. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
  40. package/dist/table/MRT_Table.d.ts +3 -0
  41. package/dist/table/MRT_TableContainer.d.ts +2 -0
  42. package/dist/table/MRT_TablePaper.d.ts +7 -0
  43. package/dist/table/MRT_TableRoot.d.ts +3 -0
  44. package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
  45. package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
  46. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
  47. package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
  48. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
  49. package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
  50. package/dist/utils.d.ts +12 -2
  51. package/package.json +27 -28
  52. package/src/MaterialReactTable.tsx +298 -242
  53. package/src/body/MRT_TableBody.tsx +25 -21
  54. package/src/body/MRT_TableBodyCell.tsx +73 -58
  55. package/src/body/MRT_TableBodyRow.tsx +35 -74
  56. package/src/body/MRT_TableDetailPanel.tsx +16 -14
  57. package/src/buttons/MRT_CopyButton.tsx +14 -7
  58. package/src/buttons/MRT_EditActionButtons.tsx +13 -12
  59. package/src/buttons/MRT_ExpandAllButton.tsx +24 -9
  60. package/src/buttons/MRT_ExpandButton.tsx +21 -14
  61. package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
  62. package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
  63. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +17 -9
  64. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
  65. package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
  66. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +26 -21
  67. package/src/buttons/MRT_ToggleSearchButton.tsx +18 -11
  68. package/src/footer/MRT_TableFooter.tsx +23 -7
  69. package/src/footer/MRT_TableFooterCell.tsx +32 -24
  70. package/src/footer/MRT_TableFooterRow.tsx +20 -38
  71. package/src/head/MRT_TableHead.tsx +23 -7
  72. package/src/head/MRT_TableHeadCell.tsx +201 -152
  73. package/src/head/MRT_TableHeadRow.tsx +15 -103
  74. package/src/icons.ts +3 -3
  75. package/src/inputs/MRT_EditCellTextField.tsx +23 -24
  76. package/src/inputs/MRT_FilterTextField.tsx +51 -30
  77. package/src/inputs/MRT_SearchTextField.tsx +38 -21
  78. package/src/inputs/MRT_SelectCheckbox.tsx +34 -24
  79. package/src/localization.ts +13 -2
  80. package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
  81. package/src/menus/MRT_FilterTypeMenu.tsx +28 -22
  82. package/src/menus/MRT_RowActionMenu.tsx +16 -11
  83. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
  84. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +28 -17
  85. package/src/table/MRT_Table.tsx +24 -14
  86. package/src/table/MRT_TableContainer.tsx +109 -44
  87. package/src/table/MRT_TablePaper.tsx +61 -0
  88. package/src/table/MRT_TableRoot.tsx +236 -0
  89. package/src/toolbar/MRT_LinearProgressBar.tsx +9 -6
  90. package/src/toolbar/MRT_TablePagination.tsx +28 -18
  91. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +31 -19
  92. package/src/toolbar/MRT_ToolbarBottom.tsx +31 -20
  93. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +29 -16
  94. package/src/toolbar/MRT_ToolbarTop.tsx +34 -27
  95. package/src/utils.ts +37 -8
  96. package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
  97. package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
  98. package/dist/useMRT.d.ts +0 -28
  99. package/src/@types/faker.d.ts +0 -4
  100. package/src/@types/react-table-config.d.ts +0 -53
  101. package/src/head/MRT_TableHeadCellActions.tsx +0 -29
  102. package/src/table/MRT_TableSpacerCell.tsx +0 -20
  103. package/src/useMRT.tsx +0 -226
@@ -1,10 +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,
4
11
  ButtonProps,
5
12
  CheckboxProps,
6
13
  IconButtonProps,
7
14
  LinearProgressProps,
15
+ PaperProps,
8
16
  SkeletonProps,
9
17
  TableBodyProps,
10
18
  TableCellProps,
@@ -20,237 +28,251 @@ import {
20
28
  import {
21
29
  Cell,
22
30
  Column,
23
- ColumnInstance,
31
+ ColumnDef,
32
+ DefaultGenerics,
24
33
  FilterType,
25
- ColumnInterface,
34
+ Header,
26
35
  HeaderGroup,
36
+ Options,
37
+ Overwrite,
38
+ PaginationState,
27
39
  Row,
28
40
  TableInstance,
29
- TableOptions,
30
41
  TableState,
31
- UseColumnOrderInstanceProps,
32
- UseColumnOrderState,
33
- UseExpandedInstanceProps,
34
- UseExpandedOptions,
35
- UseExpandedRowProps,
36
- UseExpandedState,
37
- UseFiltersColumnOptions,
38
- UseFiltersColumnProps,
39
- UseFiltersInstanceProps,
40
- UseFiltersOptions,
41
- UseFiltersState,
42
- UseGlobalFiltersColumnOptions,
43
- UseGlobalFiltersInstanceProps,
44
- UseGlobalFiltersOptions,
45
- UseGlobalFiltersState,
46
- UseGroupByCellProps,
47
- UseGroupByColumnOptions,
48
- UseGroupByColumnProps,
49
- UseGroupByInstanceProps,
50
- UseGroupByOptions,
51
- UseGroupByRowProps,
52
- UseGroupByState,
53
- UsePaginationInstanceProps,
54
- UsePaginationOptions,
55
- UsePaginationState,
56
- UseResizeColumnsColumnOptions,
57
- UseResizeColumnsColumnProps,
58
- UseResizeColumnsOptions,
59
- UseResizeColumnsState,
60
- UseRowSelectInstanceProps,
61
- UseRowSelectOptions,
62
- UseRowSelectRowProps,
63
- UseRowSelectState,
64
- UseRowStateCellProps,
65
- UseRowStateInstanceProps,
66
- UseRowStateOptions,
67
- UseRowStateRowProps,
68
- UseRowStateState,
69
- UseSortByColumnOptions,
70
- UseSortByColumnProps,
71
- UseSortByInstanceProps,
72
- UseSortByOptions,
73
- UseSortByState,
74
- UseTableHeaderGroupProps,
75
- UseTableInstanceProps,
76
- UseTableOptions,
77
- } from 'react-table';
78
- import { MaterialReactTableProvider } from './useMRT';
79
- import { MRT_TableContainer } from './table/MRT_TableContainer';
42
+ } from '@tanstack/react-table';
80
43
  import { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';
81
44
  import { MRT_Default_Icons, MRT_Icons } from './icons';
82
45
  import { MRT_FILTER_TYPE } from './enums';
83
- import { defaultFilterFNs } from './filtersFNs';
46
+ import { MRT_TableRoot } from './table/MRT_TableRoot';
84
47
 
85
- export type MRT_TableOptions<D extends {} = {}> = TableOptions<D> &
86
- UseExpandedOptions<D> &
87
- UseFiltersOptions<D> &
88
- UseGlobalFiltersOptions<D> &
89
- UseGroupByOptions<D> &
90
- UsePaginationOptions<D> &
91
- UseResizeColumnsOptions<D> &
92
- UseRowSelectOptions<D> &
93
- UseRowStateOptions<D> &
94
- UseSortByOptions<D> & {
95
- columns: MRT_ColumnInterface[];
96
- data: D[];
97
- initialState?: Partial<MRT_TableState>;
98
- };
48
+ export type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<
49
+ Omit<
50
+ Options<D>,
51
+ 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'
52
+ >
53
+ > & {
54
+ columns: MRT_ColumnInterface<D>[];
55
+ data: D[];
56
+ initialState?: Partial<MRT_TableState<D>>;
57
+ state?: Partial<MRT_TableState<D>>;
58
+ expandRowsFn?: (dataRow: D) => D[];
59
+ };
99
60
 
100
- export type MRT_TableInstance<D extends {} = {}> = TableInstance<D> &
101
- UseTableInstanceProps<D> &
102
- UseColumnOrderInstanceProps<D> &
103
- UseExpandedInstanceProps<D> &
104
- UseFiltersInstanceProps<D> &
105
- UseGlobalFiltersInstanceProps<D> &
106
- UseGroupByInstanceProps<D> &
107
- UsePaginationInstanceProps<D> &
108
- UseRowSelectInstanceProps<D> &
109
- UseRowStateInstanceProps<D> &
110
- UseSortByInstanceProps<D> & {
111
- columns: (Column<D> & MRT_ColumnInstance<D>)[];
112
- footerGroups: MRT_HeaderGroup<D>[];
113
- getToggleAllRowsExpandedProps: () => void;
114
- headerGroups: MRT_HeaderGroup<D>[];
115
- page: MRT_Row<D>[];
116
- resetResizing: () => void;
117
- rows: MRT_Row<D>[];
118
- state: MRT_TableState<D>;
119
- };
61
+ export interface MRT_RowModel<D extends Record<string, any> = {}> {
62
+ flatRows: MRT_Row<D>[];
63
+ rows: MRT_Row<D>[];
64
+ rowsById: { [key: string]: MRT_Row<D> };
65
+ }
120
66
 
121
- export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
122
- UseFiltersColumnOptions<D> &
123
- UseGlobalFiltersColumnOptions<D> &
124
- UseGroupByColumnOptions<D> &
125
- UseResizeColumnsColumnOptions<D> &
126
- UseSortByColumnOptions<D> & {
127
- Edit?: ({
128
- cell,
129
- onChange,
130
- }: {
131
- cell: MRT_Cell<D>;
132
- onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
133
- }) => ReactNode;
134
- Filter?: ({ column }: { column: MRT_HeaderGroup<D> }) => ReactNode;
135
- Footer?: string;
136
- Header?: string;
137
- accessor?: string;
138
- columns?: MRT_ColumnInterface<D>[];
139
- disableClickToCopy?: boolean;
140
- disableColumnActions?: boolean;
141
- disableColumnHiding?: boolean;
142
- disableEditing?: boolean;
143
- disableFilters?: boolean;
144
- enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
145
- filter?: MRT_FilterType | string | FilterType<D>;
146
- filterSelectOptions?: (string | { text: string; value: string })[];
147
- muiTableBodyCellCopyButtonProps?:
148
- | ButtonProps
149
- | ((cell?: MRT_Cell<D>) => ButtonProps);
150
- muiTableBodyCellEditTextFieldProps?:
151
- | TextFieldProps
152
- | ((cell: MRT_Cell<D>) => TextFieldProps);
153
- muiTableBodyCellProps?:
154
- | TableCellProps
155
- | ((cell: MRT_Cell<D>) => TableCellProps);
156
- muiTableFooterCellProps?:
157
- | TableCellProps
158
- | ((column: Column<D>) => TableCellProps);
159
- muiTableHeadCellColumnActionsButtonProps?:
160
- | IconButtonProps
161
- | ((column: Column<D>) => IconButtonProps);
162
- muiTableHeadCellFilterTextFieldProps?:
163
- | TextFieldProps
164
- | ((column: Column<D>) => TextFieldProps);
165
- muiTableHeadCellProps?:
166
- | TableCellProps
167
- | ((column: Column<D>) => TableCellProps);
168
- onCellEditChange?: (
169
- event: ChangeEvent<HTMLInputElement>,
170
- cell: MRT_Cell<D>,
171
- ) => void;
172
- onFilterChange?: (
173
- event: ChangeEvent<HTMLInputElement>,
174
- filterValue: any,
175
- ) => void;
67
+ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
68
+ TableInstance<
69
+ Overwrite<
70
+ Partial<DefaultGenerics>,
71
+ {
72
+ Row: D;
73
+ }
74
+ >
75
+ >,
76
+ | 'getAllColumns'
77
+ | 'getAllLeafColumns'
78
+ | 'getExpandedRowModel'
79
+ | 'getPaginationRowModel'
80
+ | 'getPrePaginationRowModel'
81
+ | 'getRowModel'
82
+ | 'getSelectedRowModel'
83
+ | 'getState'
84
+ | 'options'
85
+ > & {
86
+ getAllColumns: () => MRT_ColumnInstance<D>[];
87
+ getAllLeafColumns: () => MRT_ColumnInstance<D>[];
88
+ getExpandedRowModel: () => MRT_RowModel;
89
+ getPaginationRowModel: () => MRT_RowModel;
90
+ getPrePaginationRowModel: () => MRT_RowModel;
91
+ getRowModel: () => MRT_RowModel;
92
+ getSelectedRowModel: () => MRT_RowModel;
93
+ getState: () => MRT_TableState<D>;
94
+ options: MaterialReactTableProps<D> & {
95
+ icons: MRT_Icons;
96
+ idPrefix: string;
97
+ filterTypes: { [key in MRT_FILTER_TYPE]: any };
98
+ localization: MRT_Localization;
99
+ setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
100
+ setCurrentFilterTypes: Dispatch<
101
+ SetStateAction<{
102
+ [key: string]: MRT_FilterType;
103
+ }>
104
+ >;
105
+ setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
106
+ setIsDensePadding: Dispatch<SetStateAction<boolean>>;
107
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
108
+ setShowFilters: Dispatch<SetStateAction<boolean>>;
109
+ setShowSearch: Dispatch<SetStateAction<boolean>>;
176
110
  };
111
+ };
177
112
 
178
- export type MRT_ColumnInstance<D extends {} = {}> = ColumnInstance<D> &
179
- UseFiltersColumnProps<D> &
180
- UseGroupByColumnProps<D> &
181
- UseResizeColumnsColumnProps<D> &
182
- UseSortByColumnProps<D> &
113
+ export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
114
+ TableState,
115
+ 'pagination'
116
+ > & {
117
+ currentEditingRow: MRT_Row<D> | null;
118
+ currentFilterTypes: Record<string, string | Function>;
119
+ currentGlobalFilterType: Record<string, string | Function>;
120
+ isDensePadding: boolean;
121
+ isFullScreen: boolean;
122
+ showFilters: boolean;
123
+ showSearch: boolean;
124
+ pagination: Partial<PaginationState>;
125
+ };
126
+
127
+ export type MRT_ColumnInterface<D extends Record<string, any> = {}> = Omit<
128
+ ColumnDef<D>,
129
+ 'header' | 'footer' | 'columns'
130
+ > & {
131
+ Edit?: ({
132
+ cell,
133
+ tableInstance,
134
+ onChange,
135
+ }: {
136
+ cell: MRT_Cell<D>;
137
+ tableInstance: MRT_TableInstance<D>;
138
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
139
+ }) => ReactNode;
140
+ Filter?: ({
141
+ header,
142
+ tableInstance,
143
+ }: {
144
+ header: MRT_Header<D>;
145
+ tableInstance: MRT_TableInstance<D>;
146
+ }) => ReactNode;
147
+ Footer?: ({
148
+ footer,
149
+ tableInstance,
150
+ }: {
151
+ footer: MRT_Header<D>;
152
+ tableInstance: MRT_TableInstance<D>;
153
+ }) => ReactNode;
154
+ Header?: ({
155
+ header,
156
+ tableInstance,
157
+ }: {
158
+ header: MRT_Header<D>;
159
+ tableInstance: MRT_TableInstance<D>;
160
+ }) => ReactNode;
161
+ Cell?: ({
162
+ cell,
163
+ tableInstance,
164
+ }: {
165
+ cell: MRT_Cell<D>;
166
+ tableInstance: MRT_TableInstance<D>;
167
+ }) => ReactNode;
168
+ id: keyof D | string;
169
+ columns?: MRT_ColumnInterface<D>[];
170
+ enableClickToCopy?: boolean;
171
+ enableColumnActions?: boolean;
172
+ enableEditing?: boolean;
173
+ enableColumnFilters?: boolean;
174
+ enableHiding?: boolean;
175
+ enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
176
+ filter?: MRT_FilterType | string | FilterType<D>;
177
+ filterSelectOptions?: (string | { text: string; value: string })[];
178
+ footer?: string;
179
+ header: string;
180
+ muiTableBodyCellCopyButtonProps?:
181
+ | ButtonProps
182
+ | ((cell?: MRT_Cell<D>) => ButtonProps);
183
+ muiTableBodyCellEditTextFieldProps?:
184
+ | TextFieldProps
185
+ | ((cell: MRT_Cell<D>) => TextFieldProps);
186
+ muiTableBodyCellProps?:
187
+ | TableCellProps
188
+ | ((cell: MRT_Cell<D>) => TableCellProps);
189
+ muiTableFooterCellProps?:
190
+ | TableCellProps
191
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
192
+ muiTableHeadCellColumnActionsButtonProps?:
193
+ | IconButtonProps
194
+ | ((column: MRT_ColumnInstance<D>) => IconButtonProps);
195
+ muiTableHeadCellFilterTextFieldProps?:
196
+ | TextFieldProps
197
+ | ((column: MRT_ColumnInstance<D>) => TextFieldProps);
198
+ muiTableHeadCellProps?:
199
+ | TableCellProps
200
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
201
+ onCellEditChange?: (
202
+ event: ChangeEvent<HTMLInputElement>,
203
+ cell: MRT_Cell<D>,
204
+ ) => void;
205
+ onFilterChange?: (
206
+ event: ChangeEvent<HTMLInputElement>,
207
+ filterValue: any,
208
+ ) => void;
209
+ };
210
+
211
+ export type MRT_ColumnInstance<D extends Record<string, any> = {}> = Omit<
212
+ Column<D>,
213
+ 'header' | 'footer' | 'columns'
214
+ > &
183
215
  MRT_ColumnInterface<D> & {
184
216
  columns?: MRT_ColumnInstance<D>[];
185
217
  };
186
218
 
187
- export type MRT_HeaderGroup<D extends {} = {}> = HeaderGroup<D> &
188
- MRT_ColumnInstance<D> &
189
- UseTableHeaderGroupProps<D> & {
190
- headers: MRT_HeaderGroup<D>[];
191
- };
219
+ export type MRT_Header<D extends Record<string, any> = {}> = Omit<
220
+ Header<D>,
221
+ 'column'
222
+ > & {
223
+ column: MRT_ColumnInstance<D>;
224
+ };
192
225
 
193
- export type MRT_Row<D extends {} = {}> = Row<D> &
194
- UseExpandedRowProps<D> &
195
- UseGroupByRowProps<D> &
196
- UseRowSelectRowProps<D> &
197
- UseRowStateRowProps<D> & {
198
- cells: MRT_Cell<D>[];
199
- };
226
+ export type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<
227
+ HeaderGroup<D>,
228
+ 'headers'
229
+ > & {
230
+ headers: MRT_Header<D>[];
231
+ };
200
232
 
201
- export type MRT_Cell<D extends {} = {}, _V = any> = Cell<D> &
202
- UseGroupByCellProps<D> &
203
- UseRowStateCellProps<D> & {
204
- column: MRT_ColumnInstance<D>;
205
- };
233
+ export type MRT_Row<D extends Record<string, any> = {}> = Omit<
234
+ Row<D>,
235
+ | 'getVisibleCells'
236
+ | 'getAllCells'
237
+ | 'subRows'
238
+ | 'original'
239
+ | 'getLeftVisibleCells'
240
+ | 'getRightVisibleCells'
241
+ | 'getCenterVisibleCells'
242
+ > & {
243
+ getAllCells: () => MRT_Cell<D>[];
244
+ getCenterVisibleCells: () => MRT_Cell<D>[];
245
+ getLeftVisibleCells: () => MRT_Cell<D>[];
246
+ getRightVisibleCells: () => MRT_Cell<D>[];
247
+ getVisibleCells: () => MRT_Cell<D>[];
248
+ subRows?: MRT_Row<D>[];
249
+ original: D;
250
+ };
206
251
 
207
- export type MRT_FilterType = MRT_FILTER_TYPE | Function;
252
+ export type MRT_Cell<D extends Record<string, any> = {}> = Omit<
253
+ Cell<D>,
254
+ 'column' | 'row'
255
+ > & {
256
+ column: MRT_ColumnInstance<D>;
257
+ row: MRT_Row<D>;
258
+ };
208
259
 
209
- export type MRT_TableState<D extends {} = {}> = TableState<D> &
210
- UseColumnOrderState<D> &
211
- UseExpandedState<D> &
212
- UseFiltersState<D> &
213
- UseGlobalFiltersState<D> &
214
- UseGroupByState<D> &
215
- UsePaginationState<D> &
216
- UseResizeColumnsState<D> &
217
- UseRowSelectState<D> &
218
- UseRowStateState<D> &
219
- UseSortByState<D> & {
220
- currentEditingRow: MRT_Row<D> | null;
221
- currentFilterTypes: { [key: string]: MRT_FilterType };
222
- currentGlobalFilterType: MRT_FilterType;
223
- densePadding: boolean;
224
- fullScreen: boolean;
225
- showFilters: boolean;
226
- showSearch: boolean;
227
- };
260
+ export type MRT_FilterType = MRT_FILTER_TYPE | Function;
228
261
 
229
- export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
230
- UseExpandedOptions<D> &
231
- UseFiltersOptions<D> &
232
- UseGlobalFiltersOptions<D> &
233
- UseGroupByOptions<D> &
234
- UsePaginationOptions<D> &
235
- UseResizeColumnsOptions<D> &
236
- UseRowSelectOptions<D> &
237
- UseRowStateOptions<D> &
238
- UseSortByOptions<D> &
262
+ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
239
263
  MRT_TableOptions<D> & {
240
- disableColumnActions?: boolean;
241
- disableColumnHiding?: boolean;
242
- disableDensePaddingToggle?: boolean;
243
- disableExpandAll?: boolean;
244
- disableFullScreenToggle?: boolean;
245
- disableSelectAll?: boolean;
246
- disableSubRowTree?: boolean;
247
264
  enableClickToCopy?: boolean;
248
- enableColumnGrouping?: boolean;
249
- enableColumnResizing?: boolean;
265
+ enableColumnActions?: boolean;
266
+ enableColumnPinning?: boolean;
267
+ enableDensePaddingToggle?: boolean;
268
+ enableExpandAll?: boolean;
269
+ enableFullScreenToggle?: boolean;
270
+ enablePagination?: boolean;
250
271
  enableRowActions?: boolean;
272
+ enableStickyHeader?: boolean;
251
273
  enableRowEditing?: boolean;
252
274
  enableRowNumbers?: boolean;
253
- enableSelection?: boolean;
275
+ enableSelectAll?: boolean;
254
276
  enabledGlobalFilterTypes?: (MRT_FILTER_TYPE | string)[];
255
277
  filterTypes?: { [key in MRT_FILTER_TYPE]: any };
256
278
  hideTableFooter?: boolean;
@@ -260,7 +282,7 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
260
282
  hideToolbarTop?: boolean;
261
283
  icons?: Partial<MRT_Icons>;
262
284
  idPrefix?: string;
263
- isFetching?: boolean;
285
+ isReloading?: boolean;
264
286
  isLoading?: boolean;
265
287
  localization?: Partial<MRT_Localization>;
266
288
  muiLinearProgressProps?:
@@ -289,16 +311,16 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
289
311
  muiTableBodyProps?:
290
312
  | TableBodyProps
291
313
  | ((tableInstance: MRT_TableInstance<D>) => TableBodyProps);
292
- muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
314
+ muiTableBodyRowProps?: TableRowProps | ((row: MRT_Row<D>) => TableRowProps);
293
315
  muiTableContainerProps?:
294
316
  | TableContainerProps
295
317
  | ((tableInstance: MRT_TableInstance<D>) => TableContainerProps);
296
318
  muiTableDetailPanelProps?:
297
319
  | TableCellProps
298
- | ((row: Row<D>) => TableCellProps);
320
+ | ((row: MRT_Row<D>) => TableCellProps);
299
321
  muiTableFooterCellProps?:
300
322
  | TableCellProps
301
- | ((column: Column<D>) => TableCellProps);
323
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
302
324
  muiTableFooterProps?:
303
325
  | TableFooterProps
304
326
  | ((tableInstance: MRT_TableInstance<D>) => TableFooterProps);
@@ -307,19 +329,22 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
307
329
  | ((footerGroup: MRT_HeaderGroup<D>) => TableRowProps);
308
330
  muiTableHeadCellColumnActionsButtonProps?:
309
331
  | IconButtonProps
310
- | ((column: Column<D>) => IconButtonProps);
332
+ | ((column: MRT_ColumnInstance<D>) => IconButtonProps);
311
333
  muiTableHeadCellFilterTextFieldProps?:
312
334
  | TextFieldProps
313
- | ((column: Column<D>) => TextFieldProps);
335
+ | ((column: MRT_ColumnInstance<D>) => TextFieldProps);
314
336
  muiTableHeadCellProps?:
315
337
  | TableCellProps
316
- | ((column: Column<D>) => TableCellProps);
338
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
317
339
  muiTableHeadProps?:
318
340
  | TableHeadProps
319
341
  | ((tableInstance: MRT_TableInstance<D>) => TableHeadProps);
320
342
  muiTableHeadRowProps?:
321
343
  | TableRowProps
322
- | ((row: MRT_HeaderGroup<D>) => TableRowProps);
344
+ | ((headerGroup: MRT_HeaderGroup<D>) => TableRowProps);
345
+ muiTablePaperProps?:
346
+ | PaperProps
347
+ | ((tableInstance: MRT_TableInstance<D>) => PaperProps);
323
348
  muiTablePaginationProps?:
324
349
  | Partial<TablePaginationProps>
325
350
  | ((
@@ -341,36 +366,45 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
341
366
  event: MouseEvent<HTMLTableCellElement>,
342
367
  cell: MRT_Cell<D>,
343
368
  ) => void;
344
- onColumnHide?: (column: Column<D>, hiddenColumns?: string[]) => void;
369
+ onColumnHide?: (
370
+ column: MRT_ColumnInstance<D>,
371
+ hiddenColumns?: string[],
372
+ ) => void;
345
373
  onDetailPanelClick?: (
346
374
  event: MouseEvent<HTMLTableCellElement>,
347
- row: Row<D>,
375
+ row: MRT_Row<D>,
348
376
  ) => void;
349
377
  onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
350
- onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
351
- onRowEditSubmit?: (row: Row<D>) => Promise<void> | void;
378
+ onRowClick?: (
379
+ event: MouseEvent<HTMLTableRowElement>,
380
+ row: MRT_Row<D>,
381
+ ) => void;
382
+ onRowEditSubmit?: (row: MRT_Row<D>) => Promise<void> | void;
352
383
  onRowExpandChange?: (
353
384
  event: MouseEvent<HTMLButtonElement>,
354
- row: Row<D>,
385
+ row: MRT_Row<D>,
386
+ ) => void;
387
+ onSelectAllChange?: (
388
+ event: ChangeEvent,
389
+ selectedRows: MRT_Row<D>[],
355
390
  ) => void;
356
- onSelectAllChange?: (event: ChangeEvent, selectedRows: Row<D>[]) => void;
357
391
  onSelectChange?: (
358
392
  event: ChangeEvent,
359
- row: Row<D>,
360
- selectedRows: Row<D>[],
393
+ row: MRT_Row<D>,
394
+ selectedRows: MRT_Row<D>[],
361
395
  ) => void;
362
396
  positionActionsColumn?: 'first' | 'last';
363
397
  positionPagination?: 'bottom' | 'top' | 'both';
364
398
  positionToolbarActions?: 'bottom' | 'top';
365
399
  positionToolbarAlertBanner?: 'bottom' | 'top';
366
- renderDetailPanel?: (row: Row<D>) => ReactNode;
400
+ renderDetailPanel?: (row: MRT_Row<D>) => ReactNode;
367
401
  renderRowActionMenuItems?: (
368
- rowData: Row<D>,
402
+ rowData: MRT_Row<D>,
369
403
  tableInstance: MRT_TableInstance<D>,
370
404
  closeMenu: () => void,
371
405
  ) => ReactNode[];
372
406
  renderRowActions?: (
373
- row: Row<D>,
407
+ row: MRT_Row<D>,
374
408
  tableInstance: MRT_TableInstance<D>,
375
409
  ) => ReactNode;
376
410
  renderToolbarCustomActions?: (
@@ -385,19 +419,38 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
385
419
  MRT_ToggleDensePaddingButton,
386
420
  MRT_FullScreenToggleButton,
387
421
  }: {
388
- MRT_ToggleSearchButton: FC<IconButtonProps>;
389
- MRT_ToggleFiltersButton: FC<IconButtonProps>;
390
- MRT_ShowHideColumnsButton: FC<IconButtonProps>;
391
- MRT_ToggleDensePaddingButton: FC<IconButtonProps>;
392
- MRT_FullScreenToggleButton: FC<IconButtonProps>;
422
+ MRT_ToggleSearchButton: FC<
423
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
424
+ >;
425
+ MRT_ToggleFiltersButton: FC<
426
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
427
+ >;
428
+ MRT_ShowHideColumnsButton: FC<
429
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
430
+ >;
431
+ MRT_ToggleDensePaddingButton: FC<
432
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
433
+ >;
434
+ MRT_FullScreenToggleButton: FC<
435
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
436
+ >;
393
437
  },
394
438
  ) => ReactNode;
395
439
  };
396
440
 
397
- export default <D extends {} = {}>({
398
- defaultColumn = { minWidth: 50, maxWidth: 1000 },
441
+ export default <D extends Record<string, any> = {}>({
442
+ enableColumnActions = true,
443
+ enableColumnFilters = true,
444
+ enableDensePaddingToggle = true,
445
+ enableExpandAll = true,
446
+ enableFullScreenToggle = true,
447
+ enableGlobalFilter = true,
448
+ enableHiding = true,
449
+ enablePagination = true,
450
+ enableSelectAll = true,
451
+ enableSorting = true,
452
+ enableStickyHeader = true,
399
453
  filterTypes,
400
- globalFilter = MRT_FILTER_TYPE.BEST_MATCH_FIRST,
401
454
  icons,
402
455
  localization,
403
456
  positionActionsColumn = 'first',
@@ -406,13 +459,18 @@ export default <D extends {} = {}>({
406
459
  positionToolbarAlertBanner = 'top',
407
460
  ...rest
408
461
  }: MaterialReactTableProps<D>) => (
409
- <MaterialReactTableProvider
410
- //@ts-ignore
411
- defaultColumn={defaultColumn}
412
- //@ts-ignore
413
- filterTypes={{ ...defaultFilterFNs, ...filterTypes }}
414
- //@ts-ignore
415
- globalFilter={globalFilter}
462
+ <MRT_TableRoot
463
+ enableColumnActions={enableColumnActions}
464
+ enableColumnFilters={enableColumnFilters}
465
+ enableDensePaddingToggle={enableDensePaddingToggle}
466
+ enableExpandAll={enableExpandAll}
467
+ enableFullScreenToggle={enableFullScreenToggle}
468
+ enableGlobalFilter={enableGlobalFilter}
469
+ enableHiding={enableHiding}
470
+ enablePagination={enablePagination}
471
+ enableSelectAll={enableSelectAll}
472
+ enableSorting={enableSorting}
473
+ enableStickyHeader={enableStickyHeader}
416
474
  icons={{ ...MRT_Default_Icons, ...icons }}
417
475
  localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
418
476
  positionActionsColumn={positionActionsColumn}
@@ -420,7 +478,5 @@ export default <D extends {} = {}>({
420
478
  positionToolbarActions={positionToolbarActions}
421
479
  positionToolbarAlertBanner={positionToolbarAlertBanner}
422
480
  {...rest}
423
- >
424
- <MRT_TableContainer />
425
- </MaterialReactTableProvider>
481
+ />
426
482
  );