انتخابگر (Select)
کامپوننت انتخاب گزینه از لیست
معرفی
کامپوننت Select برای انتخاب یک گزینه از لیست کشویی استفاده میشود.
استفاده
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectItem,
} from '@parto/ui';
<Select defaultValue="option1">
<SelectTrigger className="w-[220px]">
<SelectValue placeholder="انتخاب کنید" />
</SelectTrigger>
<SelectContent>
<SelectItem value="option1">گزینه ۱</SelectItem>
<SelectItem value="option2">گزینه ۲</SelectItem>
<SelectItem value="option3">گزینه ۳</SelectItem>
</SelectContent>
</Select>با Label
<div className="space-y-2">
<label htmlFor="framework">فریمورک</label>
<Select>
<SelectTrigger id="framework" className="w-[180px]">
<SelectValue placeholder="انتخاب فریمورک" />
</SelectTrigger>
<SelectContent>
<SelectItem value="next">Next.js</SelectItem>
<SelectItem value="react">React</SelectItem>
<SelectItem value="vue">Vue</SelectItem>
<SelectItem value="svelte">Svelte</SelectItem>
</SelectContent>
</Select>
</div>کنترل شده
const [value, setValue] = React.useState("");
<Select value={value} onValueChange={setValue}>
<SelectTrigger>
<SelectValue placeholder="انتخاب کنید" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">سیب</SelectItem>
<SelectItem value="banana">موز</SelectItem>
<SelectItem value="orange">پرتقال</SelectItem>
</SelectContent>
</Select>با گروهبندی
import { SelectGroup, SelectLabel } from '@parto/ui';
<Select>
<SelectTrigger className="w-[280px]">
<SelectValue placeholder="انتخاب میوه" />
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectLabel>میوههای استوایی</SelectLabel>
<SelectItem value="banana">موز</SelectItem>
<SelectItem value="pineapple">آناناس</SelectItem>
<SelectItem value="mango">انبه</SelectItem>
</SelectGroup>
<SelectGroup>
<SelectLabel>میوههای معمولی</SelectLabel>
<SelectItem value="apple">سیب</SelectItem>
<SelectItem value="orange">پرتقال</SelectItem>
<SelectItem value="grape">انگور</SelectItem>
</SelectGroup>
</SelectContent>
</Select>غیرفعال کردن گزینه
<Select>
<SelectTrigger>
<SelectValue placeholder="انتخاب کنید" />
</SelectTrigger>
<SelectContent>
<SelectItem value="option1">گزینه ۱</SelectItem>
<SelectItem value="option2" disabled>
گزینه ۲ (غیرفعال)
</SelectItem>
<SelectItem value="option3">گزینه ۳</SelectItem>
</SelectContent>
</Select>ترکیب کامپوننتها
Select از اجزای زیر تشکیل شده است:
- Select: کانتینر اصلی و مدیریت state
- SelectTrigger: دکمه باز کننده منو
- SelectValue: نمایش مقدار انتخاب شده
- SelectContent: کانتینر محتوای منو
- SelectItem: هر گزینه
- SelectGroup: گروهبندی گزینهها
- SelectLabel: برچسب گروه
Props
Select
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | مقدار کنترل شده |
onValueChange | (value: string) => void | - | callback تغییر مقدار |
defaultValue | string | - | مقدار پیشفرض |
disabled | boolean | false | غیرفعال کردن select |
SelectItem
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | مقدار گزینه (الزامی) |
disabled | boolean | false | غیرفعال کردن گزینه |
دسترسیپذیری
- پیمایش با کیبورد (Arrow keys، Enter، Space)
- جستجو با تایپ
- از
role="combobox"استفاده میشود aria-expandedبرای وضعیت باز/بستهaria-selectedبرای گزینه انتخاب شده- پشتیبانی کامل از screen readers
ملاحظات RTL
- منوی dropdown بهدرستی راستچین میشود
- آیکون کشویی در سمت مناسب قرار میگیرد
- متنها راستچین هستند
- پیمایش کیبورد با RTL سازگار است