البناء · جديد

الدرج السفلي

لوحة تنزلق من أسفل شاشة الجوال لمهمة قصيرة أو قائمة إجراءات، في متناول الإبهام، والصفحة ظاهرة خلفها. تُعرف أيضًا باللوحة السفلية (Bottom sheet).

المعاينة

المعكوسة هي المحتوى الإنجليزي نفسه من اليمين إلى اليسار، لتفصل خطأ الاتجاه عن خطأ الترجمة.

التثبيت

قريبًايُفتح التثبيت من السجل مع الإطلاق. حتى ذلك الحين، هذا هو الأمر الذي ستستخدمه.
npx shadcn@latest add @ritla/drawer

الاعتماديات التي يضيفها: @base-ui/react, @phosphor-icons/react

الاستخدام

import { Drawer, DrawerBody, DrawerContent, DrawerHeader, DrawerMenu, DrawerMenuItem, DrawerTrigger } from "@/components/ui/drawer";
<Drawer>
  <DrawerTrigger render={<Button />}>Move email</DrawerTrigger>
  <DrawerContent>
    <DrawerHeader title="Move to" />
    <DrawerBody>
      <DrawerMenu>
        <DrawerMenuItem leadingIcon={TrayIcon} onSelect={moveToInbox}>Inbox</DrawerMenuItem>
      </DrawerMenu>
    </DrawerBody>
  </DrawerContent>
</Drawer>

أمثلة

مهمة قصيرة

المحتوى مهمة واحدة (تصفية) تنتهي بزر ثانوي ثم أساسي، والأساسي في نهاية السطر. ولأنها تحمل اختيارات، لا تُغلق بلمس الخلفية (disablePointerDismissal).

قائمة طويلة

تتوقف اللوحة عند 90% من الشاشة ويُمرَّر المحتوى، ويبقى العنوان في مكانه. والعنوان الفرعي بجانب العنوان.

أزرار متراصة

‏stacking="vertical" للعناوين الطويلة، والأساسي في الأعلى. الأزرار تبقى بترتيب القراءة: الثانوي ثم الأساسي.

مرجع الخصائص

Drawer

الخاصيةالنوعالافتراضيالوصف
open / defaultOpen / onOpenChangebooleanللتحكم في الفتح.
disablePointerDismissalbooleanfalseلا تُغلق بلمس الخلفية (للوحات التي تحمل مدخلات).

DrawerContent

الخاصيةالنوعالافتراضيالوصف
handlebooleantrueمقبض السحب، للإشارة فقط.
initialFocusRefObject<HTMLElement>أين يبدأ التركيز.

DrawerHeader

الخاصيةالنوعالافتراضيالوصف
titleReactNodeخاصية Title: الغرض من اللوحة، وهو اسمها.
subtitleReactNodeخاصية Subtitle بجانب العنوان.
descriptionReactNodeخاصية Description: سطر قصير للسياق.
badgeReactNodeخاصية Show badge: عدد أو نص قصير.
closeButton / closeLabelboolean / stringtrue / "Close"زر الإغلاق واسمه. أبقه دائمًا.

DrawerMenuItem

الخاصيةالنوعالافتراضيالوصف
childrenReactNodeنص الصف.
leadingIcon / description / trailingIconComponent / ReactNode / ReactNodeأيقونة وسطر ثانٍ وعدد في النهاية.
onSelect / disabled() => void / booleanيعمل عند اللمس ثم تُغلق اللوحة.

DrawerActions / DrawerBody / DrawerMenuLabel / DrawerClose

الخاصيةالنوعالافتراضيالوصف
stacking"horizontal" | "vertical""horizontal"خاصية Stacking للأزرار.
DrawerBodydivالمحتوى، ويُمرَّر عند الحاجة.
DrawerMenuLabelh3عنوان مجموعة صفوف.
DrawerClose renderReactElementزر يغلق اللوحة.

إمكانية الوصول

لوحة المفاتيح

المفاتيح مكتوبة للاتجاه من اليسار إلى اليمين. في الاتجاه من اليمين يتبادل السهمان دورهما: السهم المتجه مع اتجاه القراءة ينقلك إلى الأمام.

المفتاحما يفعله
TabShift+Tabبين عناصر اللوحة فقط.
Escيغلقها ويعيد التركيز إلى الزر الذي فتحها.

ARIA

  • اللوحة dialog مع aria-modal، والعنوان اسمها.
  • السحب للأسفل ليس الطريق الوحيد للإغلاق: زر الإغلاق («إغلاق») وEsc ولمس الخلفية.
  • مقبض السحب زخرفي، والصفوف والأزرار 48 بكسل على الأقل.

ملاحظات العربية والاتجاه

ينعكس

  • العنوان وأيقونات القائمة على اليمين، وزر الإغلاق على اليسار.
  • الزر الأساسي على اليسار في نهاية السطر، والثانوي على اليمين.

لا ينعكس

  • الحركة عمودية: تنزلق للأعلى وتُسحب للأسفل في اللغتين.
الأرقام
الأعداد في الصفوف تتبع إعداد الأرقام؛ نسّقها بـ formatNumber.
الخط العربي
العنوان label-14 Medium، والفرعي والوصف label-12، والصفوف كصفوف القائمة.
النص ثنائي الاتجاه
أسماء بلغة أخرى داخل الصفوف تأخذ dir="auto".

كل المكونات ›