پرتوپرتو

قابل تغییر اندازه (Resizable)

پنل‌های قابل تغییر اندازه با دسته‌های کشیدنی

معرفی

کامپوننت Resizable برای ایجاد layout های قابل تغییر اندازه با پنل‌هایی که کاربر می‌تواند سایز آن‌ها را تغییر دهد، استفاده می‌شود.

استفاده

پنل اول
پنل دوم
import {
  ResizablePanelGroup,
  ResizablePanel,
  ResizableHandle,
} from '@parto/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

PropTypeDefaultتوضیحات
defaultSizenumber-اندازه پیش‌فرض (درصد)
minSizenumber-حداقل اندازه (درصد)
maxSizenumber-حداکثر اندازه (درصد)
collapsiblebooleanfalseقابل جمع شدن

ResizablePanelGroup

PropTypeDefaultتوضیحات
direction'horizontal' | 'vertical''horizontal'جهت پنل‌ها

ResizableHandle

PropTypeDefaultتوضیحات
withHandlebooleanfalseنمایش دسته

ویژگی‌ها

  • تغییر اندازه با کشیدن
  • حداقل و حداکثر اندازه
  • ذخیره وضعیت
  • پنل‌های قابل جمع شدن
  • کیبورد navigation
  • سازگار با RTL