Степпер
С чего начать
Подключите модуль:
import { QStepperModule } from '@diasoft/qpalette-visual';Встройте компонент в верстку c помощью тегаq-stepper. Шаги задаются внутри тегаq-stepperс помощью теговq-step, для наименования шага используетсяlabel. Кастомный контент прописывается внутри тегаq-step:
***content 1***
***content 2***
***content 3***
Настройка степпера
Fluid
Растягивает степпер на всю длину родительского блока:
***content 1***
***content 2***
***content 3***
***content 4***
Progress
Растягивает степпер на всю длину родительского блока и добавляет прогрессбар:
***content 1***
***content 2***
***content 3***
***content 4***
Stacked
Прижимает степпер к левому краю и заполняет столько места, сколько необходимо:
***content 1***
***content 2***
***content 3***
***content 4***
Vertical
Задает степперу вертикальную ориентацию:
***content 1***
***content 2***
***content 3***
***content 4***
Reversed
Горизонтальный развернутый:
***content 1***
***content 2***
***content 3***
***content 4***
Вертикальный развернутый:
***content 1***
***content 2***
***content 3***
***content 4***
Настройка шагов
Default
Позволяет свободную кликать на любой шаг
***content 1***
***content 2***
***content 3***
***content 4***
Linear
Степпер становится линейным и следующий шаг откроется только по кнопке "Далее":
***content 1***
Далее
***content 2***
Назад Далее
***content 3***
Назад Далее
***content 4***
Назад Сброс
<q-stepper #linearStepper [type]="'progress'" stepsType="linear">
  <q-step label="Step 1">
    <p>***content 1***</p>
    <div class="q-flex">
      <button qButton (click)="goNext(linearStepper)">Далее</button>
    </div>
  </q-step>
 
  <q-step label="Step 2">
    <p>***content 2***</p>
    <div class="q-flex q-flex--jc-space-between">
      <button (click)="goPrev(linearStepper)" qButton>Назад</button>
      <button (click)="goNext(linearStepper)" qButton>Далее</button>
    </div>
  </q-step>
 
  <q-step label="Step 3">
    <p>***content 3***</p>
    <div class="q-flex q-flex--jc-space-between">
      <button (click)="goPrev(linearStepper)" qButton>Назад</button>
      <button (click)="goNext(linearStepper)" qButton>Далее</button>
    </div>
  </q-step>
 
  <q-step label="Step 4">
    <p>***content 4***</p>
    <div class="q-flex q-flex--jc-space-between">
      <button (click)="goPrev(linearStepper)" qButton>Назад</button>
      <button (click)="linearStepper.resetStepper()" color="danger" qButton>Сброс</button>
    </div>
  </q-step>
</q-stepper>Disabled
Для установки состояния disabled добавьте в тег нужного Вам шага свойствоdisabled:
***content 1***
***content 2***
***content 3***
***content 4***
Ошибка
Для отображения ошибки в шаге добавьте в тег нужного Вам шага свойствоerror:
***content 1***
***content 2***
***content 3***
***content 4***
Кастомные иконки
Для установки кастомной иконки в шаг добавьте в тег нужного Вам шага свойствоicon:
***content 1***
***content 2***
***content 3***
***content 4***
Степпер с роутингом
Для использования степпера с роутингом достаточно передать свойствуrouterModelмассив с данными каждого шага.
<q-stepper [routerModel]="steps">
  <router-outlet></router-outlet>
</q-stepper>Настройка шагов
Для настройки степпера из любого шага необходимо:
- 
Указать id инпуту stepperId
- 
В компонент шага подключить сервис QStepperService.
 Для управления состоянием шагов, а так же передачи данных между ними, методуsetStepperState()нужно передать id степпера и объект, где ключём является индекс шага, а значением - объект с настройками.Также для дополнительной кастомизации шагов вне зависимости от их последовательности прохождения, достаточно в инпут progressTypeстеппера передать значение 'step'.
* Данный подход можно использовать и в обычном степпере.
Роутинг
Осуществлять переход по шагам возможно двумя способами:
- 
Стандартным - кнопки переключения находятся в компоненте, где используется степпер. 
 Данный способ описан выше
