Основой интеграции служит стандартный элемент
<select>, который библиотека преобразует в кастомный
UI без изменения семантики формы. Slim Select не заменяет
HTML-структуру, а оборачивает её, сохраняя совместимость с нативной
отправкой данных.
Минимальная разметка:
<select id="basic-select">
<option value="1">JavaScript</option>
<option value="2">TypeScript</option>
<option value="3">Python</option>
</select>
Ключевой момент заключается в том, что библиотека работает только с уже существующим DOM-элементом. Любая инициализация происходит поверх него, без необходимости переписывать структуру.
Подключённая библиотека активируется через создание экземпляра класса
SlimSelect. Базовая инициализация требует указания
селектора элемента:
new SlimSelect({
select: '#basic-select'
});
После выполнения этого кода стандартный <select>
заменяется кастомным компонентом с поддержкой поиска, стилизации и
управления списком.
Особенность поведения заключается в том, что исходный элемент остаётся в DOM, но скрывается. Все изменения синхронизируются автоматически.
Даже в простейшем варианте можно передавать объект настроек. Это позволяет управлять базовым поведением без усложнения структуры:
new SlimSelect({
select: '#basic-select',
settings: {
showSearch: true
}
});
Параметр showSearch включает поле поиска внутри
выпадающего списка, что особенно полезно при большом количестве
опций.
HTML-атрибут placeholder не всегда даёт нужный эффект,
поэтому Slim Select поддерживает собственную настройку через
settings.
Разметка:
<select id="placeholder-select">
<option data-placeholder="true"></option>
<option value="js">JavaScript</option>
<option value="ts">TypeScript</option>
</select>
Инициализация:
new SlimSelect({
select: '#placeholder-select',
settings: {
placeholderText: 'Выбор языка'
}
});
Особенность реализации заключается в том, что placeholder — это не отдельное значение, а логическое состояние пустого выбора.
Slim Select поддерживает стандартный атрибут multiple,
который расширяет поведение списка.
HTML:
<select id="multi-select" multiple>
<option value="1">HTML</option>
<option value="2">CSS</option>
<option value="3">JavaScript</option>
</select>
Jav * aScript:
new SlimSelect({
select: '#multi-select'
});
При включённом multiple интерфейс автоматически
изменяется: выбранные значения отображаются в виде отдельных элементов,
а не единственного поля.
Одной из ключевых особенностей Slim Select является возможность управлять выбранными значениями через API.
const select = new SlimSelect({
select: '#basic-select'
});
select.set('2');
Для множественного выбора используется массив:
select.set(['1', '3']);
Механизм синхронизации обновляет как UI-компонент, так и исходный
<select>.
Получение состояния выполняется через свойство
selected:
const select = new SlimSelect({
select: '#basic-select'
});
console.log(select.selected);
В случае одиночного выбора возвращается строка, при множественном — массив значений.
Slim Select позволяет изменять список опций без пересоздания экземпляра.
const select = new SlimSelect({
select: '#basic-select'
});
select.addOption({
text: 'Go',
value: 'go'
});
Добавленные элементы сразу становятся доступными в UI и могут быть выбраны пользователем.
Удаление выполняется через передачу значения:
select.removeOption('2');
При удалении происходит синхронное обновление DOM и внутреннего состояния компонента.
Сброс состояния реализуется через пустое значение:
select.set('');
Для множественного выбора:
select.set([]);
Это приводит к полному очищению выбранных элементов без удаления самих опций.
Контроль активности компонента реализуется через метод
disable и enable:
select.disable();
select.enable();
В отключённом состоянии пользователь не может взаимодействовать с элементом, но его текущее значение сохраняется.
Если <select> изменяется вручную (например, через
innerHTML), требуется синхронизация:
select.setData();
Метод пересобирает внутреннюю модель данных на основе текущего состояния DOM.
При необходимости полного удаления компонента используется метод
destroy:
select.destroy();
После вызова происходит восстановление исходного
<select> и удаление всех обёрток Slim Select. Это
важно при динамической работе интерфейса и повторной инициализации.
Базовый пример, объединяющий несколько операций:
const select = new SlimSelect({
select: '#basic-select',
settings: {
showSearch: true,
placeholderText: 'Выбор технологии'
}
});
select.set('3');
select.addOption({
text: 'Rust',
value: 'rust'
});
В этом сценарии демонстрируется синхронная работа конфигурации, программного управления значениями и динамического расширения списка без нарушения структуры компонента.