Компонент устарел: новый код на нём писать не нужно. Он продолжает работать во всей ветке 4.x и в dev-консоли выводит
[CDS UPGRADE], а удалим его в 5.0. Ход процесса без навигации по шагам показывает CdsSteps — без пропаinteractiveшаги некликабельны, а шапка безitemsработает как трекер статуса (см. сценарий «Статус заявки»). Учтите, что вид отличается: уCdsStagesэто стрелочная лента, уCdsSteps— индикаторы с линией прогресса. Для переключения равнозначных разделов — CdsTabs.
Анатомия
Шкала — это ряд этапов: у каждого есть название, а стрелки-разделители между соседними этапами задают направление процесса. Цвет этапа кодирует состояние: нейтральный — этап впереди, акцентный — текущий, зелёный — пройден, красный — ошибка.
Вариации
Этапы
Передайте в items массив объектов: название и значение этапа читаются по ключам item-title и item-value (по умолчанию — title и value). Пока current не задан, все этапы нейтральные — процесс ещё не начался.
Текущий этап
current принимает значение активного этапа: он подсвечивается акцентным цветом, а этапы слева от него отмечаются пройденными.
Ошибка
Ошибка задаётся в данных этапа — props: { error: true } у элемента items. Этап краснеет, когда процесс до него дошёл: он текущий или уже пройден.
Завершение процесса
Проп finished отмечает пройденными все этапы сразу — значение current при этом не важно.
Рекомендации
Сценарии использования
Продвижение заказа
Значение current приходит из данных и меняется по мере обработки заказа. Когда пройден последний этап, включите finished — шкала целиком станет зелёной.
Отклонение на проверке
Статус объявления хранится одной строкой, а items, current и finished вычисляются из него. При отклонении этап «Проверка» получает props.error и краснеет — пользователь сразу видит, где процесс остановился.
Статусы в списке
Шкала компактна и не перехватывает клики, поэтому её удобно повторять в каждой строке списка или таблицы: ширину задаёт утилити-класс, а состояние строки — свои current, finished и ошибка.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
current | string | number | null | undefined | null | Текущий этап |
finished | boolean | undefined | — | Завершены все этапы |
itemChildren | SelectItemKey | 'children' | Свойство объекта, содержащее дочерние элементы, либо функция для их получения |
itemProps | SelectItemKey | 'props' | Свойство объекта, содержащее пропсы для элемента, либо функция для их получения |
items | any[] | undefined | [] | Массив элементов для отображения |
itemTitle | SelectItemKey | 'title' | Свойство объекта, используемое как заголовок элемента, либо функция для его получения |
itemType | SelectItemKey | 'type' | Свойство объекта, определяющее тип элемента (item, divider, subheader), либо функция для его получения |
itemValue | SelectItemKey | 'value' | Свойство объекта, используемое как значение элемента, либо функция для его получения |
returnObject | boolean | undefined | — | Возвращать в значении модели объект вместо массива |
theme | string | undefined | — | Тема компонента |
valueComparator | ValueComparator | undefined | — | Функция сравнения значений элементов для определения выбранного состояния |
Exposed
| Имя | Тип | Описание |
|---|---|---|
isCurrent | (idx: number) => boolean | Проверяет, является ли этап с указанным индексом текущим. |
isFinished | boolean | Пройдены ли все этапы. |