Skip to content

CdsButtonToggle

New in v4.0

Toggle-группа собирает кнопки CdsButton в переключатель: нажатая кнопка остаётся выбранной, а выбор доступен через v-model. Используйте её для режимов и фильтров, которые видны сразу, — вид списка, период статистики, параметры форматирования.

Storybook GitLab Figma
Покрытие тестами: 79% — частичное покрытие
API в спеках
19 / 24 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
24 юнит · 0 браузерных
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
2 рекомендаций в 10 историях замер v4.0.0-alpha.11

Если кнопки запускают действия, а не хранят выбор, возьмите CdsButtonGroup. Для выбора из длинного списка подойдёт CdsSelect, а в формах — CdsRadioGroup.

Вариации ​

Выбор ​

По умолчанию выбирается одна кнопка, повторный клик снимает выбор. В v-model попадает value кнопки, а если он не задан — её порядковый индекс.

Sandbox Storybook

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

Свойство multiple разрешает выбрать несколько кнопок — v-model становится массивом значений.

Sandbox Storybook

Свойство max ограничивает число выбранных кнопок: когда лимит достигнут, клики по остальным кнопкам не добавляют выбор.

Sandbox Storybook

Обязательный выбор ​

Свойство mandatory не даёт снять последний выбор — группа всегда остаётся в каком-то состоянии. Со значением 'force' первая доступная кнопка выбирается автоматически, даже если v-model пуст.

Sandbox Storybook

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

Свойство active-color перекрашивает выбранные кнопки — выбор заметнее на панелях, где много элементов управления.

Sandbox Storybook

Свойства группы ​

CdsButtonToggle построен на CdsButtonGroup и принимает все его свойства: variant и size применяются ко всем кнопкам сразу, вид по умолчанию — soft. Цвет выбранной кнопки задают active-color или color (по умолчанию brand), невыбранных — base-color (по умолчанию neutral); divided добавляет разделители, direction="vertical" разворачивает группу в столбец.

Sandbox Storybook

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

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

Вид отображения ​

Классика toggle-группы — переключение списка и плитки. Кнопки-иконки с aria-label экономят место, mandatory гарантирует, что список всегда отображается в одном из видов, а нейтральный вид по умолчанию и size="sm" не отвлекают от контента.

Sandbox Storybook

Панель форматирования ​

Стили текста независимы друг от друга, поэтому группа работает с multiple: каждая кнопка включает и выключает свой стиль, а v-model собирает выбранные значения в массив.

Sandbox Storybook

Фильтр по периоду ​

Задайте кнопкам value — и v-model вернёт осмысленное значение, по которому удобно запрашивать данные. mandatory не даёт остаться без периода: показатели всегда относятся к выбранному диапазону.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
appearancedeprecated"inverse" | "primary" | "secondary" | "tertiary" | "transparent" | undefined—Внешний вид компонента. Устарел: используйте variant и color
baseColorstring | undefined—Цвет неактивного компонента
color(string & {}) | "neutral" | "brand" | "accent" | "danger" | "inverse" | undefined'brand'Цвет компонента: роль, алиас палитры, токен темы или CSS-цвет
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
dividedboolean | undefined—Добавляет разделители между кнопками группы.
mandatoryboolean | "force" | undefined—Обязательный выбор хотя бы одного элемента
maxnumber | undefined—Максимальное количество выбираемых элементов
modelValueany—Значение выбранных элементов группы
multipleboolean | undefined—Разрешить множественный выбор
requiredboolean | "force" | undefined—Обязательный выбор хотя бы одного элемента
selectedClassstring | undefined—CSS класс для выбранного состояния
sizenumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined'md'Размер компонента
tagstring | JSXComponent<any> | undefined'div'Пользовательский HTML-тег для отображения
themestring | undefined—Тема компонента
variant"solid" | "soft" | "outline" | "surface" | "ghost" | undefined'soft'Вид кнопок: solid, soft, outline, surface, ghost

События

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

Слоты

ИмяТипОписание
defaultCdsButtonToggleSlotPropsКнопки toggle-группы. В аргументах слота доступно состояние группы (выбор, навигация).

Exposed

ИмяТипОписание
isSelected(id: string) => booleanПроверить, выбрана ли кнопка по id
next() => voidВыбрать следующую кнопку
prev() => voidВыбрать предыдущую кнопку
select(id: string, value: boolean) => voidВыбрать кнопку по id
selectedreadonly string[]Идентификаторы выбранных кнопок