Если опции не загружены, открывает панель с задержкой 100 мс. За этот короткий миг чаще всего список успеет загрузиться, а для пользователя это не ощущается, как тормоза интерфейса. Если данные не успели загрузиться, показываем меню с индикатором загрузки минимум на 300 мс, чтобы не было неприятного мелькания.

Option Loading Time

После индикатора загрузки показываем сообщение об ошибке с возможностью повторить попытку.

Селект предполагает наличие вариантов выбора. Если в нем нет опций, то это надо рассматривать как исключительную ситуацию. Когда приложение не предлагает варианты выбора, то селект следует заменить на поле ввода или на диалог создания новой сущности.

Account for privilege escalation
There are no suitable accounts of this type (Terminal) in Mega App
New Account

На крайний случай можно разместить сообщение в выпадающем меню. Скрывайте поле поиска, если точно известно, что опций в меню совсем нет.

kbq-select-trigger - позволяет переопределить блок, который отображает выбранное значение. При этом не затрагивая placeholder, cleaner и icon.

kbq-select-matcher - позволяет заменить все содержимое kbq-select, включая placeholder, cleaner и icon

kbqSelectTagContent - позволяет переопределить разметку каждого тега в матчере при множественном выборе. В шаблон передаются сама опция и экземпляр селекта, поэтому теги можно оформлять по-разному в зависимости от значения.

Стратегию прокрутки можно переопределить через токен KBQ_SELECT_SCROLL_STRATEGY. KbqAutoHideScrollStrategy (из @koobiq/components/core) останавливает изменение позиции, как только триггер выходит за пределы видимости, и генерирует событие в hide — подпишитесь на него, чтобы закрыть панель самостоятельно.

Scroll down
Scroll up
Предложения по улучшению
Если вы нашли ошибку или хотите доработать статью, создайте запрос на GitHub.