Конфигурация библиотеки представляет собой единый объект параметров, передаваемый в конструктор при инициализации. Все настройки делятся на группы: управление данными, поведение интерфейса, фильтрация, шаблонизация и события. Архитектура параметров построена так, чтобы большинство сценариев можно было покрыть без расширения исходного кода.
Базовая форма инициализации:
const instance = new Choices('#select', {
searchEnabled: true,
removeItemButton: true,
shouldSort: false
});
Каждое свойство конфигурации влияет на конкретный слой логики: DOM-рендеринг, обработку пользовательского ввода или работу с коллекцией выбранных значений.
Управляет наличием строки поиска внутри компонента.
true — активирует фильтрацию элементовfalse — отключает поиск полностьюsearchEnabled: true
При отключении поиска список работает как статический контрол выбора.
Определяет необходимость сортировки элементов внутри выпадающего списка.
shouldSort: false
Особенности поведения:
Регулирует включение поиска по доступным опциям.
searchChoices: true
При значении false поиск может быть ограничен только уже
выбранными элементами.
Отключает генерацию событий при инициализации.
silent: true
Используется при массовом создании экземпляров, когда требуется
избежать каскада событий addItem и change.
Позволяет задать начальные выбранные значения.
items: ['JavaScript', 'TypeScript']
Поддерживает:
value и labelОсновной источник данных для списка.
choices: [
{ value: 'js', label: 'JavaScript' },
{ value: 'ts', label: 'TypeScript' }
]
Поддерживаются дополнительные поля:
selecteddisabledcustomPropertiesОпределяет возможность добавления одинаковых значений.
duplicateItemsAllowed: false
При false предотвращается повторное добавление уже
выбранных элементов.
Настройки алгоритма поиска (используется Fuse-подобная логика).
fuseOptions: {
threshold: 0.3,
distance: 100
}
Влияет на:
Минимальное количество символов для активации поиска.
searchFloor: 2
При значении 0 поиск выполняется сразу при фокусе.
Ограничивает количество отображаемых результатов.
searchResultLimit: 10
Используется для оптимизации больших списков.
Определяет позиционирование выпадающего списка относительно поля.
position: 'auto'
Возможные значения:
autotopbottomСбрасывает прокрутку списка при каждом новом поисковом запросе.
resetScrollPosition: true
Добавляет кнопку удаления выбранного элемента.
removeItemButton: true
Особенности:
Повторная настройка логики дублей, часто используется вместе с серверной валидацией.
Позволяет редактировать уже выбранные элементы.
editItems: true
При включении:
Ограничение количества выбранных элементов.
maxItemCount: 5
После достижения лимита:
Текст, отображаемый при достижении лимита.
maxItemText: (maxItemCount) =>
`Максимум ${maxItemCount} элементов`
Текст-заполнитель в поле ввода.
placeholder: true
Дополнительные варианты:
placeholderValuesearchPlaceholderValueСтатический текст плейсхолдера.
placeholderValue: 'Выбор значения'
Плейсхолдер внутри строки поиска.
searchPlaceholderValue: 'Поиск...'
Разрешает HTML в отображаемых значениях.
allowHTML: false
При true возможно внедрение HTML-разметки в label.
Позволяет добавлять новые элементы вручную.
addItems: true
Если отключено:
Функция фильтрации добавляемых значений.
addItemFilter: (value) => value.length > 1
Сообщение при попытке добавить дубликат.
uniqueItemText: 'Значение уже добавлено'
Используется в связке с duplicateItemsAllowed.
Вызывается после полной инициализации компонента.
callbackOnInit: () => {
console.log('initialized');
}
Позволяет модифицировать шаблоны при создании.
callbackOnCreateTemplates: (template) => template
Используется для:
Позволяет переопределять CSS-классы.
classNames: {
containerOuter: 'choices',
containerInner: 'choices__inner',
item: 'choices__item'
}
Важные особенности:
Текст, отображаемый при наведении на элемент списка.
itemSelectText: 'Выбрать'
Управляет отображением выбранных элементов в списке.
renderSelectedChoices: 'auto'
Варианты:
truefalseautoТекст состояния загрузки.
loadingText: 'Загрузка...'
Сообщение при отсутствии результатов поиска.
noResultsText: 'Ничего не найдено'
Ограничение числа результатов поиска.
searchResultLimit: 15
Влияет на производительность при больших наборах данных.
Кастомная функция сортировки.
sorter: (a, b) => a.label.localeCompare(b.label)
Позволяет:
shouldSortФункция формирования текста добавления нового элемента.
addItemText: (value) => `Добавить "${value}"`
Кастомная логика сравнения значений.
valueComparer: (a, b) => a === b
Используется при:
Конфигурация формируется как плоский объект с вложенными настройками:
{
searchEnabled: true,
shouldSort: false,
choices: [],
items: [],
maxItemCount: 10,
removeItemButton: true,
placeholderValue: 'Select...',
noResultsText: 'No results'
}
Каждый параметр влияет на конкретный аспект работы компонента: от визуального представления до логики фильтрации и управления состоянием списка.