Combobox

Aranabilir select: yazarak filtrele, bir ya da birden çok seçenek seç, ya da kullanıcı yazdıkça seçenekleri sunucudan yükle.

KararlıKaynak kod

Import

import { Combobox, type ComboboxOption } from "@meridui/react";

Örnekler

Çoklu seçim

multiple her seçimden sonra listeyi açık tutar ve seçimleri çip olarak gösterir. value bir string[] olur. Alan boşken Backspace son çipi kaldırır.

Next.jsVite

İstediğin kadar seç.

değer: ["next","vite"]

Async seçenekler

onInputValueChange içinde veriyi çek, sonuçları options olarak ver, component tekrar filtrelemesin diye filter={false} yap ve istek sürerken loading ver. Seçilen seçeneklerin etiketleri hatırlanır; sonuçlar değişse de çipler ve alan metnini korur.

Boyutlar ve durumlar

API referansı

Bir div sarmalayıcı render'lar; diğer div attribute'ları ona gider. aria-label ve aria-labelledby metin alanına gider. Bir Field içinde alan id'yi, etiketi, açıklamayı, hatayı, required ve disabled'ı alır.

PropTipVarsayılanAçıklama
optionsZorunluComboboxOption[]–{ value, label, description?, disabled? }. Async sonuçlar geldikçe değiştir.
multiplebooleanfalseBirden çok değer seçtirir; çip olarak gösterilir.
valuestring | string[]–Controlled değer: string ("" seçim yok) ya da multiple ile string[].
defaultValuestring | string[]–Uncontrolled kullanımda başlangıç değeri.
onValueChange(value) => void–Yeni değerle çağrılır.
inputValuestring–Alandaki controlled metin.
defaultInputValuestring–Başlangıç metni. Varsayılanı seçili etiket.
onInputValueChange(text: string) => void–Her tuşta çağrılır; async seçenekleri burada çek.
open / defaultOpen / onOpenChangeboolean / boolean / (open) => void–Listenin controlled ya da başlangıç açık state'i.
filter((option, text) => boolean) | falseetiket metni içerirİstemci tarafı filtre. Seçenekler zaten filtreliyse false.
localestring–Büyük/küçük harf duyarsız eşleşme için locale; "tr-TR" ile İ ve i eşleşir.
loadingbooleanfalseloadingMessage'ı gösterir, listeye aria-busy ekler.
placeholderstring–Metin alanının placeholder'ı.
emptyMessageReactNode"No results"Eşleşme yokken gösterilir. Türkçe arayüzde "Sonuç yok".
loadingMessageReactNode"Loading…"Yüklenirken gösterilir. Türkçe arayüzde "Yükleniyor…".
toggleLabelstring"Show options"Ok butonunun erişilebilir adı.
getRemoveLabel(label: string) => stringRemove {label}Çipteki kaldır butonunun erişilebilir adı.
size"sm" | "md" | "lg""md"Kontrol boyutu.
invalidboolean–aria-invalid ve danger kenarlık. Field içinde hatasından türetilir.
disabledboolean–Combobox'ı devre dışı bırakır.
requiredboolean–Alanı zorunlu işaretler.
namestring–Form adı. Seçili her değer için gizli bir input render'lar.
inputIdstring–<label htmlFor> için metin alanının id'si.
placementPlacement"bottom-start"Listenin tercih edilen konumu.
containerElement | nulldocument.bodyListenin portal hedefi.
inputRefRef<HTMLInputElement>–Metin alanının ref'i.
refRef<HTMLDivElement>–Sarmalayıcının ref'i.

Stil verme

SınıfEleman
.mrd-comboboxSarmalayıcı (data-size, data-state, data-multiple, data-invalid, data-disabled)
.mrd-combobox__controlÇipleri, input'u ve oku tutan kenarlıklı alan
.mrd-combobox__input, .mrd-combobox__toggleMetin alanı, ok butonu
.mrd-combobox__chip, .mrd-combobox__chip-removeSeçili değer çipi (multiple)
.mrd-combobox__content, .mrd-combobox__listboxPortal ile render'lanan açılır panel ve listbox'ı
.mrd-combobox__itemSeçenek (data-active, data-disabled, aria-selected)
.mrd-combobox__statusYükleniyor / boş mesajı

Erişilebilirlik

WAI-ARIA listbox açılır panelli Combobox desenine ve liste otomatik tamamlamaya uyar. Focus metin alanında kalır; vurgulanan seçenek aria-activedescendant ile bildirilir. Yükleniyor ve boş mesajları bir role="status" bölgesidir, yani ekran okuyucu tarafından okunur. Çiplerin kaldır butonları Tab sırasında yer almaz; alan boşken Backspace'i ya da fareyi kullan.

TuşNe yapar
ArrowDownListeyi açar ya da sonraki seçeneği vurgular (başa döner).
ArrowUpListeyi son seçenekte açar ya da önceki seçeneği vurgular (sona döner).
AltArrowDownVurguyu değiştirmeden açar.
EnterVurgulanan seçeneği seçer. Tekli: kapanır. Çoklu: seçimi değiştirir, açık kalır.
EscapeListeyi kapatır; tekli modda seçili etiketi geri yükler.
BackspaceÇoklu, alan boşken: son çipi kaldırır.
TabKapatır ve sonraki elemana geçer.

Kullanım ilkeleri

Yap

Liste uzunsa (20+ öğe) ya da sunucudan geliyorsa ve kullanıcı ne aradığını biliyorsa Combobox kullan.

Kaçın

Birkaç seçenek için kullanma; Select ya da Radio daha hızlı taranır.

İlgili sayfalar

  • Select — kısa ve sabit bir listeden tek seçim.
  • Field — bir kontrolün etrafında etiket, yardım metni ve hata.