Компонент Steps предназначен для отображения последовательности шагов в пользовательском интерфейсе. Он широко используется для пошаговых форм, прогресс-бара задач или любого сценария, где требуется визуализировать этапы процесса. В Naive UI Steps реализован с высокой гибкостью и поддерживает кастомизацию внешнего вида и поведения.
Компонент состоит из двух ключевых элементов:
n-steps – контейнер, определяющий
общую последовательность шагов.n-step – отдельный шаг внутри
последовательности.Простейший пример использования:
<template>
<n-steps :current="1">
<n-step title="Выбор продукта" description="Выберите нужный товар" />
<n-step title="Оплата" description="Введите платежные данные" />
<n-step title="Подтверждение" description="Проверьте детали заказа" />
</n-steps>
</template>
<script setup>
import { NSteps, NStep } from 'naive-ui'
</script>
Ключевые моменты:
current определяет текущий
активный шаг.title и
description, которые отображаются
соответственно как заголовок и подпись шага.Вертикальная и горизонтальная ориентация
Компонент поддерживает горизонтальное (по умолчанию) и вертикальное расположение шагов:
<n-steps direction="vertical" :current="2">
<n-step title="Шаг 1" />
<n-step title="Шаг 2" />
<n-step title="Шаг 3" />
</n-steps>
direction="vertical" – вертикальная
последовательность.direction="horizontal" –
горизонтальная (по умолчанию).Стиль прогресса
Можно изменить отображение прогресса:
status для каждого шага:
'wait' | 'process' | 'finish' | 'error'.<n-steps>
<n-step title="Шаг 1" status="finish" />
<n-step title="Шаг 2" status="process" />
<n-step title="Шаг 3" status="wait" />
</n-steps>
finish – шаг завершён.process – текущий шаг.wait – ожидающий шаг.error – шаг с ошибкой.Индикатор шага можно настроить с помощью слота
icon:
<n-steps :current="1">
<n-step title="Выбор продукта">
<template #icon>
<CheckIcon />
</template>
</n-step>
<n-step title="Оплата">
<template #icon>
<CreditCardIcon />
</template>
</n-step>
</n-steps>
icon позволяет использовать SVG,
компоненты или любые другие элементы.Шаги часто формируются на основе массива данных:
<script setup>
import { ref } from 'vue'
import { NSteps, NStep } from 'naive-ui'
const steps = ref([
{ title: 'Выбор продукта', description: 'Выберите товар' },
{ title: 'Оплата', description: 'Введите данные' },
{ title: 'Подтверждение', description: 'Проверьте заказ' }
])
const currentStep = ref(1)
</script>
<template>
<n-steps :current="currentStep">
<n-step v-for="(step, index) in steps" :key="index" :title="step.title" :description="step.description" />
</n-steps>
</template>
v-for позволяет
динамически создавать шаги.currentStep легко обновлять
при переходе между этапами.Для интерактивных форм удобно управлять шагами через события и методы:
<script setup>
import { ref } from 'vue'
const currentStep = ref(0)
function nextStep() {
if (currentStep.value < 2) currentStep.value++
}
function prevStep() {
if (currentStep.value > 0) currentStep.value--
}
</script>
<template>
<n-steps :current="currentStep">
<n-step title="Шаг 1" />
<n-step title="Шаг 2" />
<n-step title="Шаг 3" />
</n-steps>
<button @click="prevStep">Назад</button>
<button @click="nextStep">Вперед</button>
</template>
small, medium,
large через атрибут
size.--n-bezier и
--n-font-size.status="error" для
визуального отображения ошибок на конкретном шаге.icon позволяет создать уникальный
дизайн.