material-react-table 0.17.1 → 0.19.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.
- package/dist/MaterialReactTable.d.ts +170 -230
- package/dist/body/MRT_TableBody.d.ts +1 -1
- package/dist/body/MRT_TableBodyCell.d.ts +1 -1
- package/dist/body/MRT_TableBodyRow.d.ts +1 -1
- package/dist/body/MRT_TableDetailPanel.d.ts +1 -1
- package/dist/buttons/MRT_ColumnPinningButtons.d.ts +1 -1
- package/dist/buttons/MRT_CopyButton.d.ts +1 -1
- package/dist/buttons/MRT_EditActionButtons.d.ts +1 -1
- package/dist/buttons/MRT_ExpandAllButton.d.ts +1 -1
- package/dist/buttons/MRT_ExpandButton.d.ts +1 -1
- package/dist/buttons/MRT_FullScreenToggleButton.d.ts +1 -1
- package/dist/buttons/MRT_GrabHandleButton.d.ts +1 -1
- package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleFiltersButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleGlobalFilterButton.d.ts +1 -1
- package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +1 -1
- package/dist/filtersFns.d.ts +31 -23
- package/dist/footer/MRT_TableFooter.d.ts +1 -1
- package/dist/footer/MRT_TableFooterCell.d.ts +1 -1
- package/dist/footer/MRT_TableFooterRow.d.ts +1 -1
- package/dist/head/MRT_DraggableTableHeadCell.d.ts +1 -1
- package/dist/head/MRT_TableHead.d.ts +1 -1
- package/dist/head/MRT_TableHeadCell.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellColumnActionsButton.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellFilterContainer.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellResizeHandle.d.ts +1 -1
- package/dist/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
- package/dist/head/MRT_TableHeadRow.d.ts +1 -1
- package/dist/inputs/MRT_EditCellTextField.d.ts +1 -1
- package/dist/inputs/MRT_FilterRangeFields.d.ts +1 -1
- package/dist/inputs/MRT_FilterTextField.d.ts +1 -1
- package/dist/inputs/MRT_GlobalFilterTextField.d.ts +1 -1
- package/dist/inputs/MRT_SelectCheckbox.d.ts +1 -1
- package/dist/material-react-table.cjs.development.js +791 -915
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +793 -917
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +1 -1
- package/dist/menus/MRT_FilterOptionMenu.d.ts +1 -1
- package/dist/menus/MRT_RowActionMenu.d.ts +1 -1
- package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +1 -1
- package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
- package/dist/sortingFns.d.ts +10 -3
- package/dist/table/MRT_Table.d.ts +1 -1
- package/dist/table/MRT_TableContainer.d.ts +1 -1
- package/dist/table/MRT_TablePaper.d.ts +1 -1
- package/dist/toolbar/MRT_LinearProgressBar.d.ts +1 -1
- package/dist/toolbar/MRT_TablePagination.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarBottom.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +1 -1
- package/dist/toolbar/MRT_ToolbarTop.d.ts +1 -1
- package/dist/utils.d.ts +10 -16
- package/package.json +4 -4
- package/src/MaterialReactTable.tsx +168 -334
- package/src/body/MRT_TableBody.tsx +5 -6
- package/src/body/MRT_TableBodyCell.tsx +19 -36
- package/src/body/MRT_TableBodyRow.tsx +9 -12
- package/src/body/MRT_TableDetailPanel.tsx +8 -12
- package/src/buttons/MRT_ColumnPinningButtons.tsx +3 -3
- package/src/buttons/MRT_CopyButton.tsx +5 -7
- package/src/buttons/MRT_EditActionButtons.tsx +4 -5
- package/src/buttons/MRT_ExpandAllButton.tsx +4 -5
- package/src/buttons/MRT_ExpandButton.tsx +6 -9
- package/src/buttons/MRT_FullScreenToggleButton.tsx +5 -15
- package/src/buttons/MRT_GrabHandleButton.tsx +39 -41
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +4 -4
- package/src/buttons/MRT_ToggleDensePaddingButton.tsx +5 -15
- package/src/buttons/MRT_ToggleFiltersButton.tsx +5 -12
- package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +6 -16
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +6 -6
- package/src/filtersFns.ts +24 -23
- package/src/footer/MRT_TableFooter.tsx +5 -6
- package/src/footer/MRT_TableFooterCell.tsx +8 -11
- package/src/footer/MRT_TableFooterRow.tsx +5 -9
- package/src/head/MRT_DraggableTableHeadCell.tsx +4 -6
- package/src/head/MRT_TableHead.tsx +5 -5
- package/src/head/MRT_TableHeadCell.tsx +18 -29
- package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +6 -8
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +5 -7
- package/src/head/MRT_TableHeadCellFilterLabel.tsx +13 -19
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +12 -11
- package/src/head/MRT_TableHeadCellSortLabel.tsx +3 -5
- package/src/head/MRT_TableHeadRow.tsx +6 -6
- package/src/inputs/MRT_EditCellTextField.tsx +13 -15
- package/src/inputs/MRT_FilterRangeFields.tsx +4 -4
- package/src/inputs/MRT_FilterTextField.tsx +27 -64
- package/src/inputs/MRT_GlobalFilterTextField.tsx +5 -10
- package/src/inputs/MRT_SelectCheckbox.tsx +9 -36
- package/src/menus/MRT_ColumnActionMenu.tsx +5 -9
- package/src/menus/MRT_FilterOptionMenu.tsx +16 -48
- package/src/menus/MRT_RowActionMenu.tsx +4 -5
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +8 -9
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +11 -10
- package/src/sortingFns.ts +11 -3
- package/src/table/MRT_Table.tsx +7 -11
- package/src/table/MRT_TableContainer.tsx +5 -6
- package/src/table/MRT_TablePaper.tsx +7 -8
- package/src/table/MRT_TableRoot.tsx +123 -156
- package/src/toolbar/MRT_LinearProgressBar.tsx +4 -5
- package/src/toolbar/MRT_TablePagination.tsx +7 -9
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +15 -11
- package/src/toolbar/MRT_ToolbarBottom.tsx +8 -9
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +10 -10
- package/src/toolbar/MRT_ToolbarTop.tsx +11 -11
- package/src/utils.ts +56 -50
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import {
|
|
3
|
-
FilterFn,
|
|
4
|
-
ReactTableGenerics,
|
|
5
|
-
Table,
|
|
6
3
|
TableState,
|
|
7
|
-
createTable,
|
|
8
|
-
filterFns,
|
|
9
4
|
getCoreRowModel,
|
|
10
5
|
getExpandedRowModel,
|
|
11
6
|
getFacetedRowModel,
|
|
@@ -13,14 +8,12 @@ import {
|
|
|
13
8
|
getGroupedRowModel,
|
|
14
9
|
getPaginationRowModel,
|
|
15
10
|
getSortedRowModel,
|
|
16
|
-
|
|
17
|
-
sortingFns,
|
|
11
|
+
useReactTable,
|
|
18
12
|
} from '@tanstack/react-table';
|
|
19
13
|
import {
|
|
20
14
|
MRT_Cell,
|
|
21
15
|
MRT_ColumnDef,
|
|
22
|
-
|
|
23
|
-
MRT_FILTER_OPTION,
|
|
16
|
+
MRT_FilterOption,
|
|
24
17
|
MRT_Row,
|
|
25
18
|
MRT_TableInstance,
|
|
26
19
|
MRT_TableState,
|
|
@@ -33,14 +26,11 @@ import { MaterialReactTableProps } from '../MaterialReactTable';
|
|
|
33
26
|
import { MRT_TablePaper } from './MRT_TablePaper';
|
|
34
27
|
import { Box, Dialog, Grow } from '@mui/material';
|
|
35
28
|
import {
|
|
36
|
-
|
|
37
|
-
createDisplayColumn,
|
|
38
|
-
createGroup,
|
|
29
|
+
prepareColumns,
|
|
39
30
|
getAllLeafColumnDefs,
|
|
40
31
|
getDefaultColumnOrderIds,
|
|
41
32
|
} from '../utils';
|
|
42
33
|
import { MRT_FilterFns } from '../filtersFns';
|
|
43
|
-
import { MRT_SortingFns } from '../sortingFns';
|
|
44
34
|
|
|
45
35
|
export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
46
36
|
props: MaterialReactTableProps<D>,
|
|
@@ -73,6 +63,9 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
73
63
|
const [isFullScreen, setIsFullScreen] = useState(
|
|
74
64
|
initialState?.isFullScreen ?? false,
|
|
75
65
|
);
|
|
66
|
+
const [showAlertBanner, setShowAlertBanner] = useState(
|
|
67
|
+
props.initialState?.showAlertBanner ?? false,
|
|
68
|
+
);
|
|
76
69
|
const [showFilters, setShowFilters] = useState(
|
|
77
70
|
initialState?.showFilters ?? false,
|
|
78
71
|
);
|
|
@@ -81,125 +74,114 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
81
74
|
);
|
|
82
75
|
|
|
83
76
|
const [currentFilterFns, setCurrentFilterFns] = useState<{
|
|
84
|
-
[key: string]:
|
|
77
|
+
[key: string]: MRT_FilterOption;
|
|
85
78
|
}>(() =>
|
|
86
79
|
Object.assign(
|
|
87
80
|
{},
|
|
88
|
-
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef<D>[]).map(
|
|
82
|
+
(col) => ({
|
|
83
|
+
[col.id?.toString() ?? col.accessorKey?.toString() ?? '']:
|
|
84
|
+
col.filterFn instanceof Function
|
|
85
|
+
? col.filterFn.name ?? 'custom'
|
|
86
|
+
: col.filterFn ??
|
|
87
|
+
initialState?.currentFilterFns?.[
|
|
88
|
+
col.id?.toString() ?? col.accessorKey?.toString() ?? ''
|
|
89
|
+
] ??
|
|
90
|
+
(!!col.filterSelectOptions?.length ? 'equals' : 'fuzzy'),
|
|
91
|
+
}),
|
|
92
|
+
),
|
|
94
93
|
),
|
|
95
94
|
);
|
|
96
95
|
|
|
97
|
-
const [currentGlobalFilterFn, setCurrentGlobalFilterFn] =
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
const [currentGlobalFilterFn, setCurrentGlobalFilterFn] =
|
|
97
|
+
useState<MRT_FilterOption>(
|
|
98
|
+
props.globalFilterFn instanceof String
|
|
99
|
+
? (props.globalFilterFn as MRT_FilterOption)
|
|
100
|
+
: 'fuzzy',
|
|
101
|
+
);
|
|
100
102
|
|
|
101
|
-
const
|
|
103
|
+
const displayColumns = useMemo(
|
|
102
104
|
() =>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
105
|
+
(
|
|
106
|
+
[
|
|
107
|
+
columnOrder.includes('mrt-row-actions') && {
|
|
108
|
+
Cell: ({ cell }) => (
|
|
109
|
+
<MRT_ToggleRowActionMenuButton
|
|
110
|
+
row={cell.row as any}
|
|
111
|
+
table={table}
|
|
112
|
+
/>
|
|
113
|
+
),
|
|
114
|
+
columnDefType: 'display',
|
|
115
|
+
header: props.localization?.actions,
|
|
116
|
+
id: 'mrt-row-actions',
|
|
117
|
+
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
118
|
+
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
119
|
+
size: 70,
|
|
120
|
+
},
|
|
121
|
+
columnOrder.includes('mrt-expand') && {
|
|
122
|
+
Cell: ({ cell }) => (
|
|
123
|
+
<MRT_ExpandButton row={cell.row as any} table={table} />
|
|
124
|
+
),
|
|
125
|
+
Header: () =>
|
|
126
|
+
props.enableExpandAll ? (
|
|
127
|
+
<MRT_ExpandAllButton table={table} />
|
|
128
|
+
) : null,
|
|
129
|
+
columnDefType: 'display',
|
|
130
|
+
header: props.localization?.expand,
|
|
131
|
+
id: 'mrt-expand',
|
|
132
|
+
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
133
|
+
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
134
|
+
size: 60,
|
|
135
|
+
},
|
|
136
|
+
columnOrder.includes('mrt-select') && {
|
|
137
|
+
Cell: ({ cell }) => (
|
|
138
|
+
<MRT_SelectCheckbox row={cell.row as any} table={table} />
|
|
139
|
+
),
|
|
140
|
+
Header: () =>
|
|
141
|
+
props.enableSelectAll ? (
|
|
142
|
+
<MRT_SelectCheckbox selectAll table={table} />
|
|
143
|
+
) : null,
|
|
144
|
+
columnDefType: 'display',
|
|
145
|
+
header: props.localization?.select,
|
|
146
|
+
id: 'mrt-select',
|
|
147
|
+
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
148
|
+
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
149
|
+
size: 60,
|
|
150
|
+
},
|
|
151
|
+
columnOrder.includes('mrt-row-numbers') && {
|
|
152
|
+
Cell: ({ cell }) => cell.row.index + 1,
|
|
153
|
+
Header: () => props.localization?.rowNumber,
|
|
154
|
+
columnDefType: 'display',
|
|
155
|
+
header: props.localization?.rowNumbers,
|
|
156
|
+
id: 'mrt-row-numbers',
|
|
157
|
+
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
158
|
+
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
159
|
+
size: 60,
|
|
160
|
+
},
|
|
161
|
+
] as MRT_ColumnDef<D>[]
|
|
162
|
+
).filter(Boolean),
|
|
163
|
+
[
|
|
164
|
+
columnOrder,
|
|
165
|
+
props.editingMode,
|
|
166
|
+
props.enableEditing,
|
|
167
|
+
props.enableExpandAll,
|
|
168
|
+
props.enableExpanding,
|
|
169
|
+
props.enableGrouping,
|
|
170
|
+
props.enableRowActions,
|
|
171
|
+
props.enableRowNumbers,
|
|
172
|
+
props.enableRowSelection,
|
|
173
|
+
props.enableSelectAll,
|
|
174
|
+
props.localization,
|
|
175
|
+
props.muiTableBodyCellProps,
|
|
176
|
+
props.muiTableHeadCellProps,
|
|
177
|
+
props.positionActionsColumn,
|
|
178
|
+
],
|
|
116
179
|
);
|
|
117
180
|
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
Cell: ({ cell }) => (
|
|
123
|
-
<MRT_ToggleRowActionMenuButton
|
|
124
|
-
row={cell.row as any}
|
|
125
|
-
instance={instance}
|
|
126
|
-
/>
|
|
127
|
-
),
|
|
128
|
-
header: props.localization?.actions,
|
|
129
|
-
id: 'mrt-row-actions',
|
|
130
|
-
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
131
|
-
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
132
|
-
size: 70,
|
|
133
|
-
}),
|
|
134
|
-
columnOrder.includes('mrt-expand') &&
|
|
135
|
-
createDisplayColumn(table, {
|
|
136
|
-
Cell: ({ cell }) => (
|
|
137
|
-
<MRT_ExpandButton row={cell.row as any} instance={instance} />
|
|
138
|
-
),
|
|
139
|
-
Header: () =>
|
|
140
|
-
props.enableExpandAll ? (
|
|
141
|
-
<MRT_ExpandAllButton instance={instance} />
|
|
142
|
-
) : null,
|
|
143
|
-
header: props.localization?.expand,
|
|
144
|
-
id: 'mrt-expand',
|
|
145
|
-
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
146
|
-
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
147
|
-
size: 60,
|
|
148
|
-
}),
|
|
149
|
-
columnOrder.includes('mrt-select') &&
|
|
150
|
-
createDisplayColumn(table, {
|
|
151
|
-
Cell: ({ cell }) => (
|
|
152
|
-
<MRT_SelectCheckbox row={cell.row as any} instance={instance} />
|
|
153
|
-
),
|
|
154
|
-
Header: () =>
|
|
155
|
-
props.enableSelectAll ? (
|
|
156
|
-
<MRT_SelectCheckbox selectAll instance={instance} />
|
|
157
|
-
) : null,
|
|
158
|
-
header: props.localization?.select,
|
|
159
|
-
id: 'mrt-select',
|
|
160
|
-
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
161
|
-
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
162
|
-
size: 60,
|
|
163
|
-
}),
|
|
164
|
-
columnOrder.includes('mrt-row-numbers') &&
|
|
165
|
-
createDisplayColumn(table, {
|
|
166
|
-
Cell: ({ cell }) => cell.row.index + 1,
|
|
167
|
-
Header: () => props.localization?.rowNumber,
|
|
168
|
-
header: props.localization?.rowNumbers,
|
|
169
|
-
id: 'mrt-row-numbers',
|
|
170
|
-
muiTableBodyCellProps: props.muiTableBodyCellProps,
|
|
171
|
-
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
172
|
-
size: 60,
|
|
173
|
-
}),
|
|
174
|
-
].filter(Boolean) as MRT_ColumnDef<D>[];
|
|
175
|
-
}, [
|
|
176
|
-
columnOrder,
|
|
177
|
-
props.editingMode,
|
|
178
|
-
props.enableEditing,
|
|
179
|
-
props.enableExpandAll,
|
|
180
|
-
props.enableExpanding,
|
|
181
|
-
props.enableGrouping,
|
|
182
|
-
props.enableRowActions,
|
|
183
|
-
props.enableRowNumbers,
|
|
184
|
-
props.enableRowSelection,
|
|
185
|
-
props.enableSelectAll,
|
|
186
|
-
props.localization,
|
|
187
|
-
props.muiTableBodyCellProps,
|
|
188
|
-
props.muiTableHeadCellProps,
|
|
189
|
-
props.positionActionsColumn,
|
|
190
|
-
table,
|
|
191
|
-
]);
|
|
192
|
-
|
|
193
|
-
const columns = useMemo(
|
|
194
|
-
() => [
|
|
195
|
-
...displayColumns,
|
|
196
|
-
...props.columns.map((column) =>
|
|
197
|
-
column.columns
|
|
198
|
-
? createGroup(table, column as any, currentFilterFns)
|
|
199
|
-
: createDataColumn(table, column as any, currentFilterFns),
|
|
200
|
-
),
|
|
201
|
-
],
|
|
202
|
-
[table, props.columns, currentFilterFns],
|
|
181
|
+
const columnDefs = useMemo(
|
|
182
|
+
() =>
|
|
183
|
+
prepareColumns([...displayColumns, ...props.columns], currentFilterFns),
|
|
184
|
+
[currentFilterFns, displayColumns, props.columns],
|
|
203
185
|
);
|
|
204
186
|
|
|
205
187
|
const data: D[] = useMemo(
|
|
@@ -210,8 +192,8 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
210
192
|
Object.assign(
|
|
211
193
|
{},
|
|
212
194
|
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(
|
|
213
|
-
(
|
|
214
|
-
[
|
|
195
|
+
(col) => ({
|
|
196
|
+
[col.id ?? col.accessorKey ?? '']: null,
|
|
215
197
|
}),
|
|
216
198
|
),
|
|
217
199
|
),
|
|
@@ -221,17 +203,24 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
221
203
|
);
|
|
222
204
|
|
|
223
205
|
//@ts-ignore
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
206
|
+
const table = {
|
|
207
|
+
...useReactTable({
|
|
208
|
+
getCoreRowModel: getCoreRowModel(),
|
|
209
|
+
getExpandedRowModel: getExpandedRowModel(),
|
|
210
|
+
getFacetedRowModel: getFacetedRowModel(),
|
|
211
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
212
|
+
getGroupedRowModel: getGroupedRowModel(),
|
|
213
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
214
|
+
getSortedRowModel: getSortedRowModel(),
|
|
227
215
|
onColumnOrderChange: setColumnOrder,
|
|
228
216
|
...props,
|
|
229
217
|
//@ts-ignore
|
|
230
|
-
columns,
|
|
218
|
+
columns: columnDefs,
|
|
231
219
|
data,
|
|
232
|
-
getSubRows: (row) =>
|
|
220
|
+
getSubRows: (row) => row?.subRows,
|
|
233
221
|
//@ts-ignore
|
|
234
|
-
globalFilterFn:
|
|
222
|
+
globalFilterFn:
|
|
223
|
+
MRT_FilterFns[currentGlobalFilterFn] ?? MRT_FilterFns.fuzzy,
|
|
235
224
|
initialState,
|
|
236
225
|
state: {
|
|
237
226
|
columnOrder,
|
|
@@ -241,6 +230,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
241
230
|
currentGlobalFilterFn,
|
|
242
231
|
density,
|
|
243
232
|
isFullScreen,
|
|
233
|
+
showAlertBanner,
|
|
244
234
|
showFilters,
|
|
245
235
|
showGlobalFilter,
|
|
246
236
|
...props.state,
|
|
@@ -256,34 +246,11 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
256
246
|
props.onCurrentGlobalFilterFnChange ?? setCurrentGlobalFilterFn,
|
|
257
247
|
setDensity: props.onDensityChange ?? setDensity,
|
|
258
248
|
setIsFullScreen: props.onIsFullScreenChange ?? setIsFullScreen,
|
|
249
|
+
setShowAlertBanner: props.onShowAlertBannerChange ?? setShowAlertBanner,
|
|
259
250
|
setShowFilters: props.onShowFiltersChange ?? setShowFilters,
|
|
260
251
|
setShowGlobalFilter: props.onShowGlobalFilterChange ?? setShowGlobalFilter,
|
|
261
252
|
} as MRT_TableInstance;
|
|
262
253
|
|
|
263
|
-
useEffect(() => {
|
|
264
|
-
props?.onColumnOrderChanged?.({
|
|
265
|
-
columnOrder: instance.getState().columnOrder,
|
|
266
|
-
//@ts-ignore
|
|
267
|
-
instance,
|
|
268
|
-
});
|
|
269
|
-
}, [instance.getState().columnOrder]);
|
|
270
|
-
|
|
271
|
-
useEffect(() => {
|
|
272
|
-
props?.onColumnPinningChanged?.({
|
|
273
|
-
columnPinning: instance.getState().columnPinning,
|
|
274
|
-
//@ts-ignore
|
|
275
|
-
instance,
|
|
276
|
-
});
|
|
277
|
-
}, [instance.getState().columnPinning]);
|
|
278
|
-
|
|
279
|
-
useEffect(() => {
|
|
280
|
-
props?.onColumnVisibilityChanged?.({
|
|
281
|
-
columnPinning: instance.getState().columnVisibility,
|
|
282
|
-
//@ts-ignore
|
|
283
|
-
instance,
|
|
284
|
-
});
|
|
285
|
-
}, [instance.getState().columnVisibility]);
|
|
286
|
-
|
|
287
254
|
return (
|
|
288
255
|
<>
|
|
289
256
|
<Dialog
|
|
@@ -296,9 +263,9 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
296
263
|
open={isFullScreen}
|
|
297
264
|
transitionDuration={400}
|
|
298
265
|
>
|
|
299
|
-
<MRT_TablePaper
|
|
266
|
+
<MRT_TablePaper table={table} />
|
|
300
267
|
</Dialog>
|
|
301
|
-
{!isFullScreen && <MRT_TablePaper
|
|
268
|
+
{!isFullScreen && <MRT_TablePaper table={table} />}
|
|
302
269
|
</>
|
|
303
270
|
);
|
|
304
271
|
};
|
|
@@ -4,20 +4,19 @@ import { MRT_TableInstance } from '..';
|
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
alignTo: 'bottom' | 'top';
|
|
7
|
-
|
|
7
|
+
table: MRT_TableInstance;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const MRT_LinearProgressBar: FC<Props> = ({ alignTo,
|
|
10
|
+
export const MRT_LinearProgressBar: FC<Props> = ({ alignTo, table }) => {
|
|
11
11
|
const {
|
|
12
12
|
options: { muiLinearProgressProps },
|
|
13
13
|
getState,
|
|
14
|
-
} =
|
|
15
|
-
|
|
14
|
+
} = table;
|
|
16
15
|
const { isLoading, showProgressBars } = getState();
|
|
17
16
|
|
|
18
17
|
const linearProgressProps =
|
|
19
18
|
muiLinearProgressProps instanceof Function
|
|
20
|
-
? muiLinearProgressProps({
|
|
19
|
+
? muiLinearProgressProps({ table })
|
|
21
20
|
: muiLinearProgressProps;
|
|
22
21
|
|
|
23
22
|
return (
|
|
@@ -3,11 +3,11 @@ import { TablePagination } from '@mui/material';
|
|
|
3
3
|
import { MRT_TableInstance } from '..';
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
|
-
|
|
6
|
+
table: MRT_TableInstance;
|
|
7
7
|
position: 'top' | 'bottom';
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export const MRT_TablePagination: FC<Props> = ({
|
|
10
|
+
export const MRT_TablePagination: FC<Props> = ({ table, position }) => {
|
|
11
11
|
const {
|
|
12
12
|
getPrePaginationRowModel,
|
|
13
13
|
getState,
|
|
@@ -18,26 +18,24 @@ export const MRT_TablePagination: FC<Props> = ({ instance, position }) => {
|
|
|
18
18
|
enableToolbarInternalActions,
|
|
19
19
|
rowCount,
|
|
20
20
|
},
|
|
21
|
-
} =
|
|
22
|
-
|
|
21
|
+
} = table;
|
|
23
22
|
const {
|
|
24
23
|
pagination: { pageSize = 10, pageIndex = 0 },
|
|
25
24
|
showGlobalFilter,
|
|
26
25
|
} = getState();
|
|
27
26
|
|
|
27
|
+
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
|
28
|
+
const showFirstLastPageButtons = totalRowCount / pageSize > 2;
|
|
29
|
+
|
|
28
30
|
const tablePaginationProps =
|
|
29
31
|
muiTablePaginationProps instanceof Function
|
|
30
|
-
? muiTablePaginationProps({
|
|
32
|
+
? muiTablePaginationProps({ table })
|
|
31
33
|
: muiTablePaginationProps;
|
|
32
34
|
|
|
33
35
|
const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {
|
|
34
36
|
setPageSize(+event.target.value);
|
|
35
37
|
};
|
|
36
38
|
|
|
37
|
-
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
|
38
|
-
|
|
39
|
-
const showFirstLastPageButtons = totalRowCount / pageSize > 2;
|
|
40
|
-
|
|
41
39
|
return (
|
|
42
40
|
<TablePagination
|
|
43
41
|
SelectProps={{
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import React, { FC, Fragment } from 'react';
|
|
2
|
-
import { Alert, Box, Chip, Collapse } from '@mui/material';
|
|
2
|
+
import { Alert, AlertTitle, Box, Chip, Collapse } from '@mui/material';
|
|
3
3
|
import { MRT_TableInstance } from '..';
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
6
|
stackAlertBanner?: boolean;
|
|
7
|
-
|
|
7
|
+
table: MRT_TableInstance;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export const MRT_ToolbarAlertBanner: FC<Props> = ({
|
|
11
11
|
stackAlertBanner,
|
|
12
|
-
|
|
12
|
+
table,
|
|
13
13
|
}) => {
|
|
14
14
|
const {
|
|
15
15
|
getPrePaginationRowModel,
|
|
16
16
|
getSelectedRowModel,
|
|
17
17
|
getState,
|
|
18
18
|
options: { localization, muiTableToolbarAlertBannerProps },
|
|
19
|
-
} =
|
|
20
|
-
|
|
21
|
-
const { grouping } = getState();
|
|
19
|
+
} = table;
|
|
20
|
+
const { grouping, showAlertBanner } = getState();
|
|
22
21
|
|
|
23
22
|
const alertProps =
|
|
24
23
|
muiTableToolbarAlertBannerProps instanceof Function
|
|
25
|
-
? muiTableToolbarAlertBannerProps({
|
|
24
|
+
? muiTableToolbarAlertBannerProps({ table })
|
|
26
25
|
: muiTableToolbarAlertBannerProps;
|
|
27
26
|
|
|
28
27
|
const selectMessage =
|
|
@@ -47,8 +46,8 @@ export const MRT_ToolbarAlertBanner: FC<Props> = ({
|
|
|
47
46
|
{index > 0 ? localization.thenBy : ''}
|
|
48
47
|
<Chip
|
|
49
48
|
color="secondary"
|
|
50
|
-
label={
|
|
51
|
-
onDelete={() =>
|
|
49
|
+
label={table.getColumn(columnId).columnDef.header}
|
|
50
|
+
onDelete={() => table.getColumn(columnId).toggleGrouping()}
|
|
52
51
|
/>
|
|
53
52
|
</Fragment>
|
|
54
53
|
))}
|
|
@@ -57,12 +56,13 @@ export const MRT_ToolbarAlertBanner: FC<Props> = ({
|
|
|
57
56
|
|
|
58
57
|
return (
|
|
59
58
|
<Collapse
|
|
60
|
-
in={!!selectMessage || !!groupedByMessage}
|
|
59
|
+
in={showAlertBanner || !!selectMessage || !!groupedByMessage}
|
|
61
60
|
timeout={stackAlertBanner ? 200 : 0}
|
|
62
61
|
>
|
|
63
62
|
<Alert
|
|
64
63
|
color="info"
|
|
65
64
|
icon={false}
|
|
65
|
+
{...alertProps}
|
|
66
66
|
sx={{
|
|
67
67
|
borderRadius: 0,
|
|
68
68
|
fontSize: '1rem',
|
|
@@ -75,9 +75,13 @@ export const MRT_ToolbarAlertBanner: FC<Props> = ({
|
|
|
75
75
|
zIndex: 2,
|
|
76
76
|
...alertProps?.sx,
|
|
77
77
|
}}
|
|
78
|
-
{...alertProps}
|
|
79
78
|
>
|
|
79
|
+
{alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}
|
|
80
80
|
<Box sx={{ p: '0.5rem 1rem' }}>
|
|
81
|
+
{alertProps?.children}
|
|
82
|
+
{alertProps?.children && (selectMessage || groupedByMessage) && (
|
|
83
|
+
<br />
|
|
84
|
+
)}
|
|
81
85
|
{selectMessage}
|
|
82
86
|
{selectMessage && groupedByMessage && <br />}
|
|
83
87
|
{groupedByMessage}
|
|
@@ -7,10 +7,10 @@ import { commonToolbarStyles } from './MRT_ToolbarTop';
|
|
|
7
7
|
import { MRT_TableInstance } from '..';
|
|
8
8
|
|
|
9
9
|
interface Props {
|
|
10
|
-
|
|
10
|
+
table: MRT_TableInstance;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export const MRT_ToolbarBottom: FC<Props> = ({
|
|
13
|
+
export const MRT_ToolbarBottom: FC<Props> = ({ table }) => {
|
|
14
14
|
const {
|
|
15
15
|
getState,
|
|
16
16
|
options: {
|
|
@@ -21,15 +21,14 @@ export const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {
|
|
|
21
21
|
renderToolbarBottomCustomActions,
|
|
22
22
|
tableId,
|
|
23
23
|
},
|
|
24
|
-
} =
|
|
25
|
-
|
|
24
|
+
} = table;
|
|
26
25
|
const { isFullScreen } = getState();
|
|
27
26
|
|
|
28
27
|
const isMobile = useMediaQuery('(max-width:720px)');
|
|
29
28
|
|
|
30
29
|
const toolbarProps =
|
|
31
30
|
muiTableToolbarBottomProps instanceof Function
|
|
32
|
-
? muiTableToolbarBottomProps({
|
|
31
|
+
? muiTableToolbarBottomProps({ table })
|
|
33
32
|
: muiTableToolbarBottomProps;
|
|
34
33
|
|
|
35
34
|
const stackAlertBanner =
|
|
@@ -54,9 +53,9 @@ export const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {
|
|
|
54
53
|
} as any)
|
|
55
54
|
}
|
|
56
55
|
>
|
|
57
|
-
<MRT_LinearProgressBar alignTo="top"
|
|
56
|
+
<MRT_LinearProgressBar alignTo="top" table={table} />
|
|
58
57
|
{positionToolbarAlertBanner === 'bottom' && (
|
|
59
|
-
<MRT_ToolbarAlertBanner
|
|
58
|
+
<MRT_ToolbarAlertBanner table={table} />
|
|
60
59
|
)}
|
|
61
60
|
<Box
|
|
62
61
|
sx={{
|
|
@@ -67,7 +66,7 @@ export const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {
|
|
|
67
66
|
>
|
|
68
67
|
{renderToolbarBottomCustomActions ? (
|
|
69
68
|
<Box sx={{ p: '0.5rem' }}>
|
|
70
|
-
{renderToolbarBottomCustomActions({
|
|
69
|
+
{renderToolbarBottomCustomActions({ table })}
|
|
71
70
|
</Box>
|
|
72
71
|
) : (
|
|
73
72
|
<span />
|
|
@@ -83,7 +82,7 @@ export const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {
|
|
|
83
82
|
>
|
|
84
83
|
{enablePagination &&
|
|
85
84
|
['bottom', 'both'].includes(positionPagination ?? '') && (
|
|
86
|
-
<MRT_TablePagination
|
|
85
|
+
<MRT_TablePagination table={table} position="bottom" />
|
|
87
86
|
)}
|
|
88
87
|
</Box>
|
|
89
88
|
</Box>
|
|
@@ -9,10 +9,10 @@ import { MRT_TableInstance } from '..';
|
|
|
9
9
|
import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
|
|
10
10
|
|
|
11
11
|
interface Props {
|
|
12
|
-
|
|
12
|
+
table: MRT_TableInstance;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export const MRT_ToolbarInternalButtons: FC<Props> = ({
|
|
15
|
+
export const MRT_ToolbarInternalButtons: FC<Props> = ({ table }) => {
|
|
16
16
|
const {
|
|
17
17
|
options: {
|
|
18
18
|
enableColumnFilters,
|
|
@@ -26,7 +26,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {
|
|
|
26
26
|
positionGlobalFilter,
|
|
27
27
|
renderToolbarInternalActions,
|
|
28
28
|
},
|
|
29
|
-
} =
|
|
29
|
+
} = table;
|
|
30
30
|
|
|
31
31
|
return (
|
|
32
32
|
<Box
|
|
@@ -42,26 +42,26 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {
|
|
|
42
42
|
MRT_ToggleDensePaddingButton,
|
|
43
43
|
MRT_ToggleFiltersButton,
|
|
44
44
|
MRT_ToggleGlobalFilterButton,
|
|
45
|
-
|
|
45
|
+
table,
|
|
46
46
|
}) ?? (
|
|
47
47
|
<>
|
|
48
48
|
{enableGlobalFilter && positionGlobalFilter === 'right' && (
|
|
49
|
-
<MRT_GlobalFilterTextField
|
|
49
|
+
<MRT_GlobalFilterTextField table={table} />
|
|
50
50
|
)}
|
|
51
51
|
{enableFilters && enableGlobalFilter && (
|
|
52
|
-
<MRT_ToggleGlobalFilterButton
|
|
52
|
+
<MRT_ToggleGlobalFilterButton table={table} />
|
|
53
53
|
)}
|
|
54
54
|
{enableFilters && enableColumnFilters && (
|
|
55
|
-
<MRT_ToggleFiltersButton
|
|
55
|
+
<MRT_ToggleFiltersButton table={table} />
|
|
56
56
|
)}
|
|
57
57
|
{(enableHiding || enableColumnOrdering || enablePinning) && (
|
|
58
|
-
<MRT_ShowHideColumnsButton
|
|
58
|
+
<MRT_ShowHideColumnsButton table={table} />
|
|
59
59
|
)}
|
|
60
60
|
{enableDensityToggle && (
|
|
61
|
-
<MRT_ToggleDensePaddingButton
|
|
61
|
+
<MRT_ToggleDensePaddingButton table={table} />
|
|
62
62
|
)}
|
|
63
63
|
{enableFullScreenToggle && (
|
|
64
|
-
<MRT_FullScreenToggleButton
|
|
64
|
+
<MRT_FullScreenToggleButton table={table} />
|
|
65
65
|
)}
|
|
66
66
|
</>
|
|
67
67
|
)}
|