CATATAN: Masalah ini berpotensi mengatasi beberapa masalah kinerja yang diidentifikasi di #843 (dan lainnya).
Apakah permintaan fitur Anda terkait dengan masalah?
Dropdown/Multiselect saat ini yang kami kirimkan dengan IDS dibuat sebagai lapisan interaksi di atas elemen HTML <select>
standar, menangani pemilihan opsi di kedua pengaturan tunggal/multiple.
Kasus penggunaan untuk komponen ini telah meningkat dari waktu ke waktu untuk menyertakan pemfilteran opsi yang tersedia, yang menyebabkan tim menggunakan Dropdown/Multiselect untuk kumpulan data yang sangat besar (melebihi 2000 item sekaligus, dalam beberapa kasus). Meskipun tim kami menyatakan bahwa kami tidak menyarankan penggunaan komponen ini untuk kumpulan data sebesar ini, kami terus mendapatkan masalah yang meminta kami untuk mengatasi kinerja pada tingkat ini. Beberapa masalah sebelumnya yang telah kami perbaiki meliputi:
Banyak dari masalah tersebut meninggalkan peringatan "ini masih tidak bagus tapi lebih baik". Alasan untuk ini adalah karena desain Dropdown/Multiselect pada intinya tidak cocok untuk kumpulan data sebesar ini. Jika kita ingin memperbaiki masalah kinerja, kita perlu mengatasi dasar-dasar desainnya.
Jelaskan solusi yang Anda inginkan
Jalur solusi yang mungkin untuk memperbaiki kinerja Dropdown/Multiselect:
<select>
sebagai sumber data utama. Beberapa peningkatan terbaru dari #267 mulai memetakan bagaimana panggilan AJAX dapat menghasilkan objek data untuk Dropdown yang dapat kami simpan di klien. Saya pikir kita harus beralih ke penggunaan objek dengan beberapa status sederhana (dinonaktifkan/dipilih/dll) sebagai pendorong utama perilaku komponen, alih-alih mengambil informasi ini dari elemen DOM. Render tag <select>
dan <option>
s masih diperlukan untuk hal-hal seperti pengiriman formulir, tetapi kita harus mendefinisikan objek data sebagai "sumber kebenaran", dan menggambar tag pilih berdasarkan objeknya (bukan sebaliknya).<select>
dalam arti apa pun. Ini mungkin kasus penggunaan yang masuk akal bagi pengembang yang menggunakan Dropdown/Multiselect dengan banyak item ini untuk sekadar mencegat permintaan pengiriman formulir, dan mengirim status objek sumber data alih-alih mengandalkan proses pengiriman formulir normal. Saat ini, jenis penggunaan ini tidak memungkinkan.Jelaskan alternatif yang telah Anda pertimbangkan
Beberapa ide lain yang telah kami kemukakan sebelumnya:
<select>
dan menatanya, alih-alih menghasilkan markup semu untuk interaksi. Ini mungkin dapat menangani daftar yang lebih besar dengan lebih baik karena tidak akan menduplikasinya. Kami masih harus menangani elemen 2000ish sekaligus dalam kasus ini.Kami juga dapat mengimplementasikan fitur pengguliran virtual umum dan menerapkannya ke beberapa komponen. https://github.com/infor-design/enterprise/issues/460
@tmcconechy Saya melihat itu terjadi lebih mudah setelah kita menghapus ketergantungan pada tag <select>
.
Yang mereka pedulikan hanyalah elemen yang dipilih. Jadi saya pikir dom hanya akan berisi pilih dengan hanya elemen yang dipilih di dalamnya dan itu bisa memenuhi kedua kasus.
Menutup ini demi https://github.com/infor-design/enterprise/issues/1463