리사이저블
리사이저블 (Resizable)
접근 가능한 리사이즈 패널 그룹과 레이아웃을 지원하는 컴포넌트로, 키보드 지원도 포함돼요. 화면을 여러 패널로 나누고 사용자가 패널 사이의 경계를 드래그해서 크기를 조절할 수 있게 해 줘요. 분할 화면처럼 영역을 자유롭게 조정해야 하는 레이아웃에서 사용해요.
출처: 문서
본문
소개
Resizable 컴포넌트는 bvaughn이 만든 react-resizable-panels 위에 만들어져 있어요.
설치하기
npx shadcn@latest add resizable
npm install react-resizable-panels
사용하기
팬 컴포넌트를 import 하고,
import {
ResizableHandle,
ResizablePanel,
ResizablePanelGroup,
} from "@/components/ui/resizable"
다음 구조로 조립하면 돼요. ResizablePanelGroup 안에 ResizablePanel을 배치하고, 패널 사이에 ResizableHandle을 넣으면 그 경계를 드래그해서 크기를 조절할 수 있어요.
<ResizablePanelGroup direction="horizontal">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
예시
세로 방향
direction prop으로 리사이즈 패널의 방향을 정할 수 있어요. vertical로 주면 패널이 세로로 쌓여요.
import {
ResizableHandle,
ResizablePanel,
ResizablePanelGroup,
} from "@/components/ui/resizable"
export default function Example() {
return (
<ResizablePanelGroup direction="vertical">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
)
}
핸들
ResizableHandle 컴포넌트의 withHandle prop을 사용하면 핸들의 표시 여부를 정할 수 있어요. withHandle을 주면 핸들 아이콘이 함께 나타나요.
import {
ResizableHandle,
ResizablePanel,
ResizablePanelGroup,
} from "@/components/ui/resizable"
export default function Example() {
return (
<ResizablePanelGroup direction="horizontal">
<ResizablePanel>One</ResizablePanel>
<ResizableHandle withHandle />
<ResizablePanel>Two</ResizablePanel>
</ResizablePanelGroup>
)
}
더 알아보기 (Learn more)
- react-resizable-panels — 리사이즈 패널의 기반 라이브러리