material-react-table 0.16.1 → 0.16.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.
- package/dist/MaterialReactTable.d.ts +9 -1
- package/dist/material-react-table.cjs.development.js +32 -23
- 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 +32 -23
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/utils.d.ts +2 -2
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +16 -0
- package/src/body/MRT_TableBodyCell.tsx +4 -2
- package/src/head/MRT_DraggableTableHeadCell.tsx +5 -7
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +5 -9
- package/src/table/MRT_TableRoot.tsx +24 -0
- package/src/utils.ts +3 -9
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColumnDef, ColumnOrderState, Table
|
|
1
|
+
import { ColumnDef, ColumnOrderState, Table } from '@tanstack/react-table';
|
|
2
2
|
import { MaterialReactTableProps, MRT_Column, MRT_ColumnDef, MRT_FilterFn } from '.';
|
|
3
3
|
export declare const getAllLeafColumnDefs: (columns: MRT_ColumnDef[]) => MRT_ColumnDef[];
|
|
4
4
|
export declare const createGroup: <D extends Record<string, any> = {}>(table: Table<D>, column: MRT_ColumnDef<D>, currentFilterFns: {
|
|
@@ -10,7 +10,7 @@ export declare const createDataColumn: <D extends Record<string, any> = {}>(tabl
|
|
|
10
10
|
export declare const createDisplayColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: Pick<MRT_ColumnDef<D>, "accessorFn" | "columns" | "filterFn" | "footer" | "sortingFn" | "id" | "accessorKey" | "meta" | "enableHiding" | "enablePinning" | "enableColumnFilter" | "enableGlobalFilter" | "sortDescFirst" | "enableSorting" | "enableMultiSort" | "invertSorting" | "sortUndefined" | "aggregationFn" | "enableGrouping" | "enableResizing" | "size" | "minSize" | "maxSize" | "AggregatedCell" | "Cell" | "Edit" | "Filter" | "Footer" | "Header" | "enableClickToCopy" | "enableColumnActions" | "enableColumnFilterChangeMode" | "enableColumnOrdering" | "enableEditing" | "enabledColumnFilterOptions" | "filterSelectOptions" | "muiTableBodyCellCopyButtonProps" | "muiTableBodyCellEditTextFieldProps" | "muiTableBodyCellProps" | "muiTableFooterCellProps" | "muiTableHeadCellColumnActionsButtonProps" | "muiTableHeadCellFilterTextFieldProps" | "muiTableHeadCellProps" | "onCellEditBlur" | "onCellEditChanged" | "onColumnFilterValueChanged" | "onColumnFilterValueChangedDebounced"> & {
|
|
11
11
|
header?: string | undefined;
|
|
12
12
|
}) => ColumnDef<D>;
|
|
13
|
-
export declare const reorderColumn: (movingColumn: MRT_Column, receivingColumn: MRT_Column, columnOrder: ColumnOrderState
|
|
13
|
+
export declare const reorderColumn: (movingColumn: MRT_Column, receivingColumn: MRT_Column, columnOrder: ColumnOrderState) => ColumnOrderState;
|
|
14
14
|
export declare const getLeadingDisplayColumnIds: (props: MaterialReactTableProps<any>) => string[];
|
|
15
15
|
export declare const getTrailingDisplayColumnIds: (props: MaterialReactTableProps<any>) => (string | false | undefined)[];
|
|
16
16
|
export declare const getDefaultColumnOrderIds: (props: MaterialReactTableProps<any>) => string[];
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.16.
|
|
2
|
+
"version": "0.16.2",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "material-react-table",
|
|
5
5
|
"description": "A fully featured Material UI implementation of TanStack React Table, inspired by material-table and the MUI X DataGrid, written from the ground up in TypeScript.",
|
|
@@ -30,6 +30,8 @@ import {
|
|
|
30
30
|
Cell,
|
|
31
31
|
Column,
|
|
32
32
|
ColumnDef,
|
|
33
|
+
ColumnOrderState,
|
|
34
|
+
ColumnPinningState,
|
|
33
35
|
FilterFn,
|
|
34
36
|
FilterFnOption,
|
|
35
37
|
Header,
|
|
@@ -646,6 +648,20 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
|
|
|
646
648
|
filterValue: any;
|
|
647
649
|
instance: MRT_TableInstance<D>;
|
|
648
650
|
}) => void;
|
|
651
|
+
onColumnOrderChanged?: ({
|
|
652
|
+
columnOrder,
|
|
653
|
+
instance,
|
|
654
|
+
}: {
|
|
655
|
+
columnOrder: ColumnOrderState;
|
|
656
|
+
instance: MRT_TableInstance<D>;
|
|
657
|
+
}) => void;
|
|
658
|
+
onColumnPinningChanged?: ({
|
|
659
|
+
columnPinning,
|
|
660
|
+
instance,
|
|
661
|
+
}: {
|
|
662
|
+
columnPinning: ColumnPinningState;
|
|
663
|
+
instance: MRT_TableInstance<D>;
|
|
664
|
+
}) => void;
|
|
649
665
|
onColumnVisibilityChanged?: ({
|
|
650
666
|
column,
|
|
651
667
|
columnVisibility,
|
|
@@ -53,8 +53,10 @@ export const MRT_TableBodyCell: FC<Props> = ({
|
|
|
53
53
|
|
|
54
54
|
const [, dropRef] = useDrop({
|
|
55
55
|
accept: 'column',
|
|
56
|
-
drop: (movingColumn: MRT_Column) =>
|
|
57
|
-
reorderColumn(movingColumn, column, columnOrder
|
|
56
|
+
drop: (movingColumn: MRT_Column) => {
|
|
57
|
+
const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
|
|
58
|
+
setColumnOrder(newColumnOrder);
|
|
59
|
+
},
|
|
58
60
|
});
|
|
59
61
|
|
|
60
62
|
const mTableCellBodyProps =
|
|
@@ -10,11 +10,7 @@ interface Props {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export const MRT_DraggableTableHeadCell: FC<Props> = ({ header, instance }) => {
|
|
13
|
-
const {
|
|
14
|
-
getState,
|
|
15
|
-
options: {},
|
|
16
|
-
setColumnOrder,
|
|
17
|
-
} = instance;
|
|
13
|
+
const { getState, setColumnOrder } = instance;
|
|
18
14
|
|
|
19
15
|
const { columnOrder } = getState();
|
|
20
16
|
|
|
@@ -22,8 +18,10 @@ export const MRT_DraggableTableHeadCell: FC<Props> = ({ header, instance }) => {
|
|
|
22
18
|
|
|
23
19
|
const [, dropRef] = useDrop({
|
|
24
20
|
accept: 'column',
|
|
25
|
-
drop: (movingColumn: MRT_Column) =>
|
|
26
|
-
reorderColumn(movingColumn, column, columnOrder
|
|
21
|
+
drop: (movingColumn: MRT_Column) => {
|
|
22
|
+
const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
|
|
23
|
+
setColumnOrder(newColumnOrder);
|
|
24
|
+
},
|
|
27
25
|
});
|
|
28
26
|
|
|
29
27
|
const [{ isDragging }, dragRef, previewRef] = useDrag({
|
|
@@ -33,19 +33,20 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
|
|
|
33
33
|
enableHiding,
|
|
34
34
|
enablePinning,
|
|
35
35
|
localization,
|
|
36
|
-
onColumnVisibilityChanged,
|
|
37
36
|
},
|
|
38
37
|
setColumnOrder,
|
|
39
38
|
} = instance;
|
|
40
39
|
|
|
41
|
-
const { columnOrder
|
|
40
|
+
const { columnOrder } = getState();
|
|
42
41
|
|
|
43
42
|
const { columnDef, columnDefType } = column;
|
|
44
43
|
|
|
45
44
|
const [, dropRef] = useDrop({
|
|
46
45
|
accept: 'column',
|
|
47
|
-
drop: (movingColumn: MRT_Column) =>
|
|
48
|
-
reorderColumn(movingColumn, column, columnOrder
|
|
46
|
+
drop: (movingColumn: MRT_Column) => {
|
|
47
|
+
const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);
|
|
48
|
+
setColumnOrder(newColumnOrder);
|
|
49
|
+
},
|
|
49
50
|
});
|
|
50
51
|
|
|
51
52
|
const [, dragRef, previewRef] = useDrag({
|
|
@@ -69,11 +70,6 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
|
|
|
69
70
|
} else {
|
|
70
71
|
column.toggleVisibility();
|
|
71
72
|
}
|
|
72
|
-
onColumnVisibilityChanged?.({
|
|
73
|
-
column,
|
|
74
|
-
columnVisibility,
|
|
75
|
-
instance,
|
|
76
|
-
});
|
|
77
73
|
};
|
|
78
74
|
|
|
79
75
|
return (
|
|
@@ -310,6 +310,30 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
310
310
|
instance,
|
|
311
311
|
]);
|
|
312
312
|
|
|
313
|
+
useEffect(() => {
|
|
314
|
+
props?.onColumnOrderChanged?.({
|
|
315
|
+
columnOrder: instance.getState().columnOrder,
|
|
316
|
+
//@ts-ignore
|
|
317
|
+
instance,
|
|
318
|
+
});
|
|
319
|
+
}, [instance.getState().columnOrder]);
|
|
320
|
+
|
|
321
|
+
useEffect(() => {
|
|
322
|
+
props?.onColumnPinningChanged?.({
|
|
323
|
+
columnPinning: instance.getState().columnPinning,
|
|
324
|
+
//@ts-ignore
|
|
325
|
+
instance,
|
|
326
|
+
});
|
|
327
|
+
}, [instance.getState().columnPinning]);
|
|
328
|
+
|
|
329
|
+
useEffect(() => {
|
|
330
|
+
props?.onColumnVisibilityChanged?.({
|
|
331
|
+
columnPinning: instance.getState().columnVisibility,
|
|
332
|
+
//@ts-ignore
|
|
333
|
+
instance,
|
|
334
|
+
});
|
|
335
|
+
}, [instance.getState().columnVisibility]);
|
|
336
|
+
|
|
313
337
|
return (
|
|
314
338
|
<>
|
|
315
339
|
<Dialog
|
package/src/utils.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ColumnDef,
|
|
3
|
-
ColumnOrderState,
|
|
4
|
-
Table,
|
|
5
|
-
Updater,
|
|
6
|
-
} from '@tanstack/react-table';
|
|
1
|
+
import { ColumnDef, ColumnOrderState, Table } from '@tanstack/react-table';
|
|
7
2
|
import {
|
|
8
3
|
MaterialReactTableProps,
|
|
9
4
|
MRT_Column,
|
|
@@ -67,8 +62,7 @@ export const reorderColumn = (
|
|
|
67
62
|
movingColumn: MRT_Column,
|
|
68
63
|
receivingColumn: MRT_Column,
|
|
69
64
|
columnOrder: ColumnOrderState,
|
|
70
|
-
|
|
71
|
-
) => {
|
|
65
|
+
): ColumnOrderState => {
|
|
72
66
|
if (movingColumn.getCanPin()) {
|
|
73
67
|
movingColumn.pin(receivingColumn.getIsPinned());
|
|
74
68
|
}
|
|
@@ -77,7 +71,7 @@ export const reorderColumn = (
|
|
|
77
71
|
0,
|
|
78
72
|
columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0],
|
|
79
73
|
);
|
|
80
|
-
|
|
74
|
+
return [...columnOrder];
|
|
81
75
|
};
|
|
82
76
|
|
|
83
77
|
export const getLeadingDisplayColumnIds = (
|