material-react-table 0.13.0 → 0.13.3
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/README.md +9 -5
- package/dist/MaterialReactTable.d.ts +55 -42
- package/dist/material-react-table.cjs.development.js +103 -80
- 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 +103 -80
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/utils.d.ts +5 -2
- package/package.json +3 -3
- package/src/MaterialReactTable.tsx +65 -39
- package/src/buttons/MRT_ExpandAllButton.tsx +8 -0
- package/src/buttons/MRT_ExpandButton.tsx +8 -0
- package/src/inputs/MRT_FilterTextField.tsx +4 -0
- package/src/inputs/MRT_SelectCheckbox.tsx +14 -5
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +8 -1
- package/src/table/MRT_TableRoot.tsx +16 -43
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +2 -2
- package/src/utils.ts +33 -1
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
createDisplayColumn,
|
|
35
35
|
createGroup,
|
|
36
36
|
getAllLeafColumnDefs,
|
|
37
|
+
getDefaultColumnOrderIds,
|
|
37
38
|
} from '../utils';
|
|
38
39
|
import { defaultFilterFNs } from '../filtersFNs';
|
|
39
40
|
import { Box, Dialog, Grow } from '@mui/material';
|
|
@@ -48,28 +49,10 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
48
49
|
[props.tableId],
|
|
49
50
|
);
|
|
50
51
|
|
|
51
|
-
const showActionColumn =
|
|
52
|
-
props.enableRowActions ||
|
|
53
|
-
(props.enableEditing && props.editingMode === 'row');
|
|
54
|
-
|
|
55
|
-
const showExpandColumn = props.enableExpanding || props.enableGrouping;
|
|
56
|
-
|
|
57
52
|
const initialState: Partial<MRT_TableState<D>> = useMemo(() => {
|
|
58
53
|
const initState = props.initialState ?? {};
|
|
59
|
-
|
|
60
54
|
initState.columnOrder =
|
|
61
|
-
initState
|
|
62
|
-
(props.enableColumnOrdering || props.enableGrouping)
|
|
63
|
-
? ([
|
|
64
|
-
showActionColumn && 'mrt-row-actions',
|
|
65
|
-
showExpandColumn && 'mrt-expand',
|
|
66
|
-
props.enableRowSelection && 'mrt-select',
|
|
67
|
-
props.enableRowNumbers && 'mrt-row-numbers',
|
|
68
|
-
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(
|
|
69
|
-
(c) => c.id,
|
|
70
|
-
),
|
|
71
|
-
].filter(Boolean) as string[])
|
|
72
|
-
: [];
|
|
55
|
+
initState.columnOrder ?? getDefaultColumnOrderIds(props);
|
|
73
56
|
|
|
74
57
|
if (!props.enablePersistentState || !props.tableId) {
|
|
75
58
|
return initState;
|
|
@@ -97,6 +80,9 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
97
80
|
return initState;
|
|
98
81
|
}, []);
|
|
99
82
|
|
|
83
|
+
const [columnOrder, setColumnOrder] = useState(
|
|
84
|
+
initialState.columnOrder ?? [],
|
|
85
|
+
);
|
|
100
86
|
const [currentEditingCell, setCurrentEditingCell] =
|
|
101
87
|
useState<MRT_Cell<D> | null>(initialState?.currentEditingCell ?? null);
|
|
102
88
|
const [currentEditingRow, setCurrentEditingRow] = useState<MRT_Row<D> | null>(
|
|
@@ -148,14 +134,13 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
148
134
|
getSortedRowModel: getSortedRowModel(),
|
|
149
135
|
getSubRows: (row) => (row as MRT_Row)?.subRows,
|
|
150
136
|
tableId,
|
|
151
|
-
initialState,
|
|
152
137
|
}) as Table<D>,
|
|
153
138
|
[],
|
|
154
139
|
);
|
|
155
140
|
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
141
|
+
const displayColumns = useMemo(() => {
|
|
142
|
+
return [
|
|
143
|
+
columnOrder.includes('mrt-row-actions') &&
|
|
159
144
|
createDisplayColumn(table, {
|
|
160
145
|
Cell: ({ cell }) => (
|
|
161
146
|
<MRT_ToggleRowActionMenuButton
|
|
@@ -169,7 +154,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
169
154
|
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
170
155
|
size: 70,
|
|
171
156
|
}),
|
|
172
|
-
|
|
157
|
+
columnOrder.includes('mrt-expand') &&
|
|
173
158
|
createDisplayColumn(table, {
|
|
174
159
|
Cell: ({ cell }) => (
|
|
175
160
|
<MRT_ExpandButton row={cell.row as any} instance={instance} />
|
|
@@ -184,7 +169,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
184
169
|
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
185
170
|
size: 50,
|
|
186
171
|
}),
|
|
187
|
-
|
|
172
|
+
columnOrder.includes('mrt-select') &&
|
|
188
173
|
createDisplayColumn(table, {
|
|
189
174
|
Cell: ({ cell }) => (
|
|
190
175
|
<MRT_SelectCheckbox row={cell.row as any} instance={instance} />
|
|
@@ -199,7 +184,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
199
184
|
muiTableHeadCellProps: props.muiTableHeadCellProps,
|
|
200
185
|
size: 50,
|
|
201
186
|
}),
|
|
202
|
-
|
|
187
|
+
columnOrder.includes('mrt-row-numbers') &&
|
|
203
188
|
createDisplayColumn(table, {
|
|
204
189
|
Cell: ({ cell }) => cell.row.index + 1,
|
|
205
190
|
Header: () => props.localization?.rowNumber,
|
|
@@ -210,22 +195,8 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
210
195
|
size: 50,
|
|
211
196
|
}),
|
|
212
197
|
].filter(Boolean) as MRT_ColumnDef<D>[];
|
|
213
|
-
|
|
214
|
-
const trailingDisplayColumns = [] as MRT_ColumnDef<D>[];
|
|
215
|
-
|
|
216
|
-
if (props.enableRowActions && props.positionActionsColumn === 'last') {
|
|
217
|
-
trailingDisplayColumns.push(
|
|
218
|
-
...leadingDisplayColumns.splice(
|
|
219
|
-
leadingDisplayColumns.findIndex(
|
|
220
|
-
(col) => col.id === 'mrt-row-actions',
|
|
221
|
-
),
|
|
222
|
-
1,
|
|
223
|
-
),
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return [leadingDisplayColumns, trailingDisplayColumns];
|
|
228
198
|
}, [
|
|
199
|
+
columnOrder,
|
|
229
200
|
props.editingMode,
|
|
230
201
|
props.enableEditing,
|
|
231
202
|
props.enableExpandAll,
|
|
@@ -244,13 +215,12 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
244
215
|
|
|
245
216
|
const columns = useMemo(
|
|
246
217
|
() => [
|
|
247
|
-
...
|
|
218
|
+
...displayColumns,
|
|
248
219
|
...props.columns.map((column) =>
|
|
249
220
|
column.columns
|
|
250
221
|
? createGroup(table, column as any, currentFilterFns)
|
|
251
222
|
: createDataColumn(table, column as any, currentFilterFns),
|
|
252
223
|
),
|
|
253
|
-
...trailingDisplayColumns,
|
|
254
224
|
],
|
|
255
225
|
[table, props.columns, currentFilterFns],
|
|
256
226
|
);
|
|
@@ -277,13 +247,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
277
247
|
const instance = {
|
|
278
248
|
//@ts-ignore
|
|
279
249
|
...useTableInstance(table, {
|
|
250
|
+
onColumnOrderChange: setColumnOrder,
|
|
280
251
|
...props,
|
|
281
252
|
//@ts-ignore
|
|
282
253
|
columns,
|
|
283
254
|
data,
|
|
284
255
|
//@ts-ignore
|
|
285
256
|
globalFilterFn: currentGlobalFilterFn,
|
|
257
|
+
initialState,
|
|
286
258
|
state: {
|
|
259
|
+
columnOrder,
|
|
287
260
|
currentEditingCell,
|
|
288
261
|
currentEditingRow,
|
|
289
262
|
currentFilterFns,
|
|
@@ -16,7 +16,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {
|
|
|
16
16
|
const {
|
|
17
17
|
options: {
|
|
18
18
|
enableColumnFilters,
|
|
19
|
-
|
|
19
|
+
enableDensityToggle,
|
|
20
20
|
enableFilters,
|
|
21
21
|
enableFullScreenToggle,
|
|
22
22
|
enableGlobalFilter,
|
|
@@ -53,7 +53,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {
|
|
|
53
53
|
<MRT_ToggleFiltersButton instance={instance} />
|
|
54
54
|
)}
|
|
55
55
|
{enableHiding && <MRT_ShowHideColumnsButton instance={instance} />}
|
|
56
|
-
{
|
|
56
|
+
{enableDensityToggle && (
|
|
57
57
|
<MRT_ToggleDensePaddingButton instance={instance} />
|
|
58
58
|
)}
|
|
59
59
|
{enableFullScreenToggle && (
|
package/src/utils.ts
CHANGED
|
@@ -4,7 +4,12 @@ import {
|
|
|
4
4
|
Table,
|
|
5
5
|
Updater,
|
|
6
6
|
} from '@tanstack/react-table';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
MaterialReactTableProps,
|
|
9
|
+
MRT_Column,
|
|
10
|
+
MRT_ColumnDef,
|
|
11
|
+
MRT_FilterFn,
|
|
12
|
+
} from '.';
|
|
8
13
|
import { defaultFilterFNs } from './filtersFNs';
|
|
9
14
|
|
|
10
15
|
export const getAllLeafColumnDefs = (
|
|
@@ -74,3 +79,30 @@ export const reorderColumn = (
|
|
|
74
79
|
);
|
|
75
80
|
setColumnOrder([...columnOrder]);
|
|
76
81
|
};
|
|
82
|
+
|
|
83
|
+
export const getLeadingDisplayColumnIds = (
|
|
84
|
+
props: MaterialReactTableProps<any>,
|
|
85
|
+
) =>
|
|
86
|
+
[
|
|
87
|
+
((props.positionActionsColumn === 'first' && props.enableRowActions) ||
|
|
88
|
+
(props.enableEditing && props.editingMode === 'row')) &&
|
|
89
|
+
'mrt-row-actions',
|
|
90
|
+
(props.enableExpanding || props.enableGrouping) && 'mrt-expand',
|
|
91
|
+
props.enableRowSelection && 'mrt-select',
|
|
92
|
+
props.enableRowNumbers && 'mrt-row-numbers',
|
|
93
|
+
].filter(Boolean) as string[];
|
|
94
|
+
|
|
95
|
+
export const getTrailingDisplayColumnIds = (
|
|
96
|
+
props: MaterialReactTableProps<any>,
|
|
97
|
+
) => [
|
|
98
|
+
((props.positionActionsColumn === 'last' && props.enableRowActions) ||
|
|
99
|
+
(props.enableEditing && props.editingMode === 'row')) &&
|
|
100
|
+
'mrt-row-actions',
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
export const getDefaultColumnOrderIds = (props: MaterialReactTableProps<any>) =>
|
|
104
|
+
[
|
|
105
|
+
...getLeadingDisplayColumnIds(props),
|
|
106
|
+
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map((c) => c.id),
|
|
107
|
+
...getTrailingDisplayColumnIds(props),
|
|
108
|
+
].filter(Boolean) as string[];
|