Skip to content

Commit 5b2ea7a

Browse files
chcoomilkjonathanl-dropit
authored andcommitted
fix pinned columns not reordering (KevinVandy#1380)
1 parent da76d4a commit 5b2ea7a

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

packages/material-react-table/src/components/head/MRT_TableHeadCellGrabHandle.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
2626
getState,
2727
options: { enableColumnOrdering, muiColumnDragHandleProps },
2828
setColumnOrder,
29+
setColumnPinning,
2930
setDraggingColumn,
3031
setHoveredColumn,
3132
} = table;
@@ -64,9 +65,12 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
6465
hoveredColumn &&
6566
hoveredColumn?.id !== draggingColumn?.id
6667
) {
67-
setColumnOrder(
68-
reorderColumn(column, hoveredColumn as MRT_Column<TData>, columnOrder),
69-
);
68+
const reorderedColumns = reorderColumn(column, hoveredColumn as MRT_Column<TData>, columnOrder);
69+
setColumnOrder(reorderedColumns);
70+
setColumnPinning(({ left = [], right = [] }) => ({
71+
left: reorderedColumns.filter(header => left.includes(header)),
72+
right: reorderedColumns.filter(header => right.includes(header)),
73+
}));
7074
}
7175
setDraggingColumn(null);
7276
setHoveredColumn(null);

packages/material-react-table/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
5151
mrtTheme: { draggingBorderColor },
5252
},
5353
setColumnOrder,
54+
setColumnPinning,
5455
} = table;
5556
const { columnOrder } = getState();
5657
const { columnDef } = column;
@@ -85,7 +86,12 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
8586
setIsDragging(false);
8687
setHoveredColumn(null);
8788
if (hoveredColumn) {
88-
setColumnOrder(reorderColumn(column, hoveredColumn, columnOrder));
89+
const reorderedColumns = reorderColumn(column, hoveredColumn, columnOrder);
90+
setColumnOrder(reorderedColumns);
91+
setColumnPinning(({ left = [], right = [] }) => ({
92+
left: reorderedColumns.filter(header => left.includes(header)),
93+
right: reorderedColumns.filter(header => right.includes(header)),
94+
}));
8995
}
9096
};
9197

packages/material-react-table/stories/features/ColumnOrdering.stories.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ const columns: MRT_ColumnDef<(typeof data)[0]>[] = [
3838
accessorKey: 'state',
3939
header: 'State',
4040
},
41+
{
42+
accessorKey: "phone",
43+
header: "Phone",
44+
enablePinning: false,
45+
}
4146
];
4247

4348
const data = [...Array(100)].map(() => ({
@@ -47,6 +52,7 @@ const data = [...Array(100)].map(() => ({
4752
firstName: faker.person.firstName(),
4853
lastName: faker.person.lastName(),
4954
state: faker.location.state(),
55+
phone: faker.phone.number(),
5056
}));
5157

5258
export const ColumnOrderingEnabled = () => (

0 commit comments

Comments
 (0)