Radio
<sf-radio> — радиокнопка: один вариант из группы взаимоисключающих, где
все варианты видны сразу. Она собирает разметку
радиокнопки из атрибутов. Для независимых
вариантов берите Checkbox, для
длинного списка — Dropdown.
Пример
Применение
Группа и значение
Радиокнопки с одинаковым name в одной форме составляют группу: отметка
одной снимает отметку с остальных. value — машинное значение варианта; при
отправке формы приходит значение отмеченного. Общее имя дайте всем вариантам
одного вопроса и не давайте вариантам разных вопросов.
Группу размещайте в <fieldset>: общий вопрос пишется в <legend>, а не
повторяется в названии каждого варианта. Один вариант отмечайте заранее
атрибутом checked, если у вопроса есть разумный ответ по умолчанию.
Подпись и пояснение
label — видимое название варианта, description — пояснение под ним; щелчок
по тексту тоже выбирает вариант. Вместо строк можно передать разметку в слоты
label и description. help выводит рядом с названием значок с указанным
именем; экранный диктор его не читает.
Размер, недоступность и ошибка
size выбирает ступень размерной шкалы: 1/2, 1 или 2. disabled
выключает вариант. error показывает недопустимое состояние только цветом:
текст ошибки разместите у группы.
Значение в форме
Внутри <sf-radio> лежит обычный <input type="radio">, поэтому отмеченный
вариант попадает в FormData и отправку формы. Сброс формы возвращает
отметку, заданную в разметке.
Выбор из кода и событие change
Выбор пользователем отправляет нативное событие change внутренней
радиокнопки; оно всплывает через <sf-radio>, detail у него нет. Слушайте
его на <fieldset> или форме и читайте event.target.value. Атрибут checked
следует за выбором у всех радиокнопок группы.
setChecked(true) отмечает вариант из кода, setDisabled() выключает его;
событие change при этом не отправляется.
const publish = document.querySelector('fieldset');
publish.addEventListener('change', (event) => {
showSchedule(event.target.value === 'later');
});
document.querySelector('sf-radio[value="draft"]').setChecked(true);
Доступность
- Каждой радиокнопке нужно видимое название в
label: отдельногоaria-labelу компонента нет. - Группе нужно общее имя —
<legend>внутри<fieldset>. - Группа — одна остановка
Tab: фокус приходит на отмеченный вариант или, если отмеченного нет, на первый. Стрелки переходят между вариантами и сразу выбирают их,Spaceотмечает вариант в фокусе. - Ошибка показывается только цветом; текст ошибки свяжите с группой через
aria-describedby.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-radio> |
| Назначение | Один вариант выбора: нативная радиокнопка с подписью, описанием и текстом подсказки. Радиокнопки с одинаковым name образуют группу, в которой выбор одной снимает выбор с остальных. |
| Контракт | smart.radio, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | нет: атрибут data-sf-skeleton не пишется; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
size—string, по умолчанию1, значения:1/2,1,2. Токен размера переключателя (radio).label—string, по умолчанию пусто.description—string, по умолчанию пусто.help—string, по умолчанию пусто.checked—boolean, по умолчаниюfalse.disabled—boolean, по умолчаниюfalse.name—string, по умолчанию пусто.value—string, по умолчанию пусто.error—boolean, по умолчаниюfalse.
Методы
getInputElement()— возвращаетobject|null. Возвращает внутренний нативный input (.sf-radio-button input[type=“radio”]) или null до отрисовки.setChecked(nextValue?: boolean)— возвращаетobject. Устанавливает свойство и состояние checked внутреннего input; не отправляет change.setDisabled(nextValue?: boolean)— возвращаетobject. Устанавливает или снимает disabled на хост-элементе и внутреннем input.setState(nextState: object)— возвращаетobject. Применяет checked и disabled к внутреннему input (установка checked также обновляет остальную именованную группу) и отражает их в атрибутах хост-элемента; до отрисовки использует базовый 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не описан. Выбор изменился; нативное событие всплывает от внутренней радиокнопки, которая является его целью. Имя для привязки.
Доступность
- Роль: радиокнопка (
radio). - Доступное имя: обязательно.
- Клавиши:
Tab, стрелки,Space. - Фокус: Сохраняет видимый фокус на активном элементе управления.
Минимальная разметка
<sf-radio></sf-radio>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/radiosimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-radio