پرتوپرتو

منوی کشویی (Dropdown Menu)

منوی کشویی با آیتم‌های مختلف

معرفی

کامپوننت DropdownMenu برای نمایش منوی کشویی با گزینه‌های مختلف استفاده می‌شود.

چه زمانی استفاده کنیم:

  • برای نمایش لیست اقدامات مرتبط با یک المان (مثلاً دکمه «بیشتر»)
  • وقتی فضای کافی برای نمایش همه دکمه‌ها در سطر وجود ندارد
  • برای منوهای تنظیمات یا اقدامات ثانویه

چه زمانی استفاده نکنیم:

  • برای انتخاب یک مقدار در فرم — از Select استفاده کنید
  • برای لینک‌های navigation اصلی که همیشه نمایش داده می‌شوند — از NavigationMenu استفاده کنید
  • برای منوهای context-sensitive روی کلیک راست — از ContextMenu استفاده کنید

استفاده

import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@parto-system-design/ui'
import { Button } from '@parto-system-design/ui'

export default function MyComponent() {
  return (
    <DropdownMenu>
      <DropdownMenuTrigger asChild>
        <Button>باز کردن منو</Button>
      </DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuItem>ویرایش</DropdownMenuItem>
        <DropdownMenuItem>کپی</DropdownMenuItem>
        <DropdownMenuItem>حذف</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  )
}

Props

Prop

Type

Prop

Type

Prop

Type

حالت‌ها و انواع

با Checkbox

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button>تنظیمات نمایش</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuCheckboxItem checked={showGrid}>نمایش جدول</DropdownMenuCheckboxItem>
    <DropdownMenuCheckboxItem checked={showChart}>نمایش نمودار</DropdownMenuCheckboxItem>
  </DropdownMenuContent>
</DropdownMenu>

با زیرمنو

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button>عملیات</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuItem>ویرایش</DropdownMenuItem>
    <DropdownMenuSub>
      <DropdownMenuSubTrigger>انتقال به</DropdownMenuSubTrigger>
      <DropdownMenuSubContent>
        <DropdownMenuItem>پوشه ۱</DropdownMenuItem>
        <DropdownMenuItem>پوشه ۲</DropdownMenuItem>
      </DropdownMenuSubContent>
    </DropdownMenuSub>
  </DropdownMenuContent>
</DropdownMenu>

راهنمای استفاده

بکنید

  • از asChild روی trigger استفاده کنید تا دکمه دلخواه خودتان را به عنوان trigger قرار دهید - آیتم‌های مرتبط را با DropdownMenuSeparator گروه‌بندی کنید - برای اقدامات خطرناک (مثل حذف) از رنگ destructive استفاده کنید

نکنید

  • بیش از ۱۰ آیتم در یک سطح منو نگذارید — از زیرمنو یا گروه‌بندی استفاده کنید - از DropdownMenu برای انتخاب مقدار در فرم استفاده نکنید — از Select استفاده کنید

دسترسی‌پذیری

  • با کلیدهای و بین آیتم‌ها پیمایش می‌شود
  • با Enter یا Space آیتم انتخاب می‌شود
  • با Escape منو بسته می‌شود
  • از role="menu" و role="menuitem" استفاده می‌شود
  • focus به trigger برمی‌گردد پس از بستن منو

تعامل با کیبورد

  • Enter یا Space: باز/بسته کردن منو - Arrow Down / Arrow Up: حرکت بین آیتم‌ها - Escape: بستن منو - حروف: جستجوی سریع آیتم‌ها

کامپوننت‌های مرتبط

  • ContextMenu — وقتی منو باید با کلیک راست باز شود، نه کلیک چپ
  • Select — وقتی کاربر باید یک مقدار از لیست انتخاب کند (در فرم)
  • Menubar — وقتی چندین منوی کشویی در یک نوار افقی نیاز دارید