Skip to content

CdsSelectionControlGroup

New in v4.0

Контейнер для набора контролов выбора: хранит общее значение, раздаёт вложенным CdsSelectionControl тип, иконки, цвета и состояния и связывает их одним атрибутом name. На нём собрана группа радиокнопок дизайн-системы.

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

Для готовой группы с заголовком, описанием и сообщениями берите CdsRadioGroup: она собрана из этой группы и обвязки CdsInput. CdsSelectionControlGroup нужен, когда вы строите свой набор контролов.

Вариации ​

Общая модель и тип ​

Значение выбранного контрола хранит группа: v-model — на ней, у каждого вложенного контрола только своё value. Свойства type, true-icon и false-icon группа раздаёт всем контролам, а общий атрибут name для нативных input создаёт сама — переопределить его можно свойством name.

Sandbox Storybook

Множественный выбор ​

Массив в модели включает режим multiple: каждый контрол добавляет в неё своё value. Режим включается автоматически — свойство multiple нужно, только чтобы задать его вручную.

Sandbox Storybook

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

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

Sandbox Storybook

Состояния ​

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

Sandbox Storybook

Цвета и иконки ​

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

Sandbox Storybook

Пробрасывание настроек ​

Свои настройки группа отдаёт компоненту, имя которого указано в defaults-target — по умолчанию это CdsSelectionControl. Поставьте туда имя готового контрола, и группа станет управлять им: так CdsRadioGroup раздаёт настройки радиокнопкам.

Sandbox Storybook

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

Фильтр по категориям ​

Модель-массив собирает отмеченные категории, а список пересобирается на лету через computed. inline оставляет контролам ширину подписи, поэтому фильтры идут плотным рядом.

Sandbox Storybook

Плитки выбора ​

Группа не диктует контролам разметку: в слоте input каждый рисует свою плитку, а группа по-прежнему хранит выбранное значение и связывает нативные input одним name.

Sandbox Storybook

API ​

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

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
colorstring | undefined—Цвет компонента
defaultsTargetstring | undefined—Имя дочернего компонента, которому пробрасываются значения пропсов группы по умолчанию
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
errorboolean | undefined—Переводит компонент в визуальное состояние ошибки
falseIconIconValue | undefined—Иконка невыбранного состояния
idstring | undefined—Уникальный идентификатор компонента
inlineboolean | undefined—Отображает контрол как inline-элемент — контейнер не растягивается на всю ширину
modelValueany—Значение компонента (v-model). В группе — значение выбранного контрола, при multiple — массив выбранных значений
multipleboolean | null | undefinednullРазрешает выбор нескольких значений — модель становится массивом. Включается автоматически, если в modelValue передан массив
namestring | undefined—Атрибут name нативного элемента input. В группе одно имя объединяет все вложенные контролы
readonlyboolean | null | undefinednullТолько для чтения
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
trueIconIconValue | undefined—Иконка выбранного состояния
typestring | undefined—Тип нативного элемента input — например, radio или checkbox
valueComparatorValueComparator | undefinedtrueФункция сравнения значения модели со значением value контрола. По умолчанию — глубокое сравнение

События

ИмяТипОписание
update:modelValue[value: any]Сработало при изменении выбора в группе. Передаёт новое значение группы

Слоты

ИмяТипОписание
defaultanyЭлементы управления группы — чекбоксы или радиокнопки