@@ -34,40 +34,46 @@ const CollapseOverlay = styled.div`
34
34
` ;
35
35
export interface PaneProps {
36
36
size : number ;
37
-
37
+ minSize : number ;
38
38
split : SplitType ;
39
39
className : string ;
40
40
isCollapsed : boolean ;
41
41
forwardRef : React . Ref < HTMLDivElement > ;
42
42
collapseOverlayCss ?: React . CSSProperties ;
43
- isSiblingCollapsed : boolean ;
43
+ collapsedIndices : number [ ] ;
44
44
children : React . ReactNode ;
45
45
transitionTimeout : number | undefined ;
46
46
}
47
47
export const Pane = React . memo (
48
48
( {
49
49
size,
50
+ minSize,
50
51
isCollapsed,
51
52
collapseOverlayCss = { background : 'rgba(220,220,220, 0.1)' } ,
52
53
split,
53
54
className,
54
- forwardRef,
55
55
children,
56
- isSiblingCollapsed,
56
+ forwardRef,
57
+ collapsedIndices,
57
58
transitionTimeout,
58
59
} : PaneProps ) => {
59
60
const classes = useMergeClasses ( [ 'Pane' , split , className ] ) ;
60
61
const timeout = useMemo ( ( ) => transitionTimeout ?? DEFAULT_COLLAPSE_TRANSITION_TIMEOUT , [
61
62
transitionTimeout ,
62
63
] ) ;
63
- const [ shouldAnimate , setShouldAnimate ] = useState < boolean > ( isCollapsed || isSiblingCollapsed ) ;
64
+ const [ shouldAnimate , setShouldAnimate ] = useState < boolean > ( false ) ;
64
65
useEffect ( ( ) => {
65
66
if ( timeout !== 0 ) {
66
67
setShouldAnimate ( true ) ;
67
68
setTimeout ( ( ) => setShouldAnimate ( false ) , 500 ) ;
68
69
}
69
- } , [ setShouldAnimate , isCollapsed , isSiblingCollapsed , timeout ] ) ;
70
+ } , [ setShouldAnimate , collapsedIndices , timeout ] ) ;
70
71
72
+ const minStyle = useMemo (
73
+ ( ) => ( split === 'vertical' ? { minWidth : minSize } : { minHeight : minSize } ) ,
74
+ [ minSize , split ]
75
+ ) ;
76
+ const wrappedChildren = < div style = { minStyle } > { children } </ div > ;
71
77
return (
72
78
< StyledDiv
73
79
isVertical = { split === 'vertical' }
@@ -78,9 +84,9 @@ export const Pane = React.memo(
78
84
timeout = { timeout }
79
85
>
80
86
{ isCollapsed ? (
81
- < CollapseOverlay style = { collapseOverlayCss } > { children } </ CollapseOverlay >
87
+ < CollapseOverlay style = { collapseOverlayCss } > { wrappedChildren } </ CollapseOverlay >
82
88
) : (
83
- children
89
+ wrappedChildren
84
90
) }
85
91
</ StyledDiv >
86
92
) ;
0 commit comments