Skip to content

CdsSlideGroup

Слайд-группа укладывает набор элементов в одну линию с прокруткой: когда элементы не помещаются, лента листается стрелками. Умеет вести выбор через v-model — на слайд-группе построены CdsTabs и CdsTagGroup.

Storybook GitLab
Покрытие тестами: тестов нет

У компонента пока нет автотестов: поведение проверено только вручную.

API в спеках
0 / 32 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
0 юнит · 0 браузерных
Покрытие кода
51.7% строк · 37.2% ветвей замер v4.0.0-alpha.13
A11y (axe)
16 рекомендаций в 11 историях замер v4.0.0-alpha.11

Для панели разделов возьмите готовые CdsTabs, для выбора тегов — CdsTagGroup, а чтобы листать слайды по одному — CdsSlideView.

Анатомия ​

По краям контейнера — кнопки-стрелки, между ними прокручивается лента элементов. Стрелки появляются, только когда лента не помещается в контейнер, и листают её на ширину видимой области.

Вариации ​

Прокрутка и стрелки ​

По умолчанию стрелки появляются на десктопе, когда элементы не помещаются в контейнер; на мобильных лента прокручивается пальцем без стрелок. Проп show-arrows меняет это поведение: true показывает стрелки при переполнении и на мобильных, desktop и mobile — всегда на соответствующих устройствах, always — всегда, never — никогда.

Sandbox Storybook

Выбор элементов ​

Оберните элементы в CdsSlideGroupItem — и группа начнёт вести выбор: v-model хранит значение выбранного элемента из его пропа value. Сам CdsSlideGroupItem ничего не рендерит — его слот получает isSelected и toggle, а как показать выбранное состояние, решаете вы. Проп mandatory не даёт снять последний выбор.

Sandbox Storybook

Проп multiple разрешает выбрать несколько элементов — v-model становится массивом, а max ограничивает число выбранных.

Sandbox Storybook

Активный элемент по центру ​

При изменении выбора лента сама докручивается до активного элемента — за это отвечает включённый по умолчанию scroll-to-active. Проп center-active дополнительно держит активный элемент по центру контейнера.

Sandbox Storybook

Вертикальная группа ​

Проп direction="vertical" разворачивает ленту в колонку — высоту ограничьте через max-height на самой группе.

Sandbox Storybook

Слоты ​

СлотОписание
defaultЭлементы ленты, обычно CdsSlideGroupItem
prevСвой контент кнопки «назад» вместо стрелки
nextСвой контент кнопки «вперёд» вместо стрелки

Все слоты получают методы prev, next, select и isSelected. Клик по области стрелки группа обрабатывает сама, поэтому в prev / next достаточно положить только визуал. Иконки стандартных стрелок меняются без слотов — пропами prev-icon и next-icon.

Sandbox Storybook

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

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

Запись на встречу ​

Две слайд-группы с выбором: лента дней с center-active держит выбранную дату по центру, лента времени компактнее — с кнопками size="sm". Оба списка с mandatory: у записи всегда есть выбранные дата и время.

Sandbox Storybook

Лента документов ​

Слайд-группа работает и без выбора — как обычная прокручиваемая лента. Карточки кладутся прямо в слот default без CdsSlideGroupItem, стрелки листают ленту на ширину видимой области.

Sandbox Storybook

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

Панель инструментов в узком контейнере: кнопки-иконки с aria-label, multiple разрешает включить несколько форматов сразу, а стрелки show-arrows="always" листают инструменты, которые не поместились.

Sandbox Storybook

API ​

CdsSlideGroup ​

Пропсы

ИмяТипПо умолчаниюОписание
centerActiveboolean | undefined—Принудительно выравнивает активный компонент по центру.
contentClassany—Добавляет классы к контейнеру slide group
contentStyleany—Добавляет inline-стили к контейнеру slide group
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
mandatoryboolean | "force" | undefined—Обязательный выбор хотя бы одного элемента
maxnumber | undefined—Максимальное количество выбираемых элементов
mobileboolean | null | undefinednullОпределяет режим отображения компонента: Если значение равно true, компонент будет отображаться в режиме для Mobile. Если значение равно false, компонент будет отображаться в режиме для Desktop. Если значение равно null, режим будет зависеть от текущего Breakpoint.
mobileBreakpointnumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined—Указывает точку преломления, при которой отображение будет переключаться в мобильный режим. Может быть числом (например, 600) или строкой, соответствующей одному из предопределенных Breakpoint (например, 'xs', 'sm', 'md', 'lg', 'xl').
modelValueany—Значение выбранных элементов группы
multipleboolean | undefined—Разрешить множественный выбор
nextIconIconValue | undefined'chevron-right'Иконка для кнопки "следующий".
prevIconIconValue | undefined'chevron-left'Иконка для кнопки "предыдущий".
requiredboolean | "force" | undefined—Обязательный выбор хотя бы одного элемента
scrollToActiveboolean | undefinedtrueЕсли true, то при изменении активного компонента, контейнер будет прокручиваться так, чтобы он был виден.
selectedClassstring | undefined'cds-slide-group-item--active'CSS класс для выбранного состояния
showArrowsstring | boolean | undefined—Изменяет настройки отображения стрелок: По умолчанию стрелки всегда отображаются на Desktop устройствах при переполнении контейнера.<br /> При переполнении контейнера на мобильных устройствах стрелки по умолчанию не отображаются.<br /> Значение «true» для параметра «show-arrows» позволяет отображать эти стрелки на мобильных устройствах при переполнении контейнера.<br /> Значение «desktop» всегда отображает стрелки на настольных устройствах, а значение «mobile» — на мобильных устройствах.<br /> Значение «always» всегда отображает стрелки как на настольных, так и на мобильных устройствах.<br /> Используйте значение «never», чтобы отключить отображение стрелок.
tagstring | JSXComponent<any> | undefined'div'Пользовательский HTML-тег для отображения

Слоты

ИмяТипОписание
defaultSlideGroupSlotСлот для компонента CdsSlideGroupItem
nextSlideGroupSlotСлот для кнопки "следующий".
prevSlideGroupSlotСлот для кнопки "предыдущий".

Exposed

ИмяТипОписание
focus(location?: "next" | "prev" | "first" | "last" | undefined) => voidЗафокусить компонента
hasNextbooleanВозвращает значение true, если после текущего индекса есть элементы.
hasPrevbooleanВозвращает значение true, если перед текущим индексом есть элементы.
scrollOffsetnumberПолучить скролл элемента
scrollTo(location: "next" | "prev") => voidПроскроллить к элементу по индексу
selectedreadonly string[]Получить индекс выбранного элемента

CdsSlideGroupItem ​

Пропсы

ИмяТипПо умолчаниюОписание
disabledboolean | null | undefinednullЗаблокированное состояние
selectedClassstring | undefined—CSS класс для выбранного состояния
valueany—Значение компонента в группе

События

ИмяТипОписание
group:selected[value: { value: boolean; }]Событие, которое срабатывает при выборе элемента в группе.

Слоты

ИмяТипОписание
default{ isSelected: boolean; select: (value: boolean) => void; toggle: () => void; selectedClass: false | (string | undefined)[]; }Слот для контента