- 
Кастомным - кнопки переключения находятся внутри компонента шага. 
 В этом варианте будет использоваться объектRouter, в который нужно передать роутинг доступного для перехода шага. Для этого необходимо у сервисаQStepperServiceвызвать методgetProcesSteps('myStepperId'), который вернёт данные о следующем, предыдущем и активном шаге.
export class Step1Component implements OnInit {
 
  constructor(
    private router: Router,
    private qStepperService: QStepperService
  ) { }
 
  next(): void {
    const nextStep = this.qStepperService.getProcessSteps('myStepperId').nextStep.routerLink;
    this.router.navigate([`/development/qpalette-components/stepper/${nextStep}`]);
  }
 
  prev(): void {
    const prevStep = this.qStepperService.getProcessSteps('myStepperId').prevStep.routerLink;
    this.router.navigate([`/development/qpalette-components/stepper/${prevStep}`]);
  }
}Пример
<q-stepper
  progressType="step"
  stepperId="myStepperId"
  type="progress"
  stepsType="default"
  orientation="horizontal"
  [routerModel]="steps"
>
  <router-outlet></router-outlet>
</q-stepper>Свойства Stepper
| Name | Type | Default | Description | 
|---|---|---|---|
| type | fluid<br>progress<br>stacked | fluid | fluid: растягивает степпер на всю длину родительского блока;<br>progress: растягивает степпер на всю длину родительского блока и добавляет прогрессбар;<br>stacked: прижимает степпер к левому краю и заполняет столько места, сколько необходимо. | 
| stepsType | linear<br>default | default | default: позволяет свободную кликать на любой шаг;<br>linear: степпер становится линейным и следующий шаг откроется только по кнопке "Далее".<br> | 
| orientation | horizontal<br>vertical | null | vertical: задает степперу вертикальную ориентацию. | 
| size | default<br>small | default | Определяет размер степпера | 
| reversed | boolean | false | Меняет местами степпер с его контентом | 
| progressType | linear<br>step | linear | Устанавливает успешно пройденные шаги<br>linear - все предыдущие шаги будут указаны как пройденные<br>step - у каждого шага свой независимый статус (необходимо использовать совместно с QStepperService.setStepperState) | 
| stepperId | string<br>undefined | undefined | Устанавливает индентификатор у степпера. Необходимо при использовании QStepperService! | 
| routerModel | Step[]<br>undefined | undefined | Модифицирует в степпер с роутингом. | 
| styleClass | string<br>undefined | undefined | Добавляет кастомные стили | 
| (stateChange) | activeIndex: number; activeStep: QStepComponent; | Посылает событие при изменении активного шага | 
Свойства Step
| Name | Type | Default | Description | 
|---|---|---|---|
| label | string<br>undefined | undefined | Подпись шага степпера | 
| error | boolean | false | Отмечает ошибку в шаге. | 
| disabled | boolean | false | Устанавливает состояние disabled. | 
| icon | string<br>undefined | undefined | Устанавливает кастомную иконку. | 
| routerLink | string<br>undefined | undefined | Устанавливает роут для шага. | 
| systemStepName | string<br>undefined | undefined | Необходимо, если степпер используется совместно с FormFlow. Данное поле должно соответсвовать системному наименованию шага из FormFlow. | 
Методы QStepperService
| Name | Parameters | Description | 
|---|---|---|
| onStepperStateChanges | stepperId: string | Возвращает Observable состояний шагов степпера | 
| getStepperState | stepperId: string | Позволяет получить состояние шагов | 
| setStepperState | stepperId: string<br>state: [stepIndex: number]: stepTune | Устанавливает состояния шагу/шагам и сохраняет данные | 
| resetState | stepperId: string | Сбрасывает настройки шагов | 
| getProcessSteps | stepperId: string | Позволяет получить данные о активном шаге, а также о доступном следующем и предыдушем шагах | 
Настройки для кастомизации шагов (stepTune)
| Name | Type | Description | 
|---|---|---|
| data | any | Хранит данные шага. | 
| completed | boolean | Отмечает шаг как успешно пройденный. | 
| error | boolean | Отмечает ошибку в шаге. | 
| disabled | boolean | Устанавливает состояние disabled. | 
| icon | string | Устанавливает кастомную иконку. |