قابل تغییر اندازه (Resizable)
پنلهای قابل تغییر اندازه با دستههای کشیدنی
معرفی
کامپوننت Resizable برای ایجاد layout های قابل تغییر اندازه با پنلهایی که کاربر میتواند سایز آنها را تغییر دهد، استفاده میشود.
چه زمانی استفاده کنیم:
- وقتی کاربر نیاز دارد اندازه پنلها را بر اساس نیاز خود تنظیم کند
- برای ساختارهای چندپنلی مانند IDE یا داشبوردهای تحلیلی
- وقتی نسبت فضای اختصاصیافته به هر بخش باید توسط کاربر تعیین شود
چه زمانی استفاده نکنیم:
- برای layout های responsive — از CSS grid/flex استفاده کنید
- وقتی نسبت پنلها باید ثابت باشد — از grid استفاده کنید
استفاده
import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@parto-system-design/ui'
export default function MyComponent() {
return (
<ResizablePanelGroup direction="horizontal" className="min-h-[200px]">
<ResizablePanel defaultSize={50}>
<div className="p-6">پنل اول</div>
</ResizablePanel>
<ResizableHandle />
<ResizablePanel defaultSize={50}>
<div className="p-6">پنل دوم</div>
</ResizablePanel>
</ResizablePanelGroup>
)
}حالتها و انواع
عمودی
<ResizablePanelGroup direction="vertical" className="min-h-[400px]">
<ResizablePanel defaultSize={25}>پنل بالا</ResizablePanel>
<ResizableHandle />
<ResizablePanel defaultSize={75}>پنل پایین</ResizablePanel>
</ResizablePanelGroup>با دسته
<ResizablePanelGroup direction="horizontal">
<ResizablePanel>پنل ۱</ResizablePanel>
<ResizableHandle withHandle />
<ResizablePanel>پنل ۲</ResizablePanel>
</ResizablePanelGroup>سه پنل
<ResizablePanelGroup direction="horizontal">
<ResizablePanel defaultSize={25} minSize={20}>
<div>سایدبار</div>
</ResizablePanel>
<ResizableHandle />
<ResizablePanel defaultSize={50}>
<div>محتوای اصلی</div>
</ResizablePanel>
<ResizableHandle />
<ResizablePanel defaultSize={25} minSize={20}>
<div>پنل کناری</div>
</ResizablePanel>
</ResizablePanelGroup>Props
ResizablePanel
ResizablePanelGroup
ResizableHandle
راهنمای استفاده
بکنید
- همیشه
minSizeتعیین کنید تا پنلها بیش از حد کوچک نشوند - ازwithHandleرویResizableHandleاستفاده کنید تا کاربر دسته را به راحتی ببیند - برای layout های سهپنلی،defaultSizeهر پنل را طوری تنظیم کنید که مجموع ۱۰۰ شود
نکنید
- از Resizable برای layout های responsive ساده استفاده نکنید — CSS grid/flex کافی است - تعداد پنلها را بیش از ۳-۴ عدد نکنید — تجربه کاربری پیچیده میشود
دسترسیپذیری
- دستهها با کیبورد قابل پیمایش هستند
- با کلیدهای جهتنما میتوان اندازه پنلها را تغییر داد
- از
role="separator"برای دستهها استفاده میشود - سازگار با RTL
کامپوننتهای مرتبط
- Sidebar — وقتی به یک پنل کناری ثابت با قابلیت collapse نیاز دارید، نه تغییر اندازه آزاد