QStepper — это компонент Quasar для организации
пошаговых интерфейсов, часто используемый для создания многошаговых
форм, мастер-страниц или интерактивных процессов. Он позволяет визуально
разделить процесс на логические шаги, управлять прогрессом пользователя
и обеспечивать удобную навигацию между шагами.
Базовая структура QStepper включает несколько ключевых компонентов:
<q-stepper> — контейнер для всех
шагов. Управляет текущим активным шагом через v-model.<q-step> — отдельный шаг с
заголовком, описанием и номером.<q-stepper-navigation> — панель
навигации между шагами, отображает кнопки «Назад», «Далее» и
прогресс.Пример минимальной структуры:
<q-stepper v-model="step" animated>
<q-step name="1" title="Информация" icon="person">
<div>Форма ввода личной информации</div>
</q-step>
<q-step name="2" title="Подтверждение" icon="check">
<div>Проверка данных перед отправкой</div>
</q-step>
<q-step name="3" title="Готово" icon="done_all">
<div>Форма успешно отправлена</div>
</q-step>
<q-stepper-navigation>
<q-btn flat label="Назад" @click="prevStep" />
<q-btn flat label="Далее" @click="nextStep" />
</q-stepper-navigation>
</q-stepper>
Переключение между шагами осуществляется через v-model,
привязанный к переменной состояния, например step.
export default {
data() {
return {
step: 1
};
},
methods: {
nextStep() {
if (this.step < 3) this.step++;
},
prevStep() {
if (this.step > 1) this.step--;
}
}
};
Для динамических форм можно использовать условные проверки и валидацию на каждом шаге перед переходом к следующему.
validateStep1() {
if (!this.form.name) {
this.$q.notify({ type: 'negative', message: 'Имя обязательно' });
return false;
}
return true;
}
Каждый шаг можно настраивать с помощью свойств title,
subtitle, icon, done-icon и
error-icon.
title — основной заголовок шага.subtitle — дополнительная информация
под заголовком.icon — иконка шага в панели
навигации.done-icon — иконка, отображаемая после
завершения шага.error-icon — иконка для шага с
ошибкой.<q-step
name="2"
title="Контактные данные"
subtitle="Электронная почта и телефон"
icon="email"
done-icon="check_circle"
error-icon="warning">
<div>Форма контактов</div>
</q-step>
С помощью атрибута animated QStepper плавно анимирует
переход между шагами. Для кастомного оформления можно использовать слоты
и классы:
<q-stepper v-model="step" animated class="bg-grey-1 text-black">
<q-step name="1">
<template v-slot:title>
<span class="text-h6">Личная информация</span>
</template>
</q-step>
</q-stepper>
QStepper идеально подходит для форм с пошаговой
валидацией. Например, каждая секция формы может быть отдельным шагом, а
переход к следующему шагу будет разрешён только при успешной валидации
текущего.
<q-step name="1" title="Регистрация">
<q-input filled v-model="form.name" label="Имя" />
<q-input filled v-model="form.email" label="Email" />
</q-step>
<q-step name="2" title="Пароль">
<q-input type="password" filled v-model="form.password" label="Пароль" />
</q-step>
Валидация перед переходом:
nextStep() {
if (this.step === 1 && !this.validateStep1()) return;
if (this.step === 2 && !this.validateStep2()) return;
this.step++;
}
По умолчанию шаги отображаются горизонтально, но можно переключить на
вертикальное отображение через vertical:
<q-stepper v-model="step" vertical>
<q-step name="1" title="Шаг 1" />
<q-step name="2" title="Шаг 2" />
</q-stepper>
Это удобно для длинных форм с большим количеством шагов или на мобильных устройствах.
QStepper поддерживает события:
@input — вызывается при смене
шага.@before-change — можно отменить
переход к следующему шагу, вернув false.Слоты позволяют полностью кастомизировать отображение шагов и навигации:
<q-stepper v-model="step">
<q-step name="1">
<template v-slot:default>
<div>Контент первого шага</div>
</template>
</q-step>
</q-stepper>
data и генерация <q-step> через
v-for.QLinearProgress для визуализации выполнения всех
шагов.<q-linear-progress
:value="step / totalSteps"
color="primary"
track-color="grey-3"
/>
<q-stepper> с v-model<q-step> с контентом форм и слотами<q-stepper-navigation> для кнопок
«Назад/Далее»Эта структура позволяет создавать удобные и наглядные пошаговые формы, полностью контролируемые через состояние Vue и возможности Quasar.