Select
Geçerli değerde açılan, typeahead, gruplar ve form desteği olan bir listeden bir veya daha fazla seçenek seçin.
pnpm dlx shadcn@latest add https://hextaui.com/r/select.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/select.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Liste doğrudan tetikleyicinin üzerinde, geçerli seçenek değerin üstüne denk gelecek şekilde açılır; böylece gözünüz yerini kaybetmez. SelectValue'nun ham değerler yerine etiketleri göstermesi için items verin. Aranması gereken uzun listeler için Combobox kullanın.
Boyutlar
SelectTrigger üzerindeki size, Input ve Button yükseklikleriyle eşleşir.
Gruplar ve uzun listeler
Seçenekleri SelectGroup ve SelectLabel ile gruplayın. Uzun listeler ekrana sığar ve üzerine gelince kaydıran kaydırma okları gösterir.
Simgelerle
Öğelere simge koyun ve aynı simgeyi tetikleyicide göstermek için SelectValue'ya bir fonksiyon verin.
Çoklu
multiple ile siz seçerken liste açık kalır ve değer uzun seçimleri özetleyebilir.
Bir formda
Field içinde tetikleyici etiketini, açıklamasını ve zorunlu doğrulamasını alır.
Devre dışı ve geçersiz
Select'in tamamını veya tek tek seçenekleri devre dışı bırakın ve aria-invalid ile geçersiz olarak işaretleyin.
Tetikleyicinin altında
alignItemWithTrigger={false} listeyi bir menü gibi tetikleyicinin altında açar. Dokunmatik girdi bunu otomatik yapar.
Sağdan sola
Tetikleyici, liste ve onay işareti okuma yönünü izler.
| Tuş | Action |
|---|---|
| SpaceEnter↓↑ | Listeyi tetikleyiciden açar. |
| ↓↑ | Seçenekler arasında gezinir. |
| HomeEnd | İlk veya son seçeneğe gider. |
| A–Z | Yazılan metinle başlayan sonraki seçeneğe atlar. |
| EnterSpace | Vurgulanan seçeneği seçer. |
| Esc | Listeyi kapatır ve odağı tetikleyiciye döndürür. |
- Tetikleyiciyi
FieldLabelveyaaria-labelile etiketleyin. - Dokunmatikte liste tetikleyicinin üzerine değil altına açılır; böylece parmağınız bir seçeneğe denk gelmez.
| Prop | Tür | Varsayılan |
|---|---|---|
value | Value | Value[] | null | – |
defaultValue | Value | Value[] | null | – |
onValueChange | (value, details) => void | – |
itemsSelectValue'nun etiketleri göstermesini sağlar. | Record<string, ReactNode> | { value, label }[] | – |
multiple | boolean | false |
name | string | – |
required | boolean | false |
disabled | boolean | false |
readOnly | boolean | false |
open | boolean | – |
onOpenChange | (open, details) => void | – |
| Prop | Tür | Varsayılan |
|---|---|---|
size | "sm" | "default" | "lg" | "default" |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="select-trigger" | Tetikleyici; data-size ile. |
data-popup-open | Liste açıkken bulunur. |
data-placeholder | Hiçbir şey seçili değilken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
placeholder | ReactNode | – |
childrenGösterilen değeri biçimlendirir. | ReactNode | (value) => ReactNode | – |
| Prop | Tür | Varsayılan |
|---|---|---|
alignItemWithTriggerGeçerli seçenek hizalanmış olarak tetikleyicinin üzerinde açılır. | boolean | true |
sideTetikleyiciyle hizalı olmadığında. | "top" | "bottom" | … | "bottom" |
align | "start" | "center" | "end" | "start" |
sideOffset | number | 6 |
| Öznitelik | Açıklama |
|---|---|
data-slot="select-content" | Açılır pencere. |
data-side="none" | Tetikleyicinin üzerine hizalıyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
value | Value | – |
disabled | boolean | false |
labelTypeahead için metin. | string | – |
| Öznitelik | Açıklama |
|---|---|
data-selected | Seçilen seçenek. |
data-highlighted | Odaktaki seçenek. |
data-disabled | Seçenek devre dışı. |
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- Checkboxİşareti çizilerek beliren, belirsiz üst öğeleri, grupları ve hover durumunu paylaşan etiketleri olan bir onay kutusu.
- ComboboxÇipler, gruplar ve asenkron sonuçlar içeren, siz yazdıkça boyutu değişen bir açılır pencerede filtrelenebilir bir select.
- Date pickerTek tarihler ve aralıklar için takvimi bir popover içinde, telefonlarda ise alt sayfa olarak açan bir düğme.
- FieldKontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.
- InputÜç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.
Kullanıldığı bloklar
Select üzerine kurulan bloklar.
- API keysOpenAI ve Anthropic konsolları gibi bir yapay zeka ürününün API anahtarları sayfası. Kapsamlı izinler ve son kullanma tarihiyle anahtar oluşturun, gizli anahtarı bir kez görün ve kopyalama onaylansın, geri alınabilir şekilde iptal edin, yerinde yeniden adlandırın, ek süreyle döndürün ve anahtar başına kullanımı görün.
- NotificationsBir yapay zeka ürününün ayarlarındaki Bildirimler bölümü. Satır, sütun ve tümü için anahtarları olan kanal ve olay ızgarası, canlı bir sonraki sessiz saat satırlı sessiz saatler, bir e-posta özeti, masaüstü, e-posta, push ve Slack için gerçek test gönderimleri, tarayıcı izni yönetimi ve bir Slack bağlama akışı. Herhangi bir Ayarlar bölümüne eklenebilir.