Если выбор нужно оформить кнопками, возьмите CdsButtonToggle. Для выбора из длинного списка подойдёт CdsSelect, а отдельные независимые теги без выбора — просто CdsTag.
Вариации
Выбор
Каждому тегу задайте value — именно оно попадёт в v-model. Без value значением становится индекс тега в группе. Повторный клик по выбранному тегу снимает выбор.
Множественный выбор
Свойство multiple разрешает выбрать несколько тегов — v-model становится массивом значений.
Свойство max ограничивает число выбранных тегов: когда лимит достигнут, клики по остальным тегам не добавляют выбор.
Обязательный выбор
Свойство mandatory не даёт снять последний выбор: тег можно только переключить. Со значением 'force' первый доступный тег выбирается автоматически, даже если v-model пуст.
Индикатор выбора
Свойство filter добавляет выбранным тегам иконку-галочку — выбор читается не только по заливке. Иконку меняет filter-icon тега, а слот filter заменяет её своей разметкой.
Цвет и блокировка
Свойства color, active-color, disabled и filter группа проставляет своим тегам как значения по умолчанию — повторять их на каждом теге не нужно. color красит невыбранные теги, active-color — выбранный; без него выбранный тег остаётся брендовым, чтобы выбор читался при любой палитре. disabled блокирует всю группу: выбор виден, но переключить его нельзя. Свойство, заданное прямо на теге, побеждает значение группы.
Компоновка
По умолчанию теги стоят в один ряд, а лишние уезжают в горизонтальную прокрутку со стрелками: группа построена на CdsSlideGroup и принимает его свойства — show-arrows, direction, center-active. Свойство column переносит теги по строкам вместо прокрутки — так все варианты видны сразу.
Рекомендации
Сценарии использования
Фильтр каталога
Строка категорий над выдачей — самая частая работа группы тегов. column показывает все категории сразу, mandatory не даёт остаться без фильтра, а v-model даёт готовый ключ для запроса товаров.
Выбор нескольких тем
Когда значения не исключают друг друга, включите multiple. max держит выбор в разумных границах, filter отмечает выбранные темы галочкой, а подпись под группой объясняет лимит.
Переключение периода
Группа отдаёт наружу методы next, prev, select и список selected — получите их через ref на компоненте. Так к тегам добавляются стрелки «назад / вперёд», которые листают периоды по порядку.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
activeColor | string | undefined | — | Цвет компонента, когда он находится в активном состоянии |
centerActive | boolean | undefined | — | Принудительно выравнивает активный компонент по центру. |
color | string | undefined | — | Цвет компонента |
column | boolean | undefined | — | Располагает теги в несколько строк с переносом вместо горизонтальной прокрутки. |
contentClass | any | — | Добавляет классы к контейнеру slide group |
contentStyle | any | — | Добавляет inline-стили к контейнеру slide group |
direction | "horizontal" | "vertical" | undefined | 'horizontal' | Переключение между горизонтальным или вертикальным отображением. |
disabled | boolean | null | undefined | null | Заблокированное состояние |
filter | boolean | undefined | — | Показывает у выбранных тегов иконку-галочку (прокидывается в CdsTag). |
mandatory | boolean | "force" | undefined | — | Обязательный выбор хотя бы одного элемента |
max | number | undefined | — | Максимальное количество выбираемых элементов |
mobile | boolean | null | undefined | null | Определяет режим отображения компонента: Если значение равно true, компонент будет отображаться в режиме для Mobile. Если значение равно false, компонент будет отображаться в режиме для Desktop. Если значение равно null, режим будет зависеть от текущего Breakpoint. |
mobileBreakpoint | number | "xs" | "sm" | "md" | "lg" | "xl" | undefined | — | Указывает точку преломления, при которой отображение будет переключаться в мобильный режим. Может быть числом (например, 600) или строкой, соответствующей одному из предопределенных Breakpoint (например, 'xs', 'sm', 'md', 'lg', 'xl'). |
modelValue | any | — | Значение выбранных элементов группы |
multiple | boolean | undefined | — | Разрешить множественный выбор |
nextIcon | IconValue | undefined | 'chevron-right' | Иконка для кнопки "следующий". |
prevIcon | IconValue | undefined | 'chevron-left' | Иконка для кнопки "предыдущий". |
required | boolean | "force" | undefined | — | Обязательный выбор хотя бы одного элемента |
scrollToActive | boolean | undefined | false | Если true, то при изменении активного компонента, контейнер будет прокручиваться так, чтобы он был виден. |
selectedClass | string | undefined | 'cds-tag--selected' | CSS класс для выбранного состояния |
showArrows | string | boolean | undefined | — | Изменяет настройки отображения стрелок: По умолчанию стрелки всегда отображаются на Desktop устройствах при переполнении контейнера.<br /> При переполнении контейнера на мобильных устройствах стрелки по умолчанию не отображаются.<br /> Значение «true» для параметра «show-arrows» позволяет отображать эти стрелки на мобильных устройствах при переполнении контейнера.<br /> Значение «desktop» всегда отображает стрелки на настольных устройствах, а значение «mobile» — на мобильных устройствах.<br /> Значение «always» всегда отображает стрелки как на настольных, так и на мобильных устройствах.<br /> Используйте значение «never», чтобы отключить отображение стрелок. |
tag | string | JSXComponent<any> | undefined | 'div' | Пользовательский HTML-тег для отображения |
theme | string | undefined | — | Тема компонента |
События
| Имя | Тип | Описание |
|---|---|---|
update:modelValue | [value: unknown] | Срабатывает при изменении выбранного значения. |
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | CdsTagGroupSlotProps | Теги группы. В аргументах слота доступно состояние группы (выбор, навигация). |
Exposed
| Имя | Тип | Описание |
|---|---|---|
isSelected | (id: string) => boolean | Проверить, выбран ли тег по id |
next | () => void | Выбрать следующий тег |
prev | () => void | Выбрать предыдущий тег |
select | (id: string, value: boolean) => void | Выбрать тег по id |
selected | readonly string[] | Идентификаторы выбранных тегов |