Checkbox
<sf-checkbox> — флажок для независимого выбора: каждый вариант отмечают или
снимают отдельно от остальных. Он собирает разметку
флажка из атрибутов. Для одного варианта из
нескольких берите Radio, для настройки,
которая действует сразу, — Switch.
Пример
Применение
Подпись и пояснение
label — видимое название варианта, description — пояснение под ним. Оба
стоят внутри одного <label> с флажком, поэтому щелчок по тексту тоже
переключает вариант. Вместо строк можно передать разметку в слоты label и
description. help выводит рядом с названием значок с указанным именем; он
скрыт от экранного диктора, поэтому то, что важно прочитать, пишите в
description.
Группа вариантов
Связанные флажки объединяйте в <fieldset>: общий вопрос пишется в
<legend>, а каждый флажок сохраняет своё название. Одинаковое name у
флажков группы (notifications[] в примере) собирает отмеченные значения в
один список при отправке формы.
Смешанное состояние
indeterminate показывает флажок, который обобщает группу, где отмечена
только часть вариантов. Это только вид: значения он не меняет, а щелчок
пользователя снимает смешанное состояние. Итоговое состояние такого флажка
считает приложение — в примере ниже по изменению любого варианта.
Размер и положение флажка
size выбирает ступень размерной шкалы: 1/2, 1 или 2. position="end"
ставит флажок после текста, в конце строки; по умолчанию он стоит в начале.
Ошибка
error показывает недопустимое состояние и ставит aria-invalid на
внутренний флажок. Текст ошибки компонент не выводит: разместите его рядом с
группой и свяжите с ней через aria-describedby.
Значение в форме
Внутри <sf-checkbox> лежит обычный <input type="checkbox"> с переданными
name и value, поэтому отмеченный флажок попадает в FormData и отправку
формы без дополнительного кода. Сброс формы возвращает состояние, заданное
атрибутом checked в разметке.
Состояние из кода и событие change
Отметка пользователем отправляет нативное событие change внутреннего
флажка; оно всплывает через <sf-checkbox>, detail у него нет. Состояние
читайте из event.target.checked или методом isChecked(). Атрибуты
checked и indeterminate на элементе следуют за состоянием флажка.
setChecked(), setIndeterminate() и setDisabled() меняют состояние из
кода и события change не отправляют. Элемент, созданный через
SF.createAsync, готов к таким вызовам после вставки на страницу и
whenRendered().
const terms = await SF.createAsync('checkbox', {
name: 'terms',
value: 'accepted',
label: 'Принимаю условия',
onChange: (event) => submit.toggleAttribute('disabled', !event.target.checked),
});
form.append(terms);
await terms.whenRendered();
terms.setChecked(false);
Доступность
- Каждому флажку нужно доступное имя: видимый
labelили, если подписи нет,aria-label— например, у флажка выбора строки в таблице. Имя попадает на внутренний флажок. - Каждый флажок — отдельная остановка
Tab;Spaceотмечает и снимает его. Фокус виден на самом флажке. - Общий вопрос группы задаёт
<legend>: экранный диктор читает его перед первым вариантом. - Смешанное состояние экранный диктор объявляет как «частично отмечено».
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-checkbox> |
| Назначение | Нативный флажок с подписью, оформлением Framework и состояниями checked, indeterminate и disabled, которые согласованы между атрибутами хост-элемента и внутренним input. |
| Контракт | smart.checkbox, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | нет: атрибут data-sf-skeleton не пишется; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
size—string, по умолчанию1, значения:1/2,1,2. Токен размера чекбокса.label—string, по умолчанию пусто.description—string, по умолчанию пусто.help—string, по умолчанию пусто.position—string, по умолчаниюstart, значения:start,end. Логическое расположение индикатора относительно текста.root-class—string, по умолчанию пусто.checked—boolean, по умолчаниюfalse.disabled—boolean, по умолчаниюfalse.indeterminate—boolean, по умолчаниюfalse. Смешанное визуальное состояние чекбокса, обобщающего связанные варианты.name—string, по умолчанию пусто.value—string, по умолчанию пусто.error—boolean, по умолчаниюfalse. Недопустимое состояние; нативное поле ввода публикуетaria-invalid.aria-label—string, по умолчанию пусто. Доступное имя чекбокса без видимой подписи.
Методы
getInputElement()— возвращаетobject|null. Возвращает внутренний нативный input флажка или null до отрисовки.isChecked()— возвращаетboolean. Возвращает текущее нативное состояние checked.setChecked(nextValue?: boolean|string)— возвращаетobject. Устанавливает состояние checked в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.setIndeterminate(nextValue?: boolean|string)— возвращаетobject. Устанавливает состояние indeterminate в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.setDisabled(nextValue?: boolean|string)— возвращаетobject. Устанавливает состояние disabled в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.setBooleanStateAttribute(name: string, value: boolean)— возвращаетnull. Добавляет указанный атрибут хост-элемента как пустой атрибут, когда value истинно, и удаляет его в противном случае.setState(nextState?: object)— возвращаетobject. Применяет checked, indeterminate и disabled и к атрибуту хост-элемента, и к внутреннему input; остальные ключи передаются в базовый setState как атрибуты хост-элемента. Возвращает элемент.onChange(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик change на хост-элементе. Возвращает элемент.onFocus(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик focusin на хост-элементе. Возвращает элемент.onBlur(handler: function, options?: object|boolean)— возвращаетobject. Добавляет обработчик focusout на хост-элементе. Возвращает элемент.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
change—detail:null. Изменилось состояние checked; нативное событие всплывает от внутреннего флажка, который является его целью. detail не передаётся.
Доступность
- Доступное имя: обязательно.
- Клавиши:
Tab,Space. - Фокус: Сохраняет видимый фокус на активном элементе управления.
Минимальная разметка
<sf-checkbox></sf-checkbox>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/checkboxsimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-checkbox