Для прогресса в виде кольца возьмите CdsProgressCircle, а чтобы затемнить контейнер на время загрузки — CdsOverlay.
Анатомия
Шкала собирается из трёх слоёв: индикатор текущего значения, буфер и фон. Поверх слоёв выводится контент слота default. Фон и буфер по умолчанию подкрашены цветом индикатора с сильной прозрачностью — интенсивность настраивают пропы bg-opacity и buffer-opacity.
Вариации
Значение
Свойство model-value — текущий прогресс. Шкала считается от 0 до max (по умолчанию 100), поэтому можно передавать «сырые» величины — секунды или мегабайты — не пересчитывая их в проценты. Изменение значения анимируется плавным переходом, а reverse заполняет шкалу справа налево.
Неопределённый прогресс
Свойство indeterminate включает бегущую анимацию — используйте её, когда ход операции неизвестен и показать процент нечем.
Буфер
Свойство buffer-value — вторая шкала между индикатором и фоном: часть, которая уже готова, но ещё не пройдена, например подгруженный фрагмент видео. Чтобы буфер читался на фоне шкалы, увеличьте buffer-opacity; отдельный цвет задаёт buffer-color.
Свойство stream добавляет пунктирную анимацию от края буфера до конца шкалы — сигнал, что данные продолжают поступать. Границу потока задаёт buffer-value, фон при этом скрывается.
Высота
Свойство height задаёт высоту шкалы в пикселях. По умолчанию — 4.
Скругление
Свойство rounded-bar скругляет ведущий край индикатора. Начало остаётся прямым — шкала читается как непрерывная от нулевой отметки.
Цвета
Свойство color красит индикатор и — пока не заданы отдельные цвета — буфер и фон. Свой цвет фона задаёт bg-color, а прозрачность слоёв — opacity для индикатора и bg-opacity для фона.
Полосы
Свойство striped накладывает на индикатор бегущие диагональные полосы — они оживляют долгие операции с известным ходом.
Сегменты
Свойство chunk-count делит шкалу на равные сегменты — например, по числу шагов, — а chunk-width строит сегменты фиксированной ширины. Зазор между ними задаёт chunk-gap. Индикатор заполняет сегменты целиком: значение прилипает к границе ближайшего сегмента.
Вариант variant="split" не режет шкалу на части, а отделяет заполненную часть от остатка одним зазором — индикатор и фон читаются как два самостоятельных отрезка.
Контент
Слот default выводит контент по центру шкалы и получает слот-пропы value и buffer — нормализованные проценты. Увеличьте height, чтобы контент поместился.
Рекомендации
Сценарии использования
Загрузка файла
Кнопка запускает загрузку: шкала растёт по мере поступления данных, подпись над ней показывает файл и процент. Цвет green поддерживает позитивный сценарий, а по завершении кнопка предлагает повторить загрузку.
Шаги мастера
chunk-count по числу шагов превращает шкалу в индикатор мастера: заполненные сегменты — пройденные шаги, полупрозрачные — оставшиеся. Значение — доля текущего шага от общего числа.
Перемотка видео
Свойство clickable превращает шкалу в контрол: клик записывает новое значение в v-model. Буфер показывает подгруженный фрагмент, stream — что загрузка продолжается, а подписи считают время из процентов.
Обновление данных в карточке
Свойство absolute прижимает шкалу к верхней грани контейнера с position: relative — индикатор не расталкивает контент. Проп active прячет шкалу, плавно сводя высоту к нулю, а indeterminate избавляет от необходимости считать прогресс фоновой операции.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
absolute | boolean | undefined | — | Абсолютное позиционирование компонента |
active | boolean | undefined | true | Управление отображением активного состояния прогресс-бара |
activeColor | string | undefined | — | Цвет компонента, когда он находится в активном состоянии |
baseColor | string | undefined | — | Цвет неактивного компонента |
bgColor | string | undefined | — | Цвет фона компонента |
bgOpacity | string | number | undefined | — | Прозрачность фона прогресс-бара |
bufferColor | string | undefined | — | Цвет буферной части прогресс-бара |
bufferOpacity | string | number | undefined | — | Прозрачность буферной части прогресс-бара |
bufferValue | string | number | undefined | 0 | Значение буфера прогресса |
chunkCount | string | number | undefined | null | Количество сегментов, на которые разбивается прогресс-бар |
chunkGap | string | number | undefined | 4 | Расстояние между сегментами прогресс-бара |
chunkWidth | string | number | undefined | null | Ширина одного сегмента прогресс-бара |
clickable | boolean | undefined | — | Делает прогресс-бар кликабельным |
color | string | undefined | — | Цвет компонента |
height | string | number | undefined | 4 | Высота прогресс-бара |
indeterminate | boolean | undefined | — | Неопределенное состояние прогресса без фиксированного значения |
location | Anchor | null | undefined | 'top' | Позиционирование элемента относительно его контейнера. Например, "top left", "center", "bottom right" и т.д. |
max | string | number | undefined | 100 | Максимальное значение прогресса |
modelValue | string | number | undefined | 0 | Текущее значение прогресса |
opacity | string | number | undefined | — | Прозрачность основного индикатора прогресса |
reverse | boolean | undefined | — | Обратное направление заполнения шкалы прогресса |
roundedBar | boolean | undefined | — | Скруглять индикатор прогресса |
stream | boolean | undefined | — | Отображать потоковую анимацию поверх индикатора прогресса |
striped | boolean | undefined | — | Отображать полосы на индикаторе прогресса |
tag | string | JSXComponent<any> | undefined | 'div' | Пользовательский HTML-тег для отображения |
textColor | string | undefined | — | Цвет текста компонента |
theme | string | undefined | — | Тема компонента |
variant | "split" | undefined | — | Вариант отображения сегментов прогресс-бара |
События
| Имя | Тип | Описание |
|---|---|---|
update:modelValue | [value: number] | Сработало при изменении значения прогресса — по клику по шкале в режиме clickable |
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | { value: number; buffer: number; } | Контент поверх полосы — например подпись с процентом. В параметрах — текущее значение и значение буфера |