유동적인 사이즈 조절을 위한 Resizable 컴포넌트
// 컬럼 정의
() => {
const defaultStyle = {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
padding: '24px',
height: '100%'
}
const fontWeight = { fontWeight: 600 }
return (
<Resizable.Root
direction='horizontal'
style={{
maxWidth: '28rem',
borderRadius: '0.5rem',
border: '1px solid #d1d5db',
minWidth: '450px',
minHeight: '370px',
display: 'flex',
flexDirection: 'row'
}}
>
<Resizable.Contents defaultSize={50}>
<div
style={{
...defaultStyle,
height: '200px'
}}
>
<span style={fontWeight}>One</span>
</div>
</Resizable.Contents>
<Resizable.Trigger />
<Resizable.Contents defaultSize={50}>
<Resizable.Root
direction='vertical'
style={{ display: 'flex', flexDirection: 'column', height: '100%' }}
>
<Resizable.Contents defaultSize={25}>
<div style={defaultStyle}>
<span style={fontWeight}>Two</span>
</div>
</Resizable.Contents>
<Resizable.Trigger />
<Resizable.Contents defaultSize={75}>
<div style={defaultStyle}>
<span style={fontWeight}>Three</span>
</div>
</Resizable.Contents>
</Resizable.Root>
</Resizable.Contents>
</Resizable.Root>
)
}
이 컴포넌트는 react-resizable-panels를 기반으로 지원합니다.
| Prop | Type | Default |
|---|---|---|
autoSaveId | string | No default value |
children | ReactNode | No default value |
className | string | No default value |
direction | "horizontal" | "vertical" | No default value |
id | string | No default value |
onLayout | (sizes: number[]) => void | No default value |
storage | PanelGroupStorage | No default value |
style | CSSProperties | No default value |
tagName | string | div |
| Prop | Type | Default |
|---|---|---|
children | ReactNode | No default value |
className | string | No default value |
collapsedSize | number | 0 |
collapsible | boolean | false |
defaultSize | number | No default value |
id | string | No default value |
maxSize | number | 100 |
minSize | number | 10 |
onCollapse | () => void | No default value |
onExpand | () => void | No default value |
onResize | (size: number) => void | No default value |
order | number | No default value |
style | CSSProperties | No default value |
tagName | string | div |
| Prop | Type | Default |
|---|---|---|
children | ReactNode | No default value |
className | string | No default value |
hitAreaMargins | { coarse: number = 15; fine: number = 5; } | No default value |
disabled | boolean | No default value |
id | string | No default value |
onDragging | (isDragging: boolean) => void | No default value |
style | CSSProperties | No default value |
tagName | string | div |