Параметр allowDeselect в библиотеке Slim Select
управляет возможностью снятия уже выбранного значения в режиме
одиночного выбора. Поведение затрагивает взаимодействие пользователя с
элементом <select> и определяет, может ли текущий
выбранный пункт быть отменён повторным кликом.
В стандартной конфигурации HTML <select> с
одиночным выбором после выбора значения всегда сохраняет активное
состояние до тех пор, пока не будет выбран другой пункт. Slim Select
расширяет это поведение, добавляя управляемую опцию снятия выбора.
При включённом allowDeselect:
null (или пустым
состоянием);При выключенном allowDeselect:
<select>.Ключевое условие: параметр применяется только в режиме одиночного
выбора (single select). В мультивыборе логика снятия
элементов реализуется через отдельный механизм тегов.
Параметр передаётся в объект инициализации Slim Select.
new SlimSelect({
select: '#example-select',
settings: {
allowDeselect: true
}
});
Типовое значение:
true — разрешено снимать выбранное значениеfalse — снятие выбора запрещено (значение фиксируется
до смены)По умолчанию значение зависит от версии библиотеки, но в большинстве
реализаций используется false.
HTML-разметка:
<select id="example-select">
<option value="">Выберите значение</option>
<option value="1">Первый элемент</option>
<option value="2">Второй элемент</option>
<option value="3">Третий элемент</option>
</select>
Инициализация с разрешённым снятием выбора:
new SlimSelect({
select: '#example-select',
settings: {
allowDeselect: true,
placeholderText: 'Выбор элемента'
}
});
При клике по уже выбранному элементу происходит возврат к пустому состоянию.
При использовании allowDeselect значение компонента
может принимать состояние отсутствия выбора:
null'' (пустая строка, в зависимости от исходного
<option>)<option>Это влияет на:
При интеграции с формами важно учитывать, что пустое значение должно быть обработано серверной логикой как допустимый вариант, если снятие выбора разрешено.
allowDeselect тесно связан с отображением
плейсхолдера.
new SlimSelect({
select: '#example-select',
settings: {
allowDeselect: true,
placeholderText: 'Не выбрано'
}
});
Поведение:
placeholderText;Если placeholderText не задан, интерфейс может
отображать пустую строку или значение первого disabled-option, если оно
предусмотрено HTML-разметкой.
Параметр closeOnSelect определяет, закрывается ли
выпадающий список после выбора элемента.
Совместное поведение:
allowDeselect: true +
closeOnSelect: true После выбора список закрывается,
повторный клик по выбранному элементу требует повторного открытия
dropdown для снятия.
allowDeselect: true +
closeOnSelect: false Упрощённое снятие выбора: пользователь
может сразу кликнуть по активному элементу без повторного открытия
списка.
new SlimSelect({
select: '#example-select',
settings: {
allowDeselect: true,
closeOnSelect: false
}
});
Включение allowDeselect изменяет модель
взаимодействия:
В интерфейсах фильтрации это особенно важно, так как позволяет пользователю быстро очищать критерии без дополнительной кнопки сброса.
allowDeselect работает только при
single select. В multiple режиме:
Без корректного пустого состояния UI может:
Рекомендуется явно задавать placeholderText.
Если первый <option> используется как
disabled-заглушка:
<option value="" disabled selected>Выберите...</option>
то при allowDeselect снятие выбора может возвращать
именно к этому элементу, а не к null в чистом виде.
В фильтрах данных параметр позволяет:
Если поле не является обязательным:
allowDeselect делает UX более естественным;В интерфейсах управления сущностями:
При использовании API Slim Select значение также может быть сброшено
программно, и allowDeselect не ограничивает этот
сценарий.
const select = new SlimSelect({
select: '#example-select',
settings: {
allowDeselect: true
}
});
// программный сброс
select.set(null);
Поведение идентично пользовательскому снятию выбора: состояние компонента возвращается к пустому.
При динамическом обновлении списка:
select.setData([
{ text: 'A', value: 'a' },
{ text: 'B', value: 'b' }
]);
allowDeselect продолжает работать без изменений,
однако:
В интерфейсных системах с высокой плотностью фильтров
allowDeselect влияет на:
При этом избыточное включение может привести к: