Опции поведения

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

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

Ключевое поведение:

  • расширение списка данных на стороне клиента;
  • динамическое формирование новых опций;
  • сохранение созданных элементов в текущем состоянии компонента.

В связке с persist определяется, сохраняется ли созданное значение при повторной инициализации данных.


Фильтрация и создание (createFilter)

createFilter задаёт правило, по которому вводимый текст считается допустимым для создания нового элемента. Это не просто фильтрация совпадений, а механизм валидации пользовательского ввода.

Фильтр может быть:

  • строкой (например, регулярное выражение);
  • функцией (input) => boolean.

Типичная логика:

  • исключение пустых строк;
  • запрет спецсимволов;
  • ограничение длины;
  • проверка на дубликаты.

Поведение определяется до момента создания, поэтому именно createFilter формирует границу между допустимыми и недопустимыми пользовательскими значениями.


Автосоздание при потере фокуса (createOnBlur)

Опция createOnBlur определяет, будет ли новое значение автоматически создано при уходе фокуса из поля ввода.

Основные сценарии:

  • пользователь ввёл текст и кликнул вне компонента;
  • произошло переключение через клавиатуру;
  • dropdown закрывается без явного подтверждения.

Если create включён, а createOnBlur активирован, система пытается интерпретировать текущий ввод как новый элемент и добавить его в список.

Поведение особенно важно в формах, где требуется минимизация количества действий пользователя при вводе произвольных значений.


Фокус как триггер открытия (openOnFocus)

openOnFocus управляет автоматическим открытием выпадающего списка при получении фокуса.

При true список раскрывается сразу после:

  • клика по полю;
  • программного вызова .focus();
  • перехода по Tab.

При false открытие происходит только через ввод или явное взаимодействие.

Это влияет на UX в двух направлениях:

  • агрессивное поведение интерфейса (быстрый доступ к данным);
  • более спокойное поведение (без автоматических всплытий).

Закрытие после выбора (closeAfterSelect)

Опция closeAfterSelect определяет, закрывается ли dropdown после выбора элемента.

При true:

  • список закрывается после каждого выбора;
  • фокус остаётся в поле;
  • пользователь вынужден повторно открывать список для следующего выбора.

При false:

  • список остаётся открытым;
  • удобно для множественного выбора;
  • ускоряет массовое добавление значений.

В мультиселектах обычно используется false, в одиночных — true.


Ограничение количества выбранных значений (maxItems)

maxItems задаёт верхнюю границу количества выбранных элементов.

Поведение:

  • 1 — режим одиночного выбора;
  • >1 — мультиселект с ограничением;
  • null — отсутствие ограничений.

При достижении лимита:

  • новые элементы не добавляются;
  • ввод может блокироваться или игнорироваться;
  • пользовательский интерфейс перестаёт отображать доступные для выбора элементы (в зависимости от конфигурации).

Скрытие выбранных элементов (hideSelected)

Опция hideSelected определяет, будут ли уже выбранные элементы отображаться в выпадающем списке.

При true:

  • выбранные элементы исключаются из списка;
  • предотвращается повторное добавление;
  • упрощается визуальная навигация.

При false:

  • все элементы остаются видимыми;
  • система допускает повторное взаимодействие (в зависимости от логики maxItems и duplicates поведения).

Выбор через клавишу Tab (selectOnTab)

selectOnTab управляет поведением клавиши Tab при фокусе внутри компонента.

При включении:

  • Tab подтверждает текущий выделенный элемент;
  • элемент добавляется в выбор;
  • фокус остаётся в компоненте или переходит дальше в зависимости от контекста формы.

При выключении:

  • Tab работает стандартно как навигация по полям формы;
  • выбор возможен только через Enter или клик.

Поведение при потере фокуса (selectOnBlur)

selectOnBlur определяет, будет ли текущий ввод автоматически выбран при уходе из поля.

При true:

  • незавершённый ввод может стать выбранным значением;
  • особенно важно в сочетании с create;
  • снижает вероятность потери введённых данных.

При false:

  • ввод сбрасывается, если не подтверждён;
  • поведение становится строгим и предсказуемым.

Ограничение количества отображаемых вариантов (maxOptions)

maxOptions управляет количеством элементов, отображаемых в выпадающем списке после фильтрации.

Механика:

  • ограничивает DOM-рендеринг;
  • ускоряет работу при больших наборах данных;
  • влияет на UX поиска.

Типичные сценарии:

  • большие справочники (страны, города, теги);
  • динамические источники данных;
  • серверная фильтрация.

Исключение выбранных значений из модели (allowEmptyOption)

allowEmptyOption регулирует обработку пустых значений в списке.

При true:

  • пустые значения допускаются;
  • могут использоваться как “сброс” или “не выбрано”.

При false:

  • пустые элементы игнорируются;
  • предотвращается появление некорректных состояний модели.

Сохранение пользовательских значений (persist)

persist определяет, сохраняются ли пользовательски созданные элементы после пересоздания или обновления списка данных.

При true:

  • созданные значения остаются в наборе;
  • повторная загрузка не удаляет их;
  • состояние становится более «живым» и изменяемым.

При false:

  • данные строго соответствуют источнику;
  • пользовательские элементы исчезают при обновлении.

Блокировка взаимодействия (lock)

lock переводит компонент в режим полной недоступности для изменений.

Поведение:

  • блокируется ввод;
  • отключается открытие списка;
  • невозможен выбор или удаление элементов.

Используется для:

  • временной фиксации состояния формы;
  • ожидания серверной операции;
  • предотвращения изменений при валидации.

Управление сортировкой поведения выбора (sortField)

Хотя sortField формально относится к отображению, он напрямую влияет на поведение выбора, определяя порядок элементов в списке и выбранных значениях.

Поддерживаемые режимы:

  • строка — сортировка по полю;
  • объект — сложная сортировка по нескольким критериям;
  • функция — кастомная логика сравнения.

Поведение сортировки влияет на:

  • предсказуемость интерфейса;
  • скорость поиска нужного элемента;
  • стабильность UX при динамических данных.