Минимальная работа со Slim Select начинается с подключения самой
библиотеки и наличия стандартного HTML <select>
элемента. Библиотека не требует сложной конфигурации и может быть
подключена как через CDN, так и через npm-сборку.
При использовании CDN подключаются два файла: JavaScript и базовые стили.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@latest/dist/slimselect.css">
<script src="https://cdn.jsdelivr.net/npm/slim-select@latest/dist/slimselect.min.js"></script>
После подключения глобальный конструктор SlimSelect
становится доступным в window, и можно переходить к
инициализации.
Минимальная инициализация требует только стандартного элемента
select. Никаких дополнительных атрибутов библиотека не
требует, но корректная структура упрощает дальнейшую работу.
<select id="mySelect">
<option value="1">Первый вариант</option>
<option value="2">Второй вариант</option>
<option value="3">Третий вариант</option>
</select>
Slim Select работает поверх существующего DOM-элемента, не заменяя его логически, а создавая визуальный слой и синхронизируя состояние.
Минимальный сценарий использования заключается в создании экземпляра
SlimSelect с передачей CSS-селектора.
new SlimSelect({
select: '#mySelect'
});
Эта конструкция запускает полную переработку стандартного
<select>:
Без дополнительных параметров Slim Select использует стандартные настройки:
<select>;multiple в
HTML;Пример множественного выбора без дополнительных настроек:
<select id="multiSelect" multiple>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
new SlimSelect({
select: '#multiSelect'
});
В этом случае библиотека автоматически переключается в режим мультивыбора.
Slim Select допускает полностью «пустую» конфигурацию, где передаётся только ссылка на элемент. Это минимальный допустимый сценарий использования API.
new SlimSelect({
select: '#mySelect'
});
Такой подход полезен в случаях:
Помимо селектора, можно передавать сам DOM-элемент. Это важно при динамическом создании компонентов или работе в рамках фреймворков.
const el = document.getElementById('mySelect');
new SlimSelect({
select: el
});
Такой вариант исключает необходимость строковых селекторов и снижает вероятность ошибок при изменении структуры DOM.
Slim Select не предназначен для многократной инициализации на одном и том же элементе без очистки. При повторном создании экземпляра на одном селекте возможны дубли DOM-обёрток и конфликт состояния.
Корректная стратегия — хранить экземпляр в переменной:
const selectInstance = new SlimSelect({
select: '#mySelect'
});
Даже в минимальном сценарии это обеспечивает контроль над жизненным циклом компонента.
После инициализации стандартный <select>
скрывается через CSS, а на его месте создаётся структура:
Минимальная конфигурация не требует ручного вмешательства в эту структуру. Все элементы генерируются автоматически на основе DOM-данных.
Slim Select работает как двусторонний слой:
<select>;Даже при минимальной инициализации сохраняется реактивная модель:
const instance = new SlimSelect({
select: '#mySelect'
});
document.querySelector('#mySelect').value = '2';
Для корректного обновления UI в реальных сценариях обычно требуется дополнительный вызов обновления состояния, но базовая синхронизация уже заложена в архитектуре.
Для работы базовой инициализации достаточно:
<select>;Никаких сторонних зависимостей, сборщиков или polyfill не требуется.
Если <select> не содержит
<option>, библиотека всё равно создаёт UI-оболочку,
но список остаётся пустым. Это важно учитывать при динамической загрузке
данных:
<select id="emptySelect"></select>
new SlimSelect({
select: '#emptySelect'
});
В таком состоянии интерфейс будет отображать пустой dropdown без элементов выбора.
При добавлении элемента в DOM после загрузки страницы инициализация выполняется без ограничений, если элемент уже существует на момент вызова конструктора.
const select = document.createElement('select');
select.id = 'dynamicSelect';
document.body.appendChild(select);
new SlimSelect({
select: '#dynamicSelect'
});
Slim Select не требует предварительной регистрации элемента в конфигурации страницы, что делает минимальную инициализацию универсальной для динамических интерфейсов.
При использовании только базовой инициализации отсутствуют дополнительные возможности конфигурации:
Тем не менее даже минимальный режим уже заменяет нативный
<select> полноценным UI-компонентом, сохраняя при
этом совместимость с формами HTML.