SRadioGroup > SRadio
Радио-кнопки.
В отличие от популярных библиотек компонентов для Vue3:
- Сразу идет с кликабельным стандартизированным лейблом в качестве простого атрибута. Это унифицирует код и внешний вид компонентов, упрощается поддержка и взаимозаменяемость.
- Сразу из коробки идет кнопочный стиль, который часто используется.
- Поддерживает три формата передачи опций в группы радио-кнопок, что удобно в зависимости от кейса:
<SRadio />— там где опции являются частью дизайна, их можно и удобно хардкодить в шаблон;{value1: title1, value2: title2}— что удобно для быстрого получения из key-value конфигов, а также из моделей —User::pluck('name', 'id');[[value1, title1], [value2, title2]]— что удобно для выгрузки там, где важен порядок. Это минимизирует код в контроллерах, помогая сохранять принцип «тонкого контроллера», которого мы придерживаемся.
- Взаимозаменяемость формата опций с другими выбиралками из вариантов. Это позволяет легко заменять SRadioGroup на SSelect или SCheckboxGroup, не трогая бэкенд код.
Группа радио-кнопок
Модель будет принимать значение выбранного варианта: bug
<SRadioGroup v-model="type">
<SRadio value="bug">Ошибка</SRadio>
<SRadio value="question">Вопрос</SRadio>
<SRadio value="idea">Идея</SRadio>
</SRadioGroup>
<p>Модель будет принимать значение выбранного варианта: <code>{{ type }}</code></p>Динамический набор значений
В предыдущем примере набор вариантов хардкодился в шаблоне, что удобно, когда набор значений относится к логическому уровню интерфейса. Но когда набор вариантов идет из базы данных или конфига, очень неудобно каждый раз формировать набор элементов через v-for, и вместо этого используем атрибут options.
<SRadioGroup v-model="type" :options="options" />Где options — это объект вариантов выбора в формате {value1: title1, value2: title2} или массив в формате [[value1, title1], [value2, title2]]
Кнопочный стиль
Чтобы заменить стиль с кружочками на группу кнопок, добавляем атрибут buttons:
<SRadioGroup v-model="type" :options="options" buttons />Вертикальный список радио-кнопок
Чтобы выводить группу радио-кнопок вертикальным списком, добавляем атрибут vertical:
<SRadioGroup v-model="type" :options="options" vertical />Недоступное значение
Добавляем disabled-атрибут значению, которое должно быть недоступно для переключения.
<SRadioGroup v-model="type">
<SRadio value="bug" disabled>Ошибка</SRadio>
<SRadio value="question">Вопрос</SRadio>
<SRadio value="idea">Идея</SRadio>
</SRadioGroup>Нулевое значение (плейсхолдер)
У радио-кнопок иногда бывает «не выбранное значение», особенно в фильтрах при заданном наборе вариантов. Для этого удобно использовать синтаксис placeholder:
<SRadioGroup v-model="type" placeholder="Все" :options="options" />Интерфейс компонента SRadioGroup
Свойства (Props)
| Название | Тип | По умолчанию | Описание |
|---|---|---|---|
| v-model | any | undefined | Выбранное значение. |
| options | Record | Array | {} | Список вариантов (объект {value: title} или массив [[value, title]]). |
| buttons | boolean | false | Использовать стиль кнопок вместо кружочков. |
| vertical | boolean | false | Расположение элементов в колонку. |
| placeholder | string | undefined | Текст для «нулевого» варианта выбора (с пустым значением). |
Слоты (Slots)
| Название | Описание |
|---|---|
| default | Содержимое группы (обычно компоненты SRadio). |
События (Events)
| Название | Параметры | Описание |
|---|---|---|
| change | (value: any) | Вызывается при изменении выбранного значения. |
Интерфейс компонента SRadio
Свойства (Props)
| Название | Тип | По умолчанию | Описание |
|---|---|---|---|
| value | string | number | boolean | - | Обязательное. Значение элемента. |
| disabled | boolean | false | Отключает возможность выбора. |
| labelClass | string | undefined | Кастомные CSS классы для лейбла. |
Слоты (Slots)
| Название | Описание |
|---|---|
| default | Текст или HTML-содержимое лейбла радио-кнопки. |