Для прогресса в виде горизонтальной шкалы возьмите CdsProgressBar, а чтобы затемнить контейнер на время загрузки — CdsOverlay.
Вариации
Значение
Свойство model-value — текущий прогресс в процентах, от 0 до 100. Изменение значения анимируется плавным переходом дуги.
Свойство rotate поворачивает начальную точку дуги на указанное число градусов. По умолчанию прогресс растёт от «12 часов» по часовой стрелке.
Неопределённый прогресс
Свойство indeterminate включает бесконечную анимацию — используйте её, когда ход операции неизвестен. Значение disable-shrink оставляет только вращение без пульсации дуги: такая анимация проще и не нагружает основной поток. Она же включается автоматически для пользователей с настройкой prefers-reduced-motion.
Размеры
Свойство size задаёт диаметр: от xs до xl или число в пикселях. Размер по умолчанию — md.
Контур
Свойство width задаёт толщину контура в пикселях независимо от диаметра.
Свойство rounded скругляет концы дуги.
Цвета
Свойство color красит дугу прогресса, bg-color — фоновое кольцо под ней. Оба принимают токены цвета дизайн-системы.
Контент
Слот default выводит контент в центре кольца и получает текущее значение через слот-проп value — удобно показать процент рядом с дугой.
Анимация появления
Свойство reveal анимирует дугу от нуля до текущего значения при появлении компонента. Длительность настраивается объектом: :reveal="{ duration: 1500 }".
Рекомендации
Сценарии использования
Загрузка файла
Прогресс загрузки виден в центре кольца через слот default, а по завершении процент сменяется иконкой успеха. Свойство rounded смягчает дугу, color поддерживает позитивный сценарий.
Заполнение лимита
Кольцо показывает не только процесс, но и статичную величину — например, занятое место в хранилище. Вычисляемый color переключает индикатор с зелёного на жёлтый и красный по мере приближения к лимиту.
Фоновая операция
Компактный indeterminate-индикатор размера xs встаёт в строку с текстом и сообщает, что запущенная операция ещё идёт. Подпись рядом объясняет, чего ждать, — без неё вращающееся кольцо ни о чём не говорит.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
bgColor | string | undefined | — | Цвет фона загрузчика |
color | string | undefined | — | Цвет загрузчика |
indeterminate | boolean | "disable-shrink" | undefined | — | Постоянно отображается анимация; использовать, если ход загрузки неизвестен. Если задать строку «disable-shrink», будет использоваться более простая анимация, которая не запускается в основном потоке |
modelValue | string | number | undefined | 0 | Значение в процентах текущего прогресса загрузки |
reveal | boolean | { duration?: number | undefined; } | undefined | false | Анимирует индикатор от нуля до текущего значения при появлении компонента. Объект { duration } задаёт длительность анимации в миллисекундах |
rotate | string | number | undefined | 0 | Поворачивает начальную точку окружности на указанное количество градусов |
rounded | boolean | undefined | — | Скругляет концы дуги прогресса |
size | number | "xs" | "sm" | "md" | "lg" | "xl" | undefined | 'md' | Размер компонента |
tag | string | JSXComponent<any> | undefined | 'div' | Пользовательский HTML-тег для отображения |
theme | string | undefined | — | Тема компонента |
width | string | number | undefined | 4 | Задает толщину контура круга в пикселях |
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | { value: number; } | Слот по умолчанию. Содержит в себе значение процесса индикатора загрузки. |