Метод enable в библиотеке Slim Select используется для
включения ранее отключённого экземпляра выпадающего списка. Он
восстанавливает интерактивность компонента, позволяя пользователю снова
взаимодействовать с элементами выбора, открывать список, искать значения
и изменять текущую выборку.
В контексте Slim Select состояние «отключено» означает блокировку
всех пользовательских действий: клик по полю игнорируется, поиск
недоступен, выбор и снятие выбора невозможны. Метод enable
возвращает компонент в активное состояние без необходимости пересоздания
экземпляра.
Внутренне Slim Select управляет состоянием через флаг активности. При
вызове enable выполняется:
Метод не изменяет данные (data) и не сбрасывает
выбранные значения. Он влияет исключительно на интерактивность.
select.enable()
Метод вызывается на экземпляре Slim Select, созданном ранее.
Пример инициализации:
const select = new SlimSelect({
select: '#mySelect'
})
Включение компонента после отключения:
select.enable()
После вызова enable компонент переходит в активное
состояние:
Если компонент уже активен, повторный вызов enable не
приводит к ошибкам и не вызывает дополнительных изменений состояния.
Методы enable и disable образуют парную
систему управления состоянием компонента.
Типичный сценарий:
select.disable()
// компонент становится неактивным
select.enable()
// компонент снова активен
После вызова disable Slim Select сохраняет внутреннее
состояние выбора, а enable возвращает только возможность
взаимодействия.
Метод enable не влияет на:
<select>Например:
const select = new SlimSelect({
select: '#mySelect'
})
select.setSelected('value1')
select.disable()
select.enable()
После включения:
value1 остаётся выбраннымВ режиме множественного выбора (multiple: true) метод
enable восстанавливает:
Пример:
const select = new SlimSelect({
select: '#multiSelect',
settings: { allowDeselect: true }
})
select.disable()
select.enable()
Список выбранных элементов остаётся неизменным.
При использовании методов setData или
addOption поведение enable не зависит от
структуры данных.
Пример сценария:
select.setData([
{ text: 'Option 1', value: '1' },
{ text: 'Option 2', value: '2' }
])
select.disable()
select.addOption({ text: 'Option 3', value: '3' })
select.enable()
После включения:
Slim Select использует внутренние классы для обозначения состояния
disabled. При вызове enable:
Обычно это затрагивает:
После включения восстанавливаются стандартные клавиатурные действия:
Arrow Down — открытие списка или навигация внизArrow Up — навигация вверхEnter — выбор элементаEscape — закрытие спискаBackspace — удаление последнего выбранного элемента (в
multi режиме)До вызова enable эти события блокируются.
Часто enable используется после завершения асинхронных
операций, например загрузки данных:
const select = new SlimSelect({
select: '#asyncSelect'
})
select.disable()
fetch('/api/options')
.then(res => res.json())
.then(data => {
select.setData(data)
select.enable()
})
В этом сценарии компонент предотвращает взаимодействие до полной готовности данных.
Метод является идемпотентным:
select.enable()
select.enable()
select.enable()
Повторные вызовы:
Slim Select проверяет текущее состояние перед применением изменений.
Если селект находится внутри формы:
disable может блокировать отправку значения (в
зависимости от реализации формы)enable восстанавливает стандартное поведение
input/selectПосле вызова enable значение снова участвует в
сериализации формы.
const select = null
select.enable()
Вызовет ошибку, так как метод доступен только экземпляру Slim Select.
Если экземпляр был уничтожен через destroy, метод
enable становится недоступным, так как DOM-структура
возвращена в исходное состояние.
Если оригинальный <select> скрыт через CSS
(display: none), метод всё равно корректно восстанавливает
интерактивность Slim Select UI, так как работает с обёрткой
компонента.
В интерфейсах с зависимыми селектами (cascading selects)
enable часто применяется для управления цепочкой:
countrySelect.onChange(() => {
citySelect.disable()
loadCities().then(cities => {
citySelect.setData(cities)
citySelect.enable()
})
})
Такой подход предотвращает выбор города до загрузки актуального списка.
Slim Select синхронизирует своё состояние с нативным
<select disabled>:
disabled = true, компонент блокируетсяenable может переопределить состояние только на уровне
Slim Select UIdisabled
атрибут может оставатьсяЭто важно учитывать при смешанном управлении DOM и Slim Select API.
Метод enable относится к лёгким операциям:
Изменения ограничены переключением состояния и восстановлением событий.