Skip to content

CdsRadioGroup

Группа радиокнопок — выбор одного варианта из короткого взаимоисключающего набора: способ оплаты, тариф, период отчёта. Группа хранит выбранное значение, подписывает набор заголовком и описанием, показывает сообщения и ошибки; сами варианты — компоненты CdsRadio со своим value.

Storybook GitLab Figma
Покрытие тестами: 100% — хорошее покрытие
API в спеках
59 / 59 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
60 юнит · 0 браузерных · 2 в планах
Известные баги
9 зафиксированы тестом it.fails
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
4 рекомендаций в 11 историях замер v4.0.0-alpha.11

Для независимых опций, которые включаются по отдельности, — CdsCheckbox, для настройки «вкл/выкл», применяемой сразу, — CdsToggle. Если вариантов больше пяти, сверните список в CdsSelect.

Анатомия ​

Заголовок и описание подписывают весь набор, ниже — радиокнопки: у каждой контрол с иконкой состояния, лейбл и необязательное описание. Внизу — общий блок сообщений группы. Клик по лейблу выбирает кнопку так же, как клик по контролу.

Вариации ​

Заголовок и описание ​

Свойство label называет группу, description поясняет выбор. У каждой кнопки свои label и description: коротко назовите вариант в лейбле, а детали — цену, сроки, ограничения — уберите в описание.

Sandbox Storybook

Направление ​

По умолчанию кнопки выстраиваются в столбец. direction="horizontal" ставит их в ряд — удобно для коротких наборов из двух-трёх вариантов вроде периода или сортировки.

Sandbox Storybook

Состояния ​

disabled блокирует всю группу и снижает контрастность, readonly запрещает менять выбор, но не меняет внешний вид. Отдельный вариант блокируется свойством disabled самой кнопки.

Sandbox Storybook

Сообщения и ошибки ​

messages показывает вспомогательный текст под группой, error-messages — готовое сообщение об ошибке (например, пришедшее с сервера) вместе с состоянием ошибки у всех кнопок. Правила валидации через rules — в сценарии «Отправка формы». hide-details убирает нижний блок целиком.

Sandbox Storybook

Цвета ​

color задаёт цвет выбранной кнопки, base-color — невыбранных. Значения применяются сразу ко всем кнопкам группы.

Sandbox Storybook

Слоты ​

Когда текстовых пропсов недостаточно, содержимое блоков заменяется слотами — у группы и у каждой кнопки.

Имя слотаОписание
labelСодержимое заголовка группы (замещает label)
descriptionСодержимое описания группы (замещает description)
prependЭлемент до набора кнопок
appendЭлемент после набора кнопок
messagesСодержимое блока сообщений
detailsНижний блок целиком

У CdsRadio есть свои слоты label и description — например, чтобы подсветить часть текста или добавить иконку.

Sandbox Storybook

Рекомендации ​

Сценарии использования ​

Отправка формы ​

Выбор обязателен: правило в rules возвращает текст ошибки, пока значение не выбрано. Кнопка запускает проверку через validate() формы CdsForm.

Sandbox Storybook

Выбор тарифа ​

Описания кнопок подсказывают условия, а вычисляемый итог под группой обновляется при каждом выборе — пользователь видит последствия сразу.

Sandbox Storybook

Сортировка списка ​

Горизонтальная группа с hide-details работает как панель сортировки: выбранное значение пересобирает список на лету через computed.

Sandbox Storybook

API ​

Пропсы, события и слоты отдельной кнопки — на странице CdsRadio.

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
appendIconIconValue | undefined—Иконка в слоте append после контента
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
centerAffixboolean | undefinedtrueВыровнять по вертикали элементы appendInner, prependInner, clearIcon и label по центру.
colorstring | undefined—Цвет компонента
defaultsTargetstring | undefined—Имя дочернего компонента, которому пробрасываются значения пропсов группы по умолчанию
descriptionstring | undefined—Описание компонента, отображаемое под меткой
direction"horizontal" | "vertical" | undefined'vertical'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
errorboolean | undefined—Переводит компонент в визуальное состояние ошибки
errorMessagesstring | readonly string[] | null | undefined[]Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках. Будет объединяться с любыми проверками, заданными в свойстве rules. Это поле не запускает валидацию.
falseIconIconValue | undefined'radio-off'Иконка невыбранной радиокнопки
focusedboolean | undefined—Управляет состоянием фокуса компонента. Когда true, компонент считается сфокусированным и может применять соответствующие стили или поведение.
heightstring | number | undefined'auto'Высота компонента
hideDetailsboolean | "auto" | undefined—Скрытие блока с деталями (сообщениями и подсказками). При значении 'auto' блок скрывается, если нет сообщений
hideMessagesboolean | undefined—Скрыть сообщения под полем ввода
hintstring | undefined—Текст подсказки, отображаемый под полем ввода
iconColorstring | boolean | undefined—Цвет иконки. Принимает булево значение или строку с цветом
idstring | undefined—Уникальный идентификатор компонента
inlineboolean | undefined—Отображает контрол как inline-элемент — контейнер не растягивается на всю ширину
labelstring | undefined—Текст метки (label) компонента
maxErrorsstring | number | undefined1Максимальное число отображаемых ошибок при валидации
maxWidthstring | number | undefined—Максимальная ширина компонента
messagesstring | readonly string[] | undefined[]Сообщения для отображения под полем ввода
minWidthstring | number | undefined—Минимальная ширина компонента
modelValueany—Значение компонента (v-model). В группе — значение выбранного контрола, при multiple — массив выбранных значений
namestring | undefined—Атрибут name нативного элемента input. В группе одно имя объединяет все вложенные контролы
persistentHintboolean | undefined—Всегда отображать подсказку, а не только при фокусе
prependIconIconValue | undefined—Иконка в слоте prepend перед контентом
readonlyboolean | null | undefinednullТолько для чтения
rulesreadonly ValidationRule[] | undefined[]Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк. Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке. Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.
sizenumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined'md'Размер компонента
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
trueIconIconValue | undefined'radio-on'Иконка выбранной радиокнопки
typestring | undefined'radio'Тип нативного элемента input у кнопок группы
validateOnValidateOn | undefined—Изменяет тип события, при котором запускается валидация
validationValueany—Значение, используемое при применении правил валидации
valueComparatorValueComparator | undefinedtrueФункция сравнения значения модели со значением value контрола. По умолчанию — глубокое сравнение
widthstring | number | undefined—Ширина компонента

События

ИмяТипОписание
update:modelValue[value: any]Событие, которое срабатывает при изменении модели компонента

Слоты

ИмяТипОписание
appendCdsInputSlotДобавляет элемент после поля ввода
defaultanyСлот по умолчанию — радиокнопки группы (CdsRadio)
description{ description: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsDescription
detailsCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
label{ label: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsLabel
messageCdsMessageSlotСлот для настройки содержания сообщения
messagesCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
prependCdsInputSlotДобавляет элемент до поля ввода

Exposed

ИмяТипОписание
isDirtybooleanЯвляется ли поле ввода "грязным"
isDisabledbooleanЯвляется ли поле ввода заблокированным
isPurebooleanЯвляется ли поле ввода "чистым"
isReadonlybooleanЯвляется ли поле ввода только для чтения
isValidboolean | nullЯвляется ли поле ввода валидным
isValidatingbooleanЯвляется ли поле ввода в процессе валидации
reset() => Promise<void>Функция сброса поля ввода в исходное состояние
resetValidation() => Promise<void>Функция сброса валидации поля ввода
validate(silent?: boolean) => Promise<string[]>Функция валидации поля ввода