انتخابگر بومی (Native Select)
المان انتخابگر بومی HTML با استایلدهی سیستم طراحی Rad UI و پشتیبانی از RTL.
نصب (Installation)
1npx @quark-lab/rad-ui add native-selectنمونهها (Examples)
استفاده پایه (Basic Usage)
سادهترین حالت استفاده از انتخابگر بومی.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4} from "@/components/ui/native-select";
5
6export default function BasicExample() {
7 return (
8 <NativeSelect>
9 <NativeSelectOption value="">انتخاب کنید...</NativeSelectOption>
10 <NativeSelectOption value="option1">گزینه ۱</NativeSelectOption>
11 <NativeSelectOption value="option2">گزینه ۲</NativeSelectOption>
12 <NativeSelectOption value="option3">گزینه ۳</NativeSelectOption>
13 </NativeSelect>
14 );
15}
16با برچسب (With Label)
استفاده از انتخابگر همراه با برچسب.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4} from "@/components/ui/native-select";
5import { Label } from "@/components/ui/label";
6
7export default function WithLabelExample() {
8 return (
9 <div className="space-y-2">
10 <Label htmlFor="fruit">میوه مورد علاقه</Label>
11 <NativeSelect id="fruit">
12 <NativeSelectOption value="">انتخاب میوه</NativeSelectOption>
13 <NativeSelectOption value="apple">سیب</NativeSelectOption>
14 <NativeSelectOption value="banana">موز</NativeSelectOption>
15 <NativeSelectOption value="orange">پرتقال</NativeSelectOption>
16 </NativeSelect>
17 </div>
18 );
19}
20گروهبندی (Groups)
استفاده از optgroup برای گروهبندی گزینهها.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4 NativeSelectOptGroup,
5} from "@/components/ui/native-select";
6import { Label } from "@/components/ui/label";
7
8export default function GroupsExample() {
9 return (
10 <div className="space-y-2">
11 <Label htmlFor="cars">انتخاب خودرو</Label>
12 <NativeSelect id="cars">
13 <NativeSelectOption value="">انتخاب کنید...</NativeSelectOption>
14 <NativeSelectOptGroup label="آلمانی">
15 <NativeSelectOption value="mercedes">مرسدس بنز</NativeSelectOption>
16 <NativeSelectOption value="bmw">بیامو</NativeSelectOption>
17 <NativeSelectOption value="audi">آئودی</NativeSelectOption>
18 </NativeSelectOptGroup>
19 <NativeSelectOptGroup label="ژاپنی">
20 <NativeSelectOption value="toyota">تویوتا</NativeSelectOption>
21 <NativeSelectOption value="honda">هوندا</NativeSelectOption>
22 <NativeSelectOption value="nissan">نیسان</NativeSelectOption>
23 </NativeSelectOptGroup>
24 </NativeSelect>
25 </div>
26 );
27}
28اندازهها (Sizes)
انتخابگرها در سه اندازه کوچک، متوسط و بزرگ موجود هستند.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4} from "@/components/ui/native-select";
5import { Label } from "@/components/ui/label";
6
7export default function SizesExample() {
8 return (
9 <div className="space-y-8">
10 <div className="space-y-2">
11 <Label>Small (sm) - پیشفرض</Label>
12 <NativeSelect size="sm">
13 <NativeSelectOption value="sm">گزینه کوچک</NativeSelectOption>
14 </NativeSelect>
15 </div>
16 <div className="space-y-2">
17 <Label>Medium (md)</Label>
18 <NativeSelect size="md">
19 <NativeSelectOption value="md">گزینه متوسط</NativeSelectOption>
20 </NativeSelect>
21 </div>
22 <div className="space-y-2">
23 <Label>Large (lg)</Label>
24 <NativeSelect size="lg">
25 <NativeSelectOption value="lg">گزینه بزرگ</NativeSelectOption>
26 </NativeSelect>
27 </div>
28 </div>
29 );
30}
31حالت غیرفعال (Disabled State)
انتخابگر غیرفعال که کاربر نمیتواند آن را تغییر دهد.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4} from "@/components/ui/native-select";
5import { Label } from "@/components/ui/label";
6
7export default function DisabledExample() {
8 return (
9 <div className="space-y-2">
10 <Label htmlFor="disabled">غیرفعال</Label>
11 <NativeSelect id="disabled" disabled>
12 <NativeSelectOption value="">این فیلد غیرفعال است</NativeSelectOption>
13 </NativeSelect>
14 </div>
15 );
16}
17حالتهای اعتبارسنجی (Validation States)
نمایش حالت خطا برای انتخابگر.
لطفاً یک گزینه معتبر انتخاب کنید.
مشاهده کد
1import {
2 NativeSelect,
3 NativeSelectOption,
4} from "@/components/ui/native-select";
5import { Label } from "@/components/ui/label";
6
7export default function ValidationExample() {
8 return (
9 <div className="space-y-2">
10 <Label htmlFor="invalid" className="text-destructive">
11 انتخاب نامعتبر
12 </Label>
13 <NativeSelect
14 id="invalid"
15 aria-invalid="true"
16 className="border-destructive focus-visible:ring-destructive"
17 >
18 <NativeSelectOption value="">انتخاب کنید...</NativeSelectOption>
19 <NativeSelectOption value="1">گزینه ۱</NativeSelectOption>
20 <NativeSelectOption value="2">گزینه ۲</NativeSelectOption>
21 </NativeSelect>
22 <p className="text-sm text-destructive">
23 لطفاً یک گزینه معتبر انتخاب کنید.
24 </p>
25 </div>
26 );
27}
28مرجع API (API Reference)
NativeSelect
پراپهای کامپوننت NativeSelect.
| پراپ (Prop) | نوع (Type) | پیشفرض (Default) | توضیحات (Description) |
|---|---|---|---|
size | "sm" | "md" | "lg" | "sm" | اندازه کامپوننت |
children | ReactNode | - | شامل NativeSelectOption یا NativeSelectOptGroup |
className | string | - | کلاسهای CSS سفارشی |
...props | SelectHTMLAttributes | - | تمام ویژگیهای استاندارد HTML select (مانند disabled, required, onChange) |
NativeSelectOption
wrapper ساده برای تگ option.
NativeSelectOptGroup
wrapper ساده برای تگ optgroup.
پشتیبانی RTL
این کامپوننت به طور خودکار از جهتگیری راستچین پشتیبانی میکند. آیکون فلش به درستی در سمت چپ (در حالت RTL) یا سمت راست (در حالت LTR) قرار میگیرد و فاصلهگذاریها با استفاده از ویژگیهای منطقی CSS (مانند pe-8 و end-3) تنظیم شدهاند.