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/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ColumnDef, ColumnOrderState, Table, Updater } from '@tanstack/react-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, setColumnOrder: (updater: Updater<ColumnOrderState>) => void) => void;
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.1",
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, setColumnOrder),
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, setColumnOrder),
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, columnVisibility } = getState();
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, setColumnOrder),
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
- setColumnOrder: (updater: Updater<ColumnOrderState>) => void,
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
- setColumnOrder([...columnOrder]);
74
+ return [...columnOrder];
81
75
  };
82
76
 
83
77
  export const getLeadingDisplayColumnIds = (