Switch
<sf-switch> — переключатель настройки, которая начинает действовать сразу
после нажатия. Он собирает разметку
переключателя из атрибутов. Если значение
уходит с формой только после подтверждения, берите
Checkbox.
Пример
Применение
Подпись и пояснение
label называет настройку, description поясняет, что она меняет. Подпись
называет состояние или возможность — «Уведомления», «Компактный режим», — а не
команду «Включить» или «Выключить»: положение переключателя уже говорит,
включена ли настройка. Вместо строк можно передать разметку в слоты label и
description. help выводит рядом с подписью значок с указанным именем;
экранный диктор его не читает.
Размер и длина дорожки
size выбирает ступень размерной шкалы: 1/2, 1 или 2. Берите ступень
полей и кнопок той же формы. Для плотного списка настроек дорожку укорачивает
класс sf-switch--short, переданный в root-class.
Значение в форме
Внутри <sf-switch> лежит обычный <input type="checkbox" role="switch"> с
переданными name и value. Включённый переключатель попадает в FormData
и отправку формы, выключенный — нет. Сброс формы возвращает положение,
заданное атрибутом checked в разметке.
Применение настройки и событие change
Нажатие отправляет нативное событие change внутреннего input; оно
всплывает через <sf-switch>, detail у него нет. Новое положение читайте из
event.target.checked и применяйте настройку сразу. Атрибут checked на
элементе следует за положением.
setChecked() и setDisabled() меняют положение и доступность из кода,
события change при этом нет. Если сохранить настройку не удалось, верните
переключатель в прежнее положение.
const compact = document.querySelector('sf-switch[name="compact"]');
compact.addEventListener('change', async (event) => {
const enabled = event.target.checked;
try {
await saveSetting('compact', enabled);
} catch {
compact.setChecked(!enabled);
}
});
Доступность
- Переключателю нужно видимое название в
label: отдельногоaria-labelу компонента нет. - Внутренний input с
role="switch"сообщает экранному диктору, что это переключатель, и его положение — «вкл.» или «выкл.». - Каждый переключатель — отдельная остановка
Tab;Spaceменяет положение. - Бегунок скрыт от вспомогательных технологий: положение передаёт input.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-switch> |
| Назначение | Переключатель вкл./выкл. для настройки, которая применяется сразу: нативный флажок с role=“switch”, дорожка и движущийся бегунок, с подписью, описанием и текстом подсказки. |
| Контракт | smart.switch, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | нет: атрибут data-sf-skeleton не пишется; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
size—string, по умолчанию1, значения:1/2,1,2. Токен размера переключателя.label—string, по умолчанию пусто.description—string, по умолчанию пусто.help—string, по умолчанию пусто.checked—boolean, по умолчаниюfalse.disabled—boolean, по умолчаниюfalse.name—string, по умолчанию пусто.value—string, по умолчанию пусто.
Методы
getInputElement()— возвращаетobject|null. Возвращает внутренний нативный input (.sf-switch input[type=“checkbox”]) или null до отрисовки.setChecked(nextValue?: boolean)— возвращаетobject. Устанавливает свойство и состояние checked внутреннего input; не отправляет change.setDisabled(nextValue?: boolean)— возвращаетobject. Устанавливает или снимает disabled на хост-элементе и внутреннем input.setState(nextState: object)— возвращаетobject. Применяет checked и disabled к внутреннему input и отражает их в атрибутах хост-элемента; до отрисовки использует базовый setState.onChange(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик нативного события change, которое всплывает от внутреннего input.onFocus(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик focusin на хост-элементе.onBlur(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик focusout на хост-элементе.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
change—detailне описан. Изменилось состояние «включено»; нативное событие всплывает от внутреннего флажка, который является его целью.
Доступность
- Роль: переключатель (
switch). - Доступное имя: обязательно.
- Клавиши:
Tab,Space. - Фокус: Сохраняет видимый фокус на активном элементе управления.
Минимальная разметка
<sf-switch></sf-switch>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/switchsimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-switch