کشو (Drawer)
یک پنل کشویی که از کنار صفحه نمایش داده میشود
معرفی
کامپوننت Drawer یک پنل کشویی است که معمولاً برای نمایش منوها، فرمها یا محتوای اضافی استفاده میشود.
چه زمانی استفاده کنیم:
- برای پنلهای موبایل که از پایین صفحه باز میشوند (bottom sheet)
- برای منوهای ناوبری در موبایل
- وقتی کاربر باید بتواند با swipe پنل را ببندد
چه زمانی استفاده نکنیم:
- برای dialog های کوچک روی desktop — از
Dialogاستفاده کنید - برای فرمهای با تعامل کمپلکس — از
Dialogاستفاده کنید - برای محتوایی که باید در overlay کامل باشد — از
Dialogاستفاده کنید
استفاده
import {
Drawer,
DrawerClose,
DrawerContent,
DrawerDescription,
DrawerFooter,
DrawerHeader,
DrawerTitle,
DrawerTrigger,
} from '@parto-system-design/ui'
export default function MyComponent() {
return (
<Drawer>
<DrawerTrigger>باز کردن</DrawerTrigger>
<DrawerContent>
<DrawerHeader>
<DrawerTitle>عنوان</DrawerTitle>
<DrawerDescription>توضیحات در اینجا</DrawerDescription>
</DrawerHeader>
<div className="p-4">محتوای اصلی</div>
<DrawerFooter>
<DrawerClose>بستن</DrawerClose>
</DrawerFooter>
</DrawerContent>
</Drawer>
)
}حالتها و انواع
پیشفرض
ساختار کامپوننتها
<Drawer>
<DrawerTrigger asChild>
<Button>باز کردن</Button>
</DrawerTrigger>
<DrawerContent>
<DrawerHeader>
<DrawerTitle>عنوان</DrawerTitle>
<DrawerDescription>توضیحات</DrawerDescription>
</DrawerHeader>
{/* محتوا */}
<DrawerFooter>
<Button>تأیید</Button>
<DrawerClose asChild>
<Button variant="outline">لغو</Button>
</DrawerClose>
</DrawerFooter>
</DrawerContent>
</Drawer>جهتهای مختلف
از پایین (پیشفرض)
<Drawer direction="bottom">{/* محتوا */}</Drawer>از چپ
<Drawer direction="left">{/* محتوا */}</Drawer>از راست
<Drawer direction="right">{/* محتوا */}</Drawer>از بالا
<Drawer direction="top">{/* محتوا */}</Drawer>کنترل شده
const [open, setOpen] = useState(false)
;<Drawer open={open} onOpenChange={setOpen}>
{/* محتوا */}
</Drawer>راهنمای استفاده
بکنید
- از Drawer برای تجربه موبایل استفاده کنید و در desktop از
SheetیاDialogاستفاده کنید - همیشهDrawerTitleوDrawerDescriptionرا برای دسترسیپذیری ارائه دهید - ازdirectionمناسب بر اساس نوع محتوا استفاده کنید (bottom برای منو، right/left برای پنل)
نکنید
- Drawer را در desktop بهعنوان جایگزین Dialog استفاده نکنید - محتوای بسیار بلند را بدون اسکرول داخلی در Drawer قرار
ندهید - از Drawer برای تأیید اعمال مخرب استفاده نکنید — از
AlertDialogاستفاده کنید
جدول ویژگیها
Drawer
دسترسیپذیری
- قابل کشیدن (swipe/drag) برای بستن
- اسکرول صفحه در هنگام باز بودن قفل میشود
- از
role="dialog"وaria-modalاستفاده میشود - با Escape بسته میشود
- focus trap برای پیمایش کیبورد