Skip to content

Commit 8f85b7f

Browse files
committed
fix: Collapsed panel no longer grows when not pushed by a sibling panel
1 parent 92d6dd4 commit 8f85b7f

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/components/SplitPane/hooks/callbacks/useGetMovedSizes.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,52 @@ export function useGetMovedSizes({
88
isLtr,
99
minSizes,
1010
collapsedIndices,
11+
isReversed,
1112
collapsedSize,
1213
}: {
1314
sizes: number[];
1415
isLtr: boolean;
1516
minSizes: number[];
1617
collapsedIndices: number[];
18+
isReversed: boolean;
1719
collapsedSize: number;
1820
}) {
1921
return useCallback(
2022
(dragState: DragState<ResizeState> | null): number[] => {
2123
if (!dragState) return originalSizes;
2224
const sizes = [...originalSizes];
25+
const index = dragState.extraState.index;
26+
const offset = isLtr ? dragState.offset : -dragState.offset;
2327
moveSizes({
2428
sizes: sizes,
25-
index: dragState.extraState.index,
26-
offset: isLtr ? dragState.offset : -dragState.offset,
29+
index,
30+
offset,
2731
minSizes,
2832
collapsedIndices,
2933
collapsedSize,
3034
});
35+
// must move all previously collapsed panes as well, slightly different to what happens when collapsing, though mostly identical
36+
if (isReversed ? offset > 0 : offset < 0) {
37+
for (
38+
let i = isReversed ? index : index + 1;
39+
isReversed ? i > 0 : i < sizes.length - 1;
40+
isReversed ? i-- : i++
41+
) {
42+
if (collapsedIndices.includes(i)) {
43+
moveSizes({
44+
sizes,
45+
index: isReversed ? i - 1 : i,
46+
offset,
47+
minSizes,
48+
collapsedIndices,
49+
collapsedSize,
50+
});
51+
}
52+
}
53+
}
54+
3155
return sizes;
3256
},
33-
[collapsedIndices, collapsedSize, isLtr, minSizes, originalSizes]
57+
[collapsedIndices, collapsedSize, isLtr, isReversed, minSizes, originalSizes]
3458
);
3559
}

src/components/SplitPane/hooks/useSplitPaneResize.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export function useSplitPaneResize(options: SplitPaneResizeOptions): SplitPaneRe
9494
isLtr,
9595
collapsedSize,
9696
collapsedIndices,
97+
isReversed,
9798
});
9899
const getCurrentPaneSizes = useGetCurrentPaneSizes({ childPanes, split });
99100
const handleDragFinished = useHandleDragFinished({ getMovedSizes, children, hooks, setSizes });

0 commit comments

Comments
 (0)