Skip to content

CdsProgressBar

Линейный индикатор прогресса — горизонтальная шкала хода операции: загрузки файла, шагов мастера, воспроизведения медиа. Значение задаётся через model-value, а когда ход операции неизвестен, режим indeterminate включает бегущую анимацию ожидания.

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

Для прогресса в виде кольца возьмите CdsProgressCircle, а чтобы затемнить контейнер на время загрузки — CdsOverlay.

Анатомия ​

Шкала собирается из трёх слоёв: индикатор текущего значения, буфер и фон. Поверх слоёв выводится контент слота default. Фон и буфер по умолчанию подкрашены цветом индикатора с сильной прозрачностью — интенсивность настраивают пропы bg-opacity и buffer-opacity.

Вариации ​

Значение ​

Свойство model-value — текущий прогресс. Шкала считается от 0 до max (по умолчанию 100), поэтому можно передавать «сырые» величины — секунды или мегабайты — не пересчитывая их в проценты. Изменение значения анимируется плавным переходом, а reverse заполняет шкалу справа налево.

Sandbox Storybook

Неопределённый прогресс ​

Свойство indeterminate включает бегущую анимацию — используйте её, когда ход операции неизвестен и показать процент нечем.

Sandbox Storybook

Буфер ​

Свойство buffer-value — вторая шкала между индикатором и фоном: часть, которая уже готова, но ещё не пройдена, например подгруженный фрагмент видео. Чтобы буфер читался на фоне шкалы, увеличьте buffer-opacity; отдельный цвет задаёт buffer-color.

Sandbox Storybook

Свойство stream добавляет пунктирную анимацию от края буфера до конца шкалы — сигнал, что данные продолжают поступать. Границу потока задаёт buffer-value, фон при этом скрывается.

Sandbox Storybook

Высота ​

Свойство height задаёт высоту шкалы в пикселях. По умолчанию — 4.

Sandbox Storybook

Скругление ​

Свойство rounded-bar скругляет ведущий край индикатора. Начало остаётся прямым — шкала читается как непрерывная от нулевой отметки.

Sandbox Storybook

Цвета ​

Свойство color красит индикатор и — пока не заданы отдельные цвета — буфер и фон. Свой цвет фона задаёт bg-color, а прозрачность слоёв — opacity для индикатора и bg-opacity для фона.

Sandbox Storybook

Полосы ​

Свойство striped накладывает на индикатор бегущие диагональные полосы — они оживляют долгие операции с известным ходом.

Sandbox Storybook

Сегменты ​

Свойство chunk-count делит шкалу на равные сегменты — например, по числу шагов, — а chunk-width строит сегменты фиксированной ширины. Зазор между ними задаёт chunk-gap. Индикатор заполняет сегменты целиком: значение прилипает к границе ближайшего сегмента.

Sandbox Storybook

Вариант variant="split" не режет шкалу на части, а отделяет заполненную часть от остатка одним зазором — индикатор и фон читаются как два самостоятельных отрезка.

Sandbox Storybook

Контент ​

Слот default выводит контент по центру шкалы и получает слот-пропы value и buffer — нормализованные проценты. Увеличьте height, чтобы контент поместился.

Sandbox Storybook

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

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

Загрузка файла ​

Кнопка запускает загрузку: шкала растёт по мере поступления данных, подпись над ней показывает файл и процент. Цвет green поддерживает позитивный сценарий, а по завершении кнопка предлагает повторить загрузку.

Sandbox Storybook

Шаги мастера ​

chunk-count по числу шагов превращает шкалу в индикатор мастера: заполненные сегменты — пройденные шаги, полупрозрачные — оставшиеся. Значение — доля текущего шага от общего числа.

Sandbox Storybook

Перемотка видео ​

Свойство clickable превращает шкалу в контрол: клик записывает новое значение в v-model. Буфер показывает подгруженный фрагмент, stream — что загрузка продолжается, а подписи считают время из процентов.

Sandbox Storybook

Обновление данных в карточке ​

Свойство absolute прижимает шкалу к верхней грани контейнера с position: relative — индикатор не расталкивает контент. Проп active прячет шкалу, плавно сводя высоту к нулю, а indeterminate избавляет от необходимости считать прогресс фоновой операции.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
absoluteboolean | undefined—Абсолютное позиционирование компонента
activeboolean | undefinedtrueУправление отображением активного состояния прогресс-бара
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
bgOpacitystring | number | undefined—Прозрачность фона прогресс-бара
bufferColorstring | undefined—Цвет буферной части прогресс-бара
bufferOpacitystring | number | undefined—Прозрачность буферной части прогресс-бара
bufferValuestring | number | undefined0Значение буфера прогресса
chunkCountstring | number | undefinednullКоличество сегментов, на которые разбивается прогресс-бар
chunkGapstring | number | undefined4Расстояние между сегментами прогресс-бара
chunkWidthstring | number | undefinednullШирина одного сегмента прогресс-бара
clickableboolean | undefined—Делает прогресс-бар кликабельным
colorstring | undefined—Цвет компонента
heightstring | number | undefined4Высота прогресс-бара
indeterminateboolean | undefined—Неопределенное состояние прогресса без фиксированного значения
locationAnchor | null | undefined'top'Позиционирование элемента относительно его контейнера. Например, "top left", "center", "bottom right" и т.д.
maxstring | number | undefined100Максимальное значение прогресса
modelValuestring | number | undefined0Текущее значение прогресса
opacitystring | number | undefined—Прозрачность основного индикатора прогресса
reverseboolean | undefined—Обратное направление заполнения шкалы прогресса
roundedBarboolean | undefined—Скруглять индикатор прогресса
streamboolean | undefined—Отображать потоковую анимацию поверх индикатора прогресса
stripedboolean | undefined—Отображать полосы на индикаторе прогресса
tagstring | JSXComponent<any> | undefined'div'Пользовательский HTML-тег для отображения
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
variant"split" | undefined—Вариант отображения сегментов прогресс-бара

События

ИмяТипОписание
update:modelValue[value: number]Сработало при изменении значения прогресса — по клику по шкале в режиме clickable

Слоты

ИмяТипОписание
default{ value: number; buffer: number; }Контент поверх полосы — например подпись с процентом. В параметрах — текущее значение и значение буфера