پرتوپرتو

سلکت بومی (Native Select)

یک select بومی HTML با استایل بهتر

معرفی

کامپوننت Native Select یک المان select بومی HTML است که با استایل بهتر و سازگار با design system ارائه شده است.

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

  • وقتی به styling سفارشی نیاز دارید — از Select استفاده کنید
  • برای انتخاب چند گزینه — از MultiSelect استفاده کنید

استفاده

import { NativeSelect, NativeSelectOption } from '@parto-system-design/ui'

export default function MyComponent() {
  return (
    <NativeSelect>
      <NativeSelectOption value="">انتخاب کنید</NativeSelectOption>
      <NativeSelectOption value="1">گزینه ۱</NativeSelectOption>
      <NativeSelectOption value="2">گزینه ۲</NativeSelectOption>
      <NativeSelectOption value="3">گزینه ۳</NativeSelectOption>
    </NativeSelect>
  )
}

با OptGroup

<NativeSelect>
  <NativeSelectOptGroup label="گروه اول">
    <NativeSelectOption value="1">گزینه ۱</NativeSelectOption>
    <NativeSelectOption value="2">گزینه ۲</NativeSelectOption>
  </NativeSelectOptGroup>
  <NativeSelectOptGroup label="گروه دوم">
    <NativeSelectOption value="3">گزینه ۳</NativeSelectOption>
    <NativeSelectOption value="4">گزینه ۴</NativeSelectOption>
  </NativeSelectOptGroup>
</NativeSelect>

غیرفعال

<NativeSelect disabled>
  <NativeSelectOption>غیرفعال</NativeSelectOption>
</NativeSelect>

با خطا

<NativeSelect aria-invalid="true">
  <NativeSelectOption>انتخاب کنید</NativeSelectOption>
</NativeSelect>

مزایا

  • سرعت بارگذاری بالا
  • عملکرد بومی دستگاه
  • مصرف حافظه کم
  • سازگاری کامل با مرورگرها
  • دسترسی‌پذیری بهتر

کاربردها

  • فرم‌های ساده
  • انتخاب سریع
  • دستگاه‌های موبایل
  • وقتی نیاز به جستجو نیست

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

حالت‌های مختلف

<div className="flex flex-col gap-4" dir="rtl">
  <NativeSelect>
    <NativeSelectOption value="">انتخاب کنید...</NativeSelectOption>
    <NativeSelectOption value="1">گزینه اول</NativeSelectOption>
  </NativeSelect>
  <NativeSelect disabled>
    <NativeSelectOption>غیرفعال</NativeSelectOption>
  </NativeSelect>
  <NativeSelect aria-invalid="true">
    <NativeSelectOption>با خطا</NativeSelectOption>
  </NativeSelect>
</div>

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

بکنید

  • برای فرم‌های ساده و لیست‌های کوتاه (کمتر از ۱۰ گزینه) از NativeSelect استفاده کنید - در دستگاه‌های موبایل NativeSelect را ترجیح دهید زیرا عملکرد بومی بهتری دارد - از NativeSelectOptGroup برای دسته‌بندی گزینه‌های مرتبط استفاده کنید

نکنید

  • وقتی نیاز به جستجو در بین گزینه‌ها دارید از NativeSelect استفاده نکنید — از Autocomplete استفاده کنید - برای انتخاب چند گزینه همزمان از NativeSelect استفاده نکنید — از MultiSelect استفاده کنید - وقتی styling سفارشی برای گزینه‌ها نیاز دارید از NativeSelect استفاده نکنید — از Select استفاده کنید

Props

NativeSelect

Prop

Type

NativeSelectOption

Prop

Type

NativeSelectOptGroup

Prop

Type

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

  • از المان بومی <select> استفاده می‌شود و دسترسی‌پذیری مرورگر به‌صورت خودکار فراهم است
  • همیشه با Label همراه کنید تا screen reader هدف فیلد را اعلام کند
  • در حالت خطا، aria-invalid="true" وضعیت را به screen reader منتقل می‌کند

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

  • Tab: انتقال فوکوس به select - Space / Enter: باز کردن لیست گزینه‌ها - Arrow Up / Arrow Down: پیمایش بین گزینه‌ها - Escape: بستن لیست

مقایسه با Select

برای موارد پیچیده‌تر مثل جستجو، multi-select یا سفارشی‌سازی بیشتر، از کامپوننت Select استفاده کنید.

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

  • Select — اگر نیاز به styling سفارشی یا قابلیت‌های پیشرفته دارید، از Select استفاده کنید
  • Autocomplete — اگر نیاز به جستجو در بین گزینه‌ها دارید، Autocomplete گزینه مناسب‌تری است