import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
import { OrbitWizardDirective, type OrbitWizardStepDef } from '@ng-orbit/wizard';
import { OrbitWizardStepFormSyncDirective } from '@ng-orbit/wizard-kit';
@Component({
standalone: true,
imports: [ReactiveFormsModule, OrbitWizardDirective, OrbitWizardStepFormSyncDirective],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<section orbitWizard #wizard="orbitWizard" [steps]="steps" (completed)="submit()">
<form
[formGroup]="accountForm"
[orbitWizardStepFormSync]="wizard"
orbitWizardStepId="account"
[orbitWizardStepForm]="accountForm"
>
<input type="text" formControlName="fullName" />
</form>
<button type="button" [disabled]="!wizard.canNext()" (click)="wizard.next()">
{{ wizard.isLast() ? 'Finish' : 'Next' }}
</button>
</section>
`
})
export class SignupWizardComponent {
constructor(private readonly formBuilder: FormBuilder) {}
readonly steps: readonly OrbitWizardStepDef[] = [
{ id: 'account', title: 'Account' },
{ id: 'summary', title: 'Summary', kind: 'summary' }
];
readonly accountForm = this.formBuilder.nonNullable.group({
fullName: ['', [Validators.required, Validators.minLength(2)]]
});
submit(): void {
}
}