FormSelect

Dropdown custom untuk pilihan tunggal, multiple, pencarian, tag, dan aksi tambah.

Dasar

Tombol dan daftar pilihan digambar oleh W4C, termasuk di ponsel. Pilihan terpilih diberi latar primary dan teks tebal; pilihan yang sedang ditunjuk keyboard diberi garis tepi. Ketik huruf untuk melompat ke pilihan yang sesuai, atau gunakan panah dan Enter.

Menentukan armada yang dikirim.

Nilai: kosong

Pencarian

Aktifkan searchable untuk menyaring label pilihan. Grup kosong disembunyikan, pilihan sebelumnya tetap tersimpan, dan hasil kosong diberi pesan. ArrowDown/ArrowUp menavigasi hasil; Enter memilih, Escape menutup.

Cari nama lokasi, lalu tekan Enter untuk memilih.

Multiple dan tag terpilih

Gunakan multiple dengan v-model array. Pilihan yang dipilih menjadi tag di dalam kolom, masing-masing dengan tombol hapus, dan pilihan dapat ditambah atau dilepas tanpa menutup popup. name menghasilkan satu entri FormData per nilai: baca dengan getAll(name). required berarti minimal satu pilihan.

Kertas

Pilih beberapa material. Klik pilihan lagi atau hapus tag untuk membatalkan.

Tampilan pilihan

Tag tumbuh ke bawah saat pilihan bertambah, jadi tinggi kolom ikut berubah. Batasi dengan max-tags agar sisanya menjadi "+N lagi", atau pakai display="count" supaya kolom hanya menampilkan jumlahnya dan tingginya tetap. Pembaca layar tetap menyebutkan seluruh pilihan pada ketiga tampilan.

KertasPlastik

Bawaan untuk multiple.

KertasPlastik

Sisanya menjadi +N lagi.

Tinggi kolom tidak berubah.

Tag bebas

taggable mengaktifkan multiple dan pencarian sekaligus. Ketik nilai baru lalu pilih Tambahkan atau tekan Enter saat opsi itu aktif. Tag baru berupa string dan tersimpan dalam v-model; data persisten tetap menjadi tanggung jawab aplikasi.

prioritas

Pilih tag yang tersedia atau ketik tag baru. Enter menambahkan tag; Backspace pada pencarian kosong menghapus tag terakhir.

Tag: prioritas

CTA tambah di bawah daftar

create-label menampilkan tombol yang tetap terlihat saat daftar digulir atau hasil kosong. Event create membawa teks pencarian. Contoh ini membuka form lokal; aplikasi juga bisa membuka modal atau melakukan penyimpanan melalui API.

CTA tambah tetap tersedia, termasuk saat pencarian tidak menemukan hasil.

Kelompok dan nilai non-teks

Bentuk { label, items } menghasilkan kelompok berlabel. Nilai angka tetap tersimpan sebagai angka, bukan teks.

Dikelompokkan per wilayah.

Nilainya tetap berupa angka.

Error, disabled, dan ukuran

Pada select wajib, placeholder dikunci setelah orang memilih, sehingga tidak bisa kembali ke keadaan kosong. Pada select opsional, placeholder tetap bisa dipilih untuk mengosongkan nilai.

Frekuensi wajib dipilih.

Popup mengikuti lebar kontrol, bisa digulir, dan terbuka ke atas jika ruang di bawah tidak cukup. Lapisan popover menjaga daftar tetap terlihat di dalam card dengan overflow tersembunyi. Contoh ini menyediakan 40 lokasi.

40 lokasi; lokasi 26 tidak tersedia.

Ribuan pilihan tanpa DOM berat

Di atas 80 pilihan, hanya baris yang terlihat yang dibuat di DOM; dua pengisi menggantikan sisanya sehingga scrollbar tetap mengukur seluruh daftar. Contoh ini memuat 1000 lokasi, dan yang hidup di DOM tetap sekitar dua puluh baris. Baris harus seragam tingginya, jadi virtual scroll berhenti sendiri bila daftar memakai kelompok atau deskripsi — untuk daftar seperti itu, saring dengan pencarian.

1000 pilihan; hanya baris yang terlihat yang dibuat di DOM.

Nilai: kosong

Memuat per halaman dari server

Bila datanya diambil per halaman, biarkan aplikasi yang mengambil dan komponen yang memberi tahu kapan perlu. Saat gulir mendekati dasar daftar, load-more dipancarkan sekali; permintaan berikutnya baru dibuka setelah aplikasi menjawab, baik dengan data baru maupun dengan loading yang kembali false. Isi has-more selama masih ada halaman, dan matikan filter karena pencarian sudah dikerjakan server.

Diambil 20 baris per halaman saat daftar digulir ke bawah.

Termuat 0 dari 0 pelanggan

Pengiriman form dan reset

Atribut name ikut dalam FormData. required mencegah form kosong dikirim dan memfokuskan kontrol; reset mengembalikan nilai awal saat komponen dipasang. Untuk pesan validasi spesifik, isi error pada FormField dari aplikasi.

Wajib dipilih sebelum menyimpan.

API

Props

PropTipeDefaultKeterangan
searchable / searchPlaceholderboolean / stringfalse / Cari pilihan…Kolom pencarian lokal berdasarkan label, tanpa membedakan huruf besar/kecil.
multiplebooleanfalsePilih beberapa nilai; pilihan menjadi tag yang bisa dihapus di dalam kolom. Popup tetap terbuka saat memilih.
virtualbooleantrueMerender hanya baris yang terlihat setelah daftar melewati 80 pilihan. Butuh baris seragam, jadi tidak aktif bila ada kelompok atau deskripsi.
filterbooleantruePenyaringan lokal berdasarkan label. Matikan bila pencarian dijalankan server melalui @search.
hasMore / loadingbooleanfalse / falseMasih ada halaman berikutnya, dan satu halaman sedang diambil. loading menampilkan baris status dan menahan permintaan berikutnya.
loadMoreOffset / loadingTextnumber / string96 / Memuat…Jarak dalam piksel dari dasar daftar yang dianggap meminta halaman berikutnya, dan teks baris status.
display'tags' | 'count''tags'Tampilan beberapa pilihan: tag di dalam kolom, atau hanya jumlahnya supaya tinggi kolom tetap.
maxTagsnumber—Jumlah tag yang ditampilkan; sisanya diringkas menjadi "+N lagi".
taggable / tagLabelboolean / stringfalse / TambahkanMengaktifkan multiple dan pencarian, serta membuat tag teks baru. Tag dirapikan dengan trim dan duplikat dicegah tanpa membedakan kapital.
createLabelstring—Teks CTA di bawah dropdown. Memicu create(query); aplikasi menangani formulir atau penyimpanan data baru.
v-modelstring | number | boolean | null | (string | number | boolean | null)[]—Mode tunggal memakai nilai scalar/null. multiple dan taggable memakai array; kosong berarti [].
items(string | number | { value, label?, disabled? } | { label, items })[]—Daftar pilihan. Bentuk { label, items } menghasilkan kelompok dalam listbox custom.
placeholderstringPilih salah satuTeks saat belum ada pilihan. Pada select wajib, teks ini tidak bisa dipilih kembali.
emptyTextstringTidak ada pilihanPesan ketika items kosong.
iconstring—Ikon Iconify di kiri nilai.
size / id / disabled / required / invalid——Sama seperti FormInput, termasuk pewarisan dari FormField.

Slots

SlotTipeDefaultKeterangan
leading——Konten di kiri nilai, menggantikan icon.

Atribut ARIA dan event fokus diteruskan ke tombol combobox; name/form dipakai kontrol pengiriman form yang tidak terlihat. class/style diterapkan pada pembungkus. Ref menyediakan focus() dan blur(). Event update:modelValue membawa nilai asli; input/change berupa DOM Event pada tombol (baca nilai dari v-model). Slot leading hanya untuk konten dekoratif, bukan tombol bersarang. Event search(query) memberi tahu perubahan pencarian lokal; create(query) dipicu CTA tambah. Pencarian server dan load more belum termasuk API ini.