ng-hub-ui-stepper 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/next-button.directive.mjs +19 -5
- package/esm2022/lib/previous-button.directive.mjs +19 -5
- package/esm2022/lib/stepper/stepper.component.mjs +28 -19
- package/esm2022/lib/submit-button.directive.mjs +19 -5
- package/fesm2022/ng-hub-ui-stepper.mjs +78 -27
- package/fesm2022/ng-hub-ui-stepper.mjs.map +1 -1
- package/lib/next-button.directive.d.ts +4 -1
- package/lib/previous-button.directive.d.ts +4 -1
- package/lib/stepper/stepper.component.d.ts +18 -8
- package/lib/submit-button.directive.d.ts +4 -1
- package/ng-hub-ui-stepper-1.3.0.tgz +0 -0
- package/package.json +1 -1
- package/ng-hub-ui-stepper-1.2.0.tgz +0 -0
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { Directive, HostListener, inject } from '@angular/core';
|
|
1
|
+
import { Directive, effect, HostBinding, HostListener, inject, Injector } from '@angular/core';
|
|
2
2
|
import { StepperComponent } from './stepper/stepper.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class NextButtonDirective {
|
|
5
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
this.#injector = inject(Injector);
|
|
7
|
+
this.#stepper = inject(StepperComponent);
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
}
|
|
10
|
+
#injector;
|
|
11
|
+
#stepper;
|
|
6
12
|
onClick() {
|
|
7
13
|
this.#stepper.goToNext();
|
|
8
14
|
}
|
|
15
|
+
ngAfterContentInit() {
|
|
16
|
+
effect(() => {
|
|
17
|
+
this.disabled = !this.#stepper.canNavigateTo(this.#stepper.currentIndex$() + 1);
|
|
18
|
+
}, { injector: this.#injector });
|
|
19
|
+
}
|
|
9
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NextButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NextButtonDirective, isStandalone: true, selector: "button[nextButton], button[continueButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--next" }, ngImport: i0 }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NextButtonDirective, isStandalone: true, selector: "button[nextButton], button[continueButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--next" }, ngImport: i0 }); }
|
|
11
22
|
}
|
|
12
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NextButtonDirective, decorators: [{
|
|
13
24
|
type: Directive,
|
|
@@ -18,8 +29,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
18
29
|
class: 'stepper__button stepper__button--next'
|
|
19
30
|
}
|
|
20
31
|
}]
|
|
21
|
-
}], propDecorators: {
|
|
32
|
+
}], propDecorators: { disabled: [{
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['disabled']
|
|
35
|
+
}], onClick: [{
|
|
22
36
|
type: HostListener,
|
|
23
37
|
args: ['click']
|
|
24
38
|
}] } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RlcHBlci9zcmMvbGliL25leHQtYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULE1BQU0sRUFDTixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBUy9ELE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVYLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FnQjFDO0lBbkJBLFNBQVMsQ0FBb0I7SUFDN0IsUUFBUSxDQUE0QjtJQUliLE9BQU87UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2pCLE1BQU0sQ0FDTCxHQUFHLEVBQUU7WUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUNqQyxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FDNUIsQ0FBQztJQUNILENBQUM7OEdBbkJXLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSw0Q0FBNEM7b0JBQ3RELFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLHVDQUF1QztxQkFDOUM7aUJBQ0Q7OEJBS3lCLFFBQVE7c0JBQWhDLFdBQVc7dUJBQUMsVUFBVTtnQkFFQSxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlckNvbnRlbnRJbml0LFxuXHREaXJlY3RpdmUsXG5cdGVmZmVjdCxcblx0SG9zdEJpbmRpbmcsXG5cdEhvc3RMaXN0ZW5lcixcblx0aW5qZWN0LFxuXHRJbmplY3RvclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0ZXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdidXR0b25bbmV4dEJ1dHRvbl0sIGJ1dHRvbltjb250aW51ZUJ1dHRvbl0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRob3N0OiB7XG5cdFx0Y2xhc3M6ICdzdGVwcGVyX19idXR0b24gc3RlcHBlcl9fYnV0dG9uLS1uZXh0J1xuXHR9XG59KVxuZXhwb3J0IGNsYXNzIE5leHRCdXR0b25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblx0I2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0I3N0ZXBwZXIgPSBpbmplY3QoU3RlcHBlckNvbXBvbmVudCk7XG5cblx0QEhvc3RCaW5kaW5nKCdkaXNhYmxlZCcpIGRpc2FibGVkID0gZmFsc2U7XG5cblx0QEhvc3RMaXN0ZW5lcignY2xpY2snKSBvbkNsaWNrKCkge1xuXHRcdHRoaXMuI3N0ZXBwZXIuZ29Ub05leHQoKTtcblx0fVxuXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZWQgPSAhdGhpcy4jc3RlcHBlci5jYW5OYXZpZ2F0ZVRvKFxuXHRcdFx0XHRcdHRoaXMuI3N0ZXBwZXIuY3VycmVudEluZGV4JCgpICsgMVxuXHRcdFx0XHQpO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuI2luamVjdG9yIH1cblx0XHQpO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { Directive, HostListener, inject } from '@angular/core';
|
|
1
|
+
import { Directive, effect, HostBinding, HostListener, inject, Injector } from '@angular/core';
|
|
2
2
|
import { StepperComponent } from './stepper/stepper.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class PreviousButtonDirective {
|
|
5
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
this.#injector = inject(Injector);
|
|
7
|
+
this.#stepper = inject(StepperComponent);
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
}
|
|
10
|
+
#injector;
|
|
11
|
+
#stepper;
|
|
6
12
|
onClick() {
|
|
7
13
|
this.#stepper.goToPrevious();
|
|
8
14
|
}
|
|
15
|
+
ngAfterContentInit() {
|
|
16
|
+
effect(() => {
|
|
17
|
+
this.disabled = !this.#stepper.canNavigateTo(this.#stepper.currentIndex$() - 1);
|
|
18
|
+
}, { injector: this.#injector });
|
|
19
|
+
}
|
|
9
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PreviousButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: PreviousButtonDirective, isStandalone: true, selector: "button[previousButton], button[backButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--back" }, ngImport: i0 }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: PreviousButtonDirective, isStandalone: true, selector: "button[previousButton], button[backButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--back" }, ngImport: i0 }); }
|
|
11
22
|
}
|
|
12
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PreviousButtonDirective, decorators: [{
|
|
13
24
|
type: Directive,
|
|
@@ -18,8 +29,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
18
29
|
class: 'stepper__button stepper__button--back'
|
|
19
30
|
}
|
|
20
31
|
}]
|
|
21
|
-
}], propDecorators: {
|
|
32
|
+
}], propDecorators: { disabled: [{
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['disabled']
|
|
35
|
+
}], onClick: [{
|
|
22
36
|
type: HostListener,
|
|
23
37
|
args: ['click']
|
|
24
38
|
}] } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0ZXBwZXIvc3JjL2xpYi9wcmV2aW91cy1idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFTL0QsTUFBTSxPQUFPLHVCQUF1QjtJQVBwQztRQVFDLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRVgsYUFBUSxHQUFHLEtBQUssQ0FBQztLQWdCMUM7SUFuQkEsU0FBUyxDQUFvQjtJQUM3QixRQUFRLENBQTRCO0lBSWIsT0FBTztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0I7UUFDakIsTUFBTSxDQUNMLEdBQUcsRUFBRTtZQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQ2pDLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUM1QixDQUFDO0lBQ0gsQ0FBQzs4R0FuQlcsdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBUG5DLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDRDQUE0QztvQkFDdEQsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDTCxLQUFLLEVBQUUsdUNBQXVDO3FCQUM5QztpQkFDRDs4QkFLeUIsUUFBUTtzQkFBaEMsV0FBVzt1QkFBQyxVQUFVO2dCQUVBLE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyQ29udGVudEluaXQsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRIb3N0QmluZGluZyxcblx0SG9zdExpc3RlbmVyLFxuXHRpbmplY3QsXG5cdEluamVjdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4vc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2J1dHRvbltwcmV2aW91c0J1dHRvbl0sIGJ1dHRvbltiYWNrQnV0dG9uXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3Q6IHtcblx0XHRjbGFzczogJ3N0ZXBwZXJfX2J1dHRvbiBzdGVwcGVyX19idXR0b24tLWJhY2snXG5cdH1cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlvdXNCdXR0b25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcblx0I2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0I3N0ZXBwZXIgPSBpbmplY3QoU3RlcHBlckNvbXBvbmVudCk7XG5cblx0QEhvc3RCaW5kaW5nKCdkaXNhYmxlZCcpIGRpc2FibGVkID0gZmFsc2U7XG5cblx0QEhvc3RMaXN0ZW5lcignY2xpY2snKSBvbkNsaWNrKCkge1xuXHRcdHRoaXMuI3N0ZXBwZXIuZ29Ub1ByZXZpb3VzKCk7XG5cdH1cblxuXHRuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gIXRoaXMuI3N0ZXBwZXIuY2FuTmF2aWdhdGVUbyhcblx0XHRcdFx0XHR0aGlzLiNzdGVwcGVyLmN1cnJlbnRJbmRleCQoKSAtIDFcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciB9XG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, Output, TemplateRef } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, Output, signal, TemplateRef } from '@angular/core';
|
|
2
2
|
import { NextButtonDirective } from '../next-button.directive';
|
|
3
3
|
import { PreviousButtonDirective } from '../previous-button.directive';
|
|
4
4
|
import { StepComponent } from '../step/step.component';
|
|
@@ -15,7 +15,7 @@ export class StepperComponent {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
this.#cdr = inject(ChangeDetectorRef);
|
|
17
17
|
/** The index of the current active step */
|
|
18
|
-
this.currentIndex = 0;
|
|
18
|
+
this.currentIndex$ = signal(0);
|
|
19
19
|
/** Label for the back button */
|
|
20
20
|
this.backLabel = 'Back';
|
|
21
21
|
/** Label for the continue button */
|
|
@@ -31,6 +31,9 @@ export class StepperComponent {
|
|
|
31
31
|
this.animationsEnabled = true;
|
|
32
32
|
}
|
|
33
33
|
#cdr;
|
|
34
|
+
get currentIndex() {
|
|
35
|
+
return this.currentIndex$();
|
|
36
|
+
}
|
|
34
37
|
/** Get the current active step */
|
|
35
38
|
get currentStep() {
|
|
36
39
|
return this.steps?.toArray()[this.currentIndex] ?? null;
|
|
@@ -63,8 +66,8 @@ export class StepperComponent {
|
|
|
63
66
|
* @param index The index of the step to navigate to
|
|
64
67
|
*/
|
|
65
68
|
goTo(index) {
|
|
66
|
-
if (this.
|
|
67
|
-
this.currentIndex
|
|
69
|
+
if (this.isStepIndexInBounds(index)) {
|
|
70
|
+
this.currentIndex$.set(index);
|
|
68
71
|
this.#cdr.detectChanges();
|
|
69
72
|
if (index > this.currentIndex) {
|
|
70
73
|
this.nextStep.emit(index);
|
|
@@ -77,21 +80,12 @@ export class StepperComponent {
|
|
|
77
80
|
console.error(`Invalid step index: ${index}`);
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Check if it's possible to navigate to the next step
|
|
82
|
-
*/
|
|
83
|
-
canGoNext() {
|
|
84
|
-
const nextIndex = this.currentIndex + 1;
|
|
85
|
-
return (this.isValidStepIndex(nextIndex) &&
|
|
86
|
-
!this.steps.toArray()[nextIndex]?.disabled);
|
|
87
|
-
}
|
|
88
83
|
/**
|
|
89
84
|
* Check if it's possible to navigate to a specific step
|
|
90
85
|
* @param index The index of the step to check
|
|
91
86
|
*/
|
|
92
87
|
canNavigateTo(index) {
|
|
93
|
-
return (this.isValidStepIndex(index)
|
|
94
|
-
!this.steps.toArray()[index]?.disabled);
|
|
88
|
+
return this.isStepIndexInBounds(index) && this.isValidStepIndex(index);
|
|
95
89
|
}
|
|
96
90
|
/**
|
|
97
91
|
* Complete the stepper process
|
|
@@ -100,20 +94,35 @@ export class StepperComponent {
|
|
|
100
94
|
this.completed.emit();
|
|
101
95
|
}
|
|
102
96
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
97
|
+
* Checks if a step at a given index is not disabled.
|
|
98
|
+
*
|
|
99
|
+
* @param {number} index - The `index` parameter is a number representing the index of a step in a collection of steps.
|
|
100
|
+
*
|
|
101
|
+
* @returns A boolean value. It checks if the step at the given index is not disabled, and returns `true` if it is a valid step
|
|
102
|
+
* index, and `false` if it is not a valid step index or if the step at that index is disabled.
|
|
105
103
|
*/
|
|
106
104
|
isValidStepIndex(index) {
|
|
105
|
+
return !this.steps.toArray()[index]?.disabled;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Checks if a given index is within the bounds of the steps array.
|
|
109
|
+
*
|
|
110
|
+
* @param {number} index - The `index` parameter is a number representing the step index that you want to check if it is within
|
|
111
|
+
* the bounds of the steps array.
|
|
112
|
+
*
|
|
113
|
+
* @returns A boolean value indicating whether the given index is within the bounds of the steps array.
|
|
114
|
+
*/
|
|
115
|
+
isStepIndexInBounds(index) {
|
|
107
116
|
return index >= 0 && index < this.steps.length;
|
|
108
117
|
}
|
|
109
118
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: StepperComponent, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { backLabel: "backLabel", continueLabel: "continueLabel", submitLabel: "submitLabel", animationsEnabled: "animationsEnabled" }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { classAttribute: "stepper" }, queries: [{ propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true }, { propertyName: "steps", predicate: StepComponent }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button
|
|
119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: StepperComponent, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { backLabel: "backLabel", continueLabel: "continueLabel", submitLabel: "submitLabel", animationsEnabled: "animationsEnabled" }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { classAttribute: "stepper" }, queries: [{ propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true }, { propertyName: "steps", predicate: StepComponent }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!previousButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex - 1)\"\n\t\t>\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!nextButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex + 1)\"\n\t\t>\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!submitButton\"\n\t\t\t(click)=\"complete()\"\n\t\t\t[disabled]=\"!isValidStepIndex(currentIndex)\"\n\t\t>\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: [":host{--stepper-direction: column;--stepper-primary-color: #009ef7;--stepper-secondary-color: #b5b5c3;--stepper-background-color: #f3f6f9;--stepper-text-color: #181c32;--stepper-disabled-color: #e1e3ea;display:flex;flex-direction:var(--stepper-direction);overflow:auto}.stepper__nav{background-color:var(--stepper-background-color)}.stepper__nav-trigger{color:var(--stepper-text-color)}.stepper__nav-trigger--current{color:var(--stepper-primary-color)}.stepper__nav-trigger--completed{color:var(--stepper-secondary-color)}.stepper__nav-trigger:disabled{color:var(--stepper-disabled-color)}.stepper__button--back{background-color:var(--stepper-background-color);color:var(--stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--stepper-primary-color);color:var(--stepper-background-color)}.stepper__button:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
111
120
|
}
|
|
112
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: StepperComponent, decorators: [{
|
|
113
122
|
type: Component,
|
|
114
123
|
args: [{ selector: 'hub-stepper, hub-ui-stepper, ng80-stepper', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
115
124
|
class: 'stepper'
|
|
116
|
-
}, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button
|
|
125
|
+
}, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!previousButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex - 1)\"\n\t\t>\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!nextButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex + 1)\"\n\t\t>\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!submitButton\"\n\t\t\t(click)=\"complete()\"\n\t\t\t[disabled]=\"!isValidStepIndex(currentIndex)\"\n\t\t>\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: [":host{--stepper-direction: column;--stepper-primary-color: #009ef7;--stepper-secondary-color: #b5b5c3;--stepper-background-color: #f3f6f9;--stepper-text-color: #181c32;--stepper-disabled-color: #e1e3ea;display:flex;flex-direction:var(--stepper-direction);overflow:auto}.stepper__nav{background-color:var(--stepper-background-color)}.stepper__nav-trigger{color:var(--stepper-text-color)}.stepper__nav-trigger--current{color:var(--stepper-primary-color)}.stepper__nav-trigger--completed{color:var(--stepper-secondary-color)}.stepper__nav-trigger:disabled{color:var(--stepper-disabled-color)}.stepper__button--back{background-color:var(--stepper-background-color);color:var(--stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--stepper-primary-color);color:var(--stepper-background-color)}.stepper__button:disabled{opacity:.5;cursor:not-allowed}\n"] }]
|
|
117
126
|
}], propDecorators: { backLabel: [{
|
|
118
127
|
type: Input
|
|
119
128
|
}], continueLabel: [{
|
|
@@ -144,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
144
153
|
}], animationsEnabled: [{
|
|
145
154
|
type: Input
|
|
146
155
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdGVwcGVyL3NyYy9saWIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0ZXBwZXIvc3JjL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVuRTs7OztHQUlHO0FBVUgsTUFBTSxPQUFPLGdCQUFnQjtJQVQ3QjtRQVVDLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVqQywyQ0FBMkM7UUFDM0MsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFFekIsZ0NBQWdDO1FBQ3ZCLGNBQVMsR0FBVyxNQUFNLENBQUM7UUFFcEMsb0NBQW9DO1FBQzNCLGtCQUFhLEdBQVcsVUFBVSxDQUFDO1FBRTVDLGtDQUFrQztRQUN6QixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUV4QyxrREFBa0Q7UUFDeEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MscURB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a0JBVDVCLFNBQVM7K0JBQ0MsMkNBQTJDLG1CQUdwQyx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNMLEtBQUssRUFBRSxTQUFTO3FCQUNoQjs4QkFTUSxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTTtnQkFHeUIsS0FBSztzQkFBcEMsZUFBZTt1QkFBQyxhQUFhO2dCQUk5QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUl4RCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUlyQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsbUJBQW1CO2dCQUlqQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMscUJBQXFCO2dCQUcxQixpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlckNvbnRlbnRJbml0LFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEV2ZW50RW1pdHRlcixcblx0aW5qZWN0LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRRdWVyeUxpc3QsXG5cdFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmV4dEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL25leHQtYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQcmV2aW91c0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3ByZXZpb3VzLWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL3N0ZXAvc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcHBlck5hdkRpcmVjdGl2ZSB9IGZyb20gJy4uL3N0ZXBwZXItbmF2LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdWJtaXRCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9zdWJtaXQtYnV0dG9uLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogU3RlcHBlckNvbXBvbmVudCBpcyBhIG11bHRpLXN0ZXAgaW50ZXJmYWNlIGNvbXBvbmVudCBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMuXG4gKiBJdCBtYW5hZ2VzIG5hdmlnYXRpb24gYmV0d2VlbiBzdGVwcywgaGFuZGxlcyBzdGVwIGNvbnRlbnQsIGFuZCBwcm92aWRlc1xuICogY3VzdG9taXphdGlvbiBvcHRpb25zIGZvciBuYXZpZ2F0aW9uIGFuZCBjb250cm9scy5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnaHViLXN0ZXBwZXIsIGh1Yi11aS1zdGVwcGVyLCBuZzgwLXN0ZXBwZXInLFxuXHR0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3N0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3Q6IHtcblx0XHRjbGFzczogJ3N0ZXBwZXInXG5cdH1cbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXHQjY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGVwICovXG5cdGN1cnJlbnRJbmRleDogbnVtYmVyID0gMDtcblxuXHQvKiogTGFiZWwgZm9yIHRoZSBiYWNrIGJ1dHRvbiAqL1xuXHRASW5wdXQoKSBiYWNrTGFiZWw6IHN0cmluZyA9ICdCYWNrJztcblxuXHQvKiogTGFiZWwgZm9yIHRoZSBjb250aW51ZSBidXR0b24gKi9cblx0QElucHV0KCkgY29udGludWVMYWJlbDogc3RyaW5nID0gJ0NvbnRpbnVlJztcblxuXHQvKiogTGFiZWwgZm9yIHRoZSBzdWJtaXQgYnV0dG9uICovXG5cdEBJbnB1dCgpIHN1Ym1pdExhYmVsOiBzdHJpbmcgPSAnU3VibWl0JztcblxuXHQvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzdGVwcGVyIGlzIGNvbXBsZXRlZCAqL1xuXHRAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gbW92aW5nIHRvIHRoZSBwcmV2aW91cyBzdGVwICovXG5cdEBPdXRwdXQoKSBwcmV2aW91c1N0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKiogRXZlbnQgZW1pdHRlZCB3aGVuIG1vdmluZyB0byB0aGUgbmV4dCBzdGVwICovXG5cdEBPdXRwdXQoKSBuZXh0U3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG5cdC8qKiBRdWVyeUxpc3Qgb2YgYWxsIFN0ZXBDb21wb25lbnQgY2hpbGRyZW4gKi9cblx0QENvbnRlbnRDaGlsZHJlbihTdGVwQ29tcG9uZW50KSBzdGVwcyE6IFF1ZXJ5TGlzdDxTdGVwQ29tcG9uZW50PjtcblxuXHQvKiogQ3VzdG9tIHRlbXBsYXRlIGZvciBzdGVwcGVyIG5hdmlnYXRpb24gKi9cblx0QENvbnRlbnRDaGlsZChTdGVwcGVyTmF2RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG5cdHN0ZXBwZXJOYXZUcHQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdEBDb250ZW50Q2hpbGQoUHJldmlvdXNCdXR0b25EaXJlY3RpdmUpXG5cdHByZXZpb3VzQnV0dG9uPzogUHJldmlvdXNCdXR0b25EaXJlY3RpdmU7XG5cblx0QENvbnRlbnRDaGlsZChOZXh0QnV0dG9uRGlyZWN0aXZlKVxuXHRuZXh0QnV0dG9uPzogTmV4dEJ1dHRvbkRpcmVjdGl2ZTtcblxuXHRAQ29udGVudENoaWxkKFN1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSlcblx0c3VibWl0QnV0dG9uPzogU3VibWl0QnV0dG9uRGlyZWN0aXZlO1xuXG5cdEBJbnB1dCgpIGFuaW1hdGlvbnNFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuXHQvKiogR2V0IHRoZSBjdXJyZW50IGFjdGl2ZSBzdGVwICovXG5cdGdldCBjdXJyZW50U3RlcCgpOiBTdGVwQ29tcG9uZW50IHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuc3RlcHM/LnRvQXJyYXkoKVt0aGlzLmN1cnJlbnRJbmRleF0gPz8gbnVsbDtcblx0fVxuXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmluaXRpYWxpemVTdGVwcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgc3RlcCBpbmRpY2VzIGFuZCBzZXQgdXAgY2hhbmdlIGRldGVjdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBpbml0aWFsaXplU3RlcHMoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4gKHN0ZXAuaW5kZXggPSBpbmRleCkpO1xuXHRcdC8vIENvbnNpZGVyIHVzaW5nIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlXG5cdFx0dGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byB0aGUgcHJldmlvdXMgc3RlcFxuXHQgKi9cblx0Z29Ub1ByZXZpb3VzKCk6IHZvaWQge1xuXHRcdHRoaXMuZ29Ubyh0aGlzLmN1cnJlbnRJbmRleCAtIDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlIHRvIHRoZSBuZXh0IHN0ZXBcblx0ICovXG5cdGdvVG9OZXh0KCk6IHZvaWQge1xuXHRcdHRoaXMuZ29Ubyh0aGlzLmN1cnJlbnRJbmRleCArIDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlIHRvIGEgc3BlY2lmaWMgc3RlcCBieSBpbmRleFxuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBzdGVwIHRvIG5hdmlnYXRlIHRvXG5cdCAqL1xuXHRnb1RvKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc1ZhbGlkU3RlcEluZGV4KGluZGV4KSkge1xuXHRcdFx0dGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcblx0XHRcdHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRpZiAoaW5kZXggPiB0aGlzLmN1cnJlbnRJbmRleCkge1xuXHRcdFx0XHR0aGlzLm5leHRTdGVwLmVtaXQoaW5kZXgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5wcmV2aW91c1N0ZXAuZW1pdChpbmRleCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoYEludmFsaWQgc3RlcCBpbmRleDogJHtpbmRleH1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byBuYXZpZ2F0ZSB0byB0aGUgbmV4dCBzdGVwXG5cdCAqL1xuXHRjYW5Hb05leHQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgbmV4dEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggKyAxO1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmlzVmFsaWRTdGVwSW5kZXgobmV4dEluZGV4KSAmJlxuXHRcdFx0IXRoaXMuc3RlcHMudG9BcnJheSgpW25leHRJbmRleF0/LmRpc2FibGVkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIHRvIGEgc3BlY2lmaWMgc3RlcFxuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBzdGVwIHRvIGNoZWNrXG5cdCAqL1xuXHRjYW5OYXZpZ2F0ZVRvKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pc1ZhbGlkU3RlcEluZGV4KGluZGV4KSAmJlxuXHRcdFx0IXRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XT8uZGlzYWJsZWRcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBsZXRlIHRoZSBzdGVwcGVyIHByb2Nlc3Ncblx0ICovXG5cdGNvbXBsZXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuY29tcGxldGVkLmVtaXQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBhIGdpdmVuIGluZGV4IGlzIHZhbGlkIHdpdGhpbiB0aGUgY3VycmVudCBzdGVwc1xuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIHZhbGlkYXRlXG5cdCAqL1xuXHRwcml2YXRlIGlzVmFsaWRTdGVwSW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5zdGVwcy5sZW5ndGg7XG5cdH1cbn1cbiIsIjwhLS1iZWdpbjo6TmF2LS0+XG48bmF2IGNsYXNzPVwic3RlcHBlcl9fbmF2XCI+XG5cdDxuZy1jb250YWluZXJcblx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwcGVyTmF2VHB0IHx8IGRlZmF1bHROYXZUcHRcIlxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0ZXBzOiBzdGVwcywgY3VycmVudEluZGV4IH1cIlxuXHQ+PC9uZy1jb250YWluZXI+XG48L25hdj5cbjwhLS1lbmQ6Ok5hdi0tPlxuXG48IS0tYmVnaW46OkNvbnRlbnQtLT5cbjxkaXYgY2xhc3M9XCJzdGVwcGVyX19jb250ZW50XCI+XG5cdDxuZy1jb250YWluZXJcblx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW50U3RlcD8uaW5uZXJUZW1wbGF0ZVwiXG5cdD48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPCEtLWVuZDo6Q29udGVudC0tPlxuXG48IS0tYmVnaW46OkNvbnRyb2xzLS0+XG48ZGl2IGNsYXNzPVwic3RlcHBlcl9fY29udHJvbHNcIj5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRJbmRleCA+IDBcIj5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJidXR0b25bcHJldmlvdXNCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuXHRcdDxidXR0b24gKm5nSWY9XCIhcHJldmlvdXNCdXR0b25cIiAoY2xpY2spPVwiZ29Ub05leHQoKVwiPlxuXHRcdFx0e3sgYmFja0xhYmVsIH19XG5cdFx0PC9idXR0b24+XG5cdDwvbmctY29udGFpbmVyPlxuXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50SW5kZXggPCBzdGVwcy5sZW5ndGggLSAxXCI+XG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW25leHRCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuXHRcdDxidXR0b24gKm5nSWY9XCIhbmV4dEJ1dHRvblwiIChjbGljayk9XCJnb1RvTmV4dCgpXCI+XG5cdFx0XHR7eyBjb250aW51ZUxhYmVsIH19XG5cdFx0PC9idXR0b24+XG5cdDwvbmctY29udGFpbmVyPlxuXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50SW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDFcIj5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJidXR0b25bc3VibWl0QnV0dG9uXVwiPjwvbmctY29udGVudD5cblx0XHQ8YnV0dG9uICpuZ0lmPVwiIXN1Ym1pdEJ1dHRvblwiIChjbGljayk9XCJjb21wbGV0ZSgpXCI+XG5cdFx0XHR7eyBzdWJtaXRMYWJlbCB9fVxuXHRcdDwvYnV0dG9uPlxuXHQ8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPCEtLWVuZDo6Q29udHJvbHMtLT5cblxuPCEtLSBiZWdpbjpkZWZhdWx0LW5hdiAtLT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5hdlRwdCBsZXQtc3RlcHM9XCJzdGVwc1wiIGxldC1jdXJyZW50SW5kZXg9XCJjdXJyZW50SW5kZXhcIj5cblx0PHVsIGNsYXNzPVwic3RlcHBlcl9fbmF2LWxpc3RcIj5cblx0XHQ8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInN0ZXBwZXJfX25hdi1pdGVtXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyXG5cdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuXHRcdFx0XHRcdHN0ZXA/LnN0ZXBUcmlnZ2VyVHB0IHx8IGRlZmF1bHROYXZUcmlnZ2VyVHB0XG5cdFx0XHRcdFwiXG5cdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG5cdFx0XHRcdFx0dGl0bGU6IHN0ZXAudGl0bGUsXG5cdFx0XHRcdFx0aW5kZXg6IGksXG5cdFx0XHRcdFx0aXNDdXJyZW50OiBjdXJyZW50SW5kZXggPT09IGksXG5cdFx0XHRcdFx0aXNDb21wbGV0ZWQ6IGkgPCBjdXJyZW50SW5kZXhcblx0XHRcdFx0fVwiXG5cdFx0XHQ+PC9uZy1jb250YWluZXI+XG5cdFx0PC9saT5cblx0PC91bD5cbjwvbmctdGVtcGxhdGU+XG48IS0tIGVuZDpkZWZhdWx0LW5hdiAtLT5cblxuPCEtLSBiZWdpbjpkZWZhdWx0LW5hdi10cmlnZ2VyIC0tPlxuPG5nLXRlbXBsYXRlXG5cdCNkZWZhdWx0TmF2VHJpZ2dlclRwdFxuXHRsZXQtdGl0bGU9XCJ0aXRsZVwiXG5cdGxldC1pbmRleD1cImluZGV4XCJcblx0bGV0LWlzQ3VycmVudD1cImlzQ3VycmVudFwiXG5cdGxldC1pc0NvbXBsZXRlZD1cImlzQ29tcGxldGVkXCJcbj5cblx0PGJ1dHRvblxuXHRcdGNsYXNzPVwic3RlcHBlcl9fbmF2LXRyaWdnZXJcIlxuXHRcdFtjbGFzcy5zdGVwcGVyX19uYXYtdHJpZ2dlci0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuXHRcdFtjbGFzcy5zdGVwcGVyX19uYXYtdHJpZ2dlci0tY29tcGxldGVkXT1cImlzQ29tcGxldGVkXCJcblx0XHRbZGlzYWJsZWRdPVwiIWNhbk5hdmlnYXRlVG8oaW5kZXgpXCJcblx0XHQoY2xpY2spPVwiZ29UbyhpbmRleClcIlxuXHQ+XG5cdFx0PHNwYW4gY2xhc3M9XCJzdGVwcGVyX19uYXYtaW5kaWNhdG9yXCI+e3sgaW5kZXggKyAxIH19PC9zcGFuPlxuXHRcdDxzcGFuIGNsYXNzPVwic3RlcHBlcl9fbmF2LXRpdGxlXCIgKm5nSWY9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuXHQ8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIGVuZDpkZWZhdWx0LW5hdi10cmlnZ2VyIC0tPlxuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdGVwcGVyL3NyYy9saWIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0ZXBwZXIvc3JjL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFFbkU7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxnQkFBZ0I7SUFUN0I7UUFVQyxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakMsMkNBQTJDO1FBQzNDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBTTFCLGdDQUFnQztRQUN2QixjQUFTLEdBQVcsTUFBTSxDQUFDO1FBRXBDLG9DQUFvQztRQUMzQixrQkFBYSxHQUFXLFVBQVUsQ0FBQztRQUU1QyxrQ0FBa0M7UUFDekIsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFeEMsa0RBQWtEO1FBQ3hDLGNBQVMsR0FBRyxJQUFJ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Q0MsMkNBQTJDLG1CQUdwQyx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNMLEtBQUssRUFBRSxTQUFTO3FCQUNoQjs4QkFhUSxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUdHLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTTtnQkFHeUIsS0FBSztzQkFBcEMsZUFBZTt1QkFBQyxhQUFhO2dCQUk5QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUl4RCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUlyQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsbUJBQW1CO2dCQUlqQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMscUJBQXFCO2dCQUcxQixpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlckNvbnRlbnRJbml0LFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEV2ZW50RW1pdHRlcixcblx0aW5qZWN0LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRRdWVyeUxpc3QsXG5cdHNpZ25hbCxcblx0VGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXh0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vbmV4dC1idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFByZXZpb3VzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vcHJldmlvdXMtYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vc3RlcC9zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwcGVyTmF2RGlyZWN0aXZlIH0gZnJvbSAnLi4vc3RlcHBlci1uYXYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFN1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3N1Ym1pdC1idXR0b24uZGlyZWN0aXZlJztcblxuLyoqXG4gKiBTdGVwcGVyQ29tcG9uZW50IGlzIGEgbXVsdGktc3RlcCBpbnRlcmZhY2UgY29tcG9uZW50IGZvciBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIEl0IG1hbmFnZXMgbmF2aWdhdGlvbiBiZXR3ZWVuIHN0ZXBzLCBoYW5kbGVzIHN0ZXAgY29udGVudCwgYW5kIHByb3ZpZGVzXG4gKiBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIG5hdmlnYXRpb24gYW5kIGNvbnRyb2xzLlxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdodWItc3RlcHBlciwgaHViLXVpLXN0ZXBwZXIsIG5nODAtc3RlcHBlcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdGNsYXNzOiAnc3RlcHBlcidcblx0fVxufSlcbmV4cG9ydCBjbGFzcyBTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG5cdCNjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG5cdC8qKiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgYWN0aXZlIHN0ZXAgKi9cblx0Y3VycmVudEluZGV4JCA9IHNpZ25hbCgwKTtcblxuXHRnZXQgY3VycmVudEluZGV4KCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuY3VycmVudEluZGV4JCgpO1xuXHR9XG5cblx0LyoqIExhYmVsIGZvciB0aGUgYmFjayBidXR0b24gKi9cblx0QElucHV0KCkgYmFja0xhYmVsOiBzdHJpbmcgPSAnQmFjayc7XG5cblx0LyoqIExhYmVsIGZvciB0aGUgY29udGludWUgYnV0dG9uICovXG5cdEBJbnB1dCgpIGNvbnRpbnVlTGFiZWw6IHN0cmluZyA9ICdDb250aW51ZSc7XG5cblx0LyoqIExhYmVsIGZvciB0aGUgc3VibWl0IGJ1dHRvbiAqL1xuXHRASW5wdXQoKSBzdWJtaXRMYWJlbDogc3RyaW5nID0gJ1N1Ym1pdCc7XG5cblx0LyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RlcHBlciBpcyBjb21wbGV0ZWQgKi9cblx0QE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHQvKiogRXZlbnQgZW1pdHRlZCB3aGVuIG1vdmluZyB0byB0aGUgcHJldmlvdXMgc3RlcCAqL1xuXHRAT3V0cHV0KCkgcHJldmlvdXNTdGVwID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0LyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBtb3ZpbmcgdG8gdGhlIG5leHQgc3RlcCAqL1xuXHRAT3V0cHV0KCkgbmV4dFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKiogUXVlcnlMaXN0IG9mIGFsbCBTdGVwQ29tcG9uZW50IGNoaWxkcmVuICovXG5cdEBDb250ZW50Q2hpbGRyZW4oU3RlcENvbXBvbmVudCkgc3RlcHMhOiBRdWVyeUxpc3Q8U3RlcENvbXBvbmVudD47XG5cblx0LyoqIEN1c3RvbSB0ZW1wbGF0ZSBmb3Igc3RlcHBlciBuYXZpZ2F0aW9uICovXG5cdEBDb250ZW50Q2hpbGQoU3RlcHBlck5hdkRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuXHRzdGVwcGVyTmF2VHB0PzogVGVtcGxhdGVSZWY8YW55PjtcblxuXHRAQ29udGVudENoaWxkKFByZXZpb3VzQnV0dG9uRGlyZWN0aXZlKVxuXHRwcmV2aW91c0J1dHRvbj86IFByZXZpb3VzQnV0dG9uRGlyZWN0aXZlO1xuXG5cdEBDb250ZW50Q2hpbGQoTmV4dEJ1dHRvbkRpcmVjdGl2ZSlcblx0bmV4dEJ1dHRvbj86IE5leHRCdXR0b25EaXJlY3RpdmU7XG5cblx0QENvbnRlbnRDaGlsZChTdWJtaXRCdXR0b25EaXJlY3RpdmUpXG5cdHN1Ym1pdEJ1dHRvbj86IFN1Ym1pdEJ1dHRvbkRpcmVjdGl2ZTtcblxuXHRASW5wdXQoKSBhbmltYXRpb25zRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cblx0LyoqIEdldCB0aGUgY3VycmVudCBhY3RpdmUgc3RlcCAqL1xuXHRnZXQgY3VycmVudFN0ZXAoKTogU3RlcENvbXBvbmVudCB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLnN0ZXBzPy50b0FycmF5KClbdGhpcy5jdXJyZW50SW5kZXhdID8/IG51bGw7XG5cdH1cblxuXHRuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5pbml0aWFsaXplU3RlcHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplIHN0ZXAgaW5kaWNlcyBhbmQgc2V0IHVwIGNoYW5nZSBkZXRlY3Rpb25cblx0ICovXG5cdHByaXZhdGUgaW5pdGlhbGl6ZVN0ZXBzKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IChzdGVwLmluZGV4ID0gaW5kZXgpKTtcblx0XHQvLyBDb25zaWRlciB1c2luZyBuZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIgZm9yIGJldHRlciBwZXJmb3JtYW5jZVxuXHRcdHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIHN0ZXBcblx0ICovXG5cdGdvVG9QcmV2aW91cygpOiB2b2lkIHtcblx0XHR0aGlzLmdvVG8odGhpcy5jdXJyZW50SW5kZXggLSAxKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBzdGVwXG5cdCAqL1xuXHRnb1RvTmV4dCgpOiB2b2lkIHtcblx0XHR0aGlzLmdvVG8odGhpcy5jdXJyZW50SW5kZXggKyAxKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhIHNwZWNpZmljIHN0ZXAgYnkgaW5kZXhcblx0ICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgc3RlcCB0byBuYXZpZ2F0ZSB0b1xuXHQgKi9cblx0Z29UbyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNTdGVwSW5kZXhJbkJvdW5kcyhpbmRleCkpIHtcblx0XHRcdHRoaXMuY3VycmVudEluZGV4JC5zZXQoaW5kZXgpO1xuXHRcdFx0dGhpcy4jY2RyLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdGlmIChpbmRleCA+IHRoaXMuY3VycmVudEluZGV4KSB7XG5cdFx0XHRcdHRoaXMubmV4dFN0ZXAuZW1pdChpbmRleCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnByZXZpb3VzU3RlcC5lbWl0KGluZGV4KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc29sZS5lcnJvcihgSW52YWxpZCBzdGVwIGluZGV4OiAke2luZGV4fWApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIHRvIGEgc3BlY2lmaWMgc3RlcFxuXHQgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBzdGVwIHRvIGNoZWNrXG5cdCAqL1xuXHRjYW5OYXZpZ2F0ZVRvKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc1N0ZXBJbmRleEluQm91bmRzKGluZGV4KSAmJiB0aGlzLmlzVmFsaWRTdGVwSW5kZXgoaW5kZXgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBsZXRlIHRoZSBzdGVwcGVyIHByb2Nlc3Ncblx0ICovXG5cdGNvbXBsZXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuY29tcGxldGVkLmVtaXQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYSBzdGVwIGF0IGEgZ2l2ZW4gaW5kZXggaXMgbm90IGRpc2FibGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgYGluZGV4YCBwYXJhbWV0ZXIgaXMgYSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBpbmRleCBvZiBhIHN0ZXAgaW4gYSBjb2xsZWN0aW9uIG9mIHN0ZXBzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUuIEl0IGNoZWNrcyBpZiB0aGUgc3RlcCBhdCB0aGUgZ2l2ZW4gaW5kZXggaXMgbm90IGRpc2FibGVkLCBhbmQgcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgYSB2YWxpZCBzdGVwXG5cdCAqIGluZGV4LCBhbmQgYGZhbHNlYCBpZiBpdCBpcyBub3QgYSB2YWxpZCBzdGVwIGluZGV4IG9yIGlmIHRoZSBzdGVwIGF0IHRoYXQgaW5kZXggaXMgZGlzYWJsZWQuXG5cdCAqL1xuXHRpc1ZhbGlkU3RlcEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gIXRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XT8uZGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGEgZ2l2ZW4gaW5kZXggaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIHN0ZXBzIGFycmF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgYGluZGV4YCBwYXJhbWV0ZXIgaXMgYSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBzdGVwIGluZGV4IHRoYXQgeW91IHdhbnQgdG8gY2hlY2sgaWYgaXQgaXMgd2l0aGluXG5cdCAqIHRoZSBib3VuZHMgb2YgdGhlIHN0ZXBzIGFycmF5LlxuXHQgKlxuXHQgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBnaXZlbiBpbmRleCBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgc3RlcHMgYXJyYXkuXG5cdCAqL1xuXHRpc1N0ZXBJbmRleEluQm91bmRzKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuc3RlcHMubGVuZ3RoO1xuXHR9XG59XG4iLCI8IS0tYmVnaW46Ok5hdi0tPlxuPG5hdiBjbGFzcz1cInN0ZXBwZXJfX25hdlwiPlxuXHQ8bmctY29udGFpbmVyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcHBlck5hdlRwdCB8fCBkZWZhdWx0TmF2VHB0XCJcblx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzdGVwczogc3RlcHMsIGN1cnJlbnRJbmRleCB9XCJcblx0PjwvbmctY29udGFpbmVyPlxuPC9uYXY+XG48IS0tZW5kOjpOYXYtLT5cblxuPCEtLWJlZ2luOjpDb250ZW50LS0+XG48ZGl2IGNsYXNzPVwic3RlcHBlcl9fY29udGVudFwiPlxuXHQ8bmctY29udGFpbmVyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiY3VycmVudFN0ZXA/LmlubmVyVGVtcGxhdGVcIlxuXHQ+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS1lbmQ6OkNvbnRlbnQtLT5cblxuPCEtLWJlZ2luOjpDb250cm9scy0tPlxuPGRpdiBjbGFzcz1cInN0ZXBwZXJfX2NvbnRyb2xzXCI+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCI+XG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW3ByZXZpb3VzQnV0dG9uXVwiPjwvbmctY29udGVudD5cblx0XHQ8YnV0dG9uXG5cdFx0XHQqbmdJZj1cIiFwcmV2aW91c0J1dHRvblwiXG5cdFx0XHQoY2xpY2spPVwiZ29Ub05leHQoKVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiY2FuTmF2aWdhdGVUbyhjdXJyZW50SW5kZXggLSAxKVwiXG5cdFx0PlxuXHRcdFx0e3sgYmFja0xhYmVsIH19XG5cdFx0PC9idXR0b24+XG5cdDwvbmctY29udGFpbmVyPlxuXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50SW5kZXggPCBzdGVwcy5sZW5ndGggLSAxXCI+XG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW25leHRCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuXHRcdDxidXR0b25cblx0XHRcdCpuZ0lmPVwiIW5leHRCdXR0b25cIlxuXHRcdFx0KGNsaWNrKT1cImdvVG9OZXh0KClcIlxuXHRcdFx0W2Rpc2FibGVkXT1cImNhbk5hdmlnYXRlVG8oY3VycmVudEluZGV4ICsgMSlcIlxuXHRcdD5cblx0XHRcdHt7IGNvbnRpbnVlTGFiZWwgfX1cblx0XHQ8L2J1dHRvbj5cblx0PC9uZy1jb250YWluZXI+XG5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRJbmRleCA9PT0gc3RlcHMubGVuZ3RoIC0gMVwiPlxuXHRcdDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltzdWJtaXRCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuXHRcdDxidXR0b25cblx0XHRcdCpuZ0lmPVwiIXN1Ym1pdEJ1dHRvblwiXG5cdFx0XHQoY2xpY2spPVwiY29tcGxldGUoKVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiIWlzVmFsaWRTdGVwSW5kZXgoY3VycmVudEluZGV4KVwiXG5cdFx0PlxuXHRcdFx0e3sgc3VibWl0TGFiZWwgfX1cblx0XHQ8L2J1dHRvbj5cblx0PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS1lbmQ6OkNvbnRyb2xzLS0+XG5cbjwhLS0gYmVnaW46ZGVmYXVsdC1uYXYgLS0+XG48bmctdGVtcGxhdGUgI2RlZmF1bHROYXZUcHQgbGV0LXN0ZXBzPVwic3RlcHNcIiBsZXQtY3VycmVudEluZGV4PVwiY3VycmVudEluZGV4XCI+XG5cdDx1bCBjbGFzcz1cInN0ZXBwZXJfX25hdi1saXN0XCI+XG5cdFx0PGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJzdGVwcGVyX19uYXYtaXRlbVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lclxuXHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJcblx0XHRcdFx0XHRzdGVwPy5zdGVwVHJpZ2dlclRwdCB8fCBkZWZhdWx0TmF2VHJpZ2dlclRwdFxuXHRcdFx0XHRcIlxuXHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuXHRcdFx0XHRcdHRpdGxlOiBzdGVwLnRpdGxlLFxuXHRcdFx0XHRcdGluZGV4OiBpLFxuXHRcdFx0XHRcdGlzQ3VycmVudDogY3VycmVudEluZGV4ID09PSBpLFxuXHRcdFx0XHRcdGlzQ29tcGxldGVkOiBpIDwgY3VycmVudEluZGV4XG5cdFx0XHRcdH1cIlxuXHRcdFx0PjwvbmctY29udGFpbmVyPlxuXHRcdDwvbGk+XG5cdDwvdWw+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBlbmQ6ZGVmYXVsdC1uYXYgLS0+XG5cbjwhLS0gYmVnaW46ZGVmYXVsdC1uYXYtdHJpZ2dlciAtLT5cbjxuZy10ZW1wbGF0ZVxuXHQjZGVmYXVsdE5hdlRyaWdnZXJUcHRcblx0bGV0LXRpdGxlPVwidGl0bGVcIlxuXHRsZXQtaW5kZXg9XCJpbmRleFwiXG5cdGxldC1pc0N1cnJlbnQ9XCJpc0N1cnJlbnRcIlxuXHRsZXQtaXNDb21wbGV0ZWQ9XCJpc0NvbXBsZXRlZFwiXG4+XG5cdDxidXR0b25cblx0XHRjbGFzcz1cInN0ZXBwZXJfX25hdi10cmlnZ2VyXCJcblx0XHRbY2xhc3Muc3RlcHBlcl9fbmF2LXRyaWdnZXItLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcblx0XHRbY2xhc3Muc3RlcHBlcl9fbmF2LXRyaWdnZXItLWNvbXBsZXRlZF09XCJpc0NvbXBsZXRlZFwiXG5cdFx0W2Rpc2FibGVkXT1cIiFjYW5OYXZpZ2F0ZVRvKGluZGV4KVwiXG5cdFx0KGNsaWNrKT1cImdvVG8oaW5kZXgpXCJcblx0PlxuXHRcdDxzcGFuIGNsYXNzPVwic3RlcHBlcl9fbmF2LWluZGljYXRvclwiPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cblx0XHQ8c3BhbiBjbGFzcz1cInN0ZXBwZXJfX25hdi10aXRsZVwiICpuZ0lmPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cblx0PC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBlbmQ6ZGVmYXVsdC1uYXYtdHJpZ2dlciAtLT5cbiJdfQ==
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { Directive, HostListener, inject } from '@angular/core';
|
|
1
|
+
import { Directive, effect, HostBinding, HostListener, inject, Injector } from '@angular/core';
|
|
2
2
|
import { StepperComponent } from './stepper/stepper.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class SubmitButtonDirective {
|
|
5
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
this.#injector = inject(Injector);
|
|
7
|
+
this.#stepper = inject(StepperComponent);
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
}
|
|
10
|
+
#injector;
|
|
11
|
+
#stepper;
|
|
6
12
|
onClick() {
|
|
7
13
|
this.#stepper.complete();
|
|
8
14
|
}
|
|
15
|
+
ngAfterContentInit() {
|
|
16
|
+
effect(() => {
|
|
17
|
+
this.disabled = !this.#stepper.isValidStepIndex(this.#stepper.currentIndex$());
|
|
18
|
+
}, { injector: this.#injector });
|
|
19
|
+
}
|
|
9
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubmitButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: SubmitButtonDirective, isStandalone: true, selector: "button[submitButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--submit" }, ngImport: i0 }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: SubmitButtonDirective, isStandalone: true, selector: "button[submitButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--submit" }, ngImport: i0 }); }
|
|
11
22
|
}
|
|
12
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubmitButtonDirective, decorators: [{
|
|
13
24
|
type: Directive,
|
|
@@ -18,8 +29,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
18
29
|
class: 'stepper__button stepper__button--submit'
|
|
19
30
|
}
|
|
20
31
|
}]
|
|
21
|
-
}], propDecorators: {
|
|
32
|
+
}], propDecorators: { disabled: [{
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['disabled']
|
|
35
|
+
}], onClick: [{
|
|
22
36
|
type: HostListener,
|
|
23
37
|
args: ['click']
|
|
24
38
|
}] } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdGVwcGVyL3NyYy9saWIvc3VibWl0LWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxNQUFNLEVBQ04sV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVMvRCxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixhQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFWCxhQUFRLEdBQUcsS0FBSyxDQUFDO0tBZ0IxQztJQW5CQSxTQUFTLENBQW9CO0lBQzdCLFFBQVEsQ0FBNEI7SUFJYixPQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtRQUNqQixNQUFNLENBQ0wsR0FBRyxFQUFFO1lBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQzdCLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUM1QixDQUFDO0lBQ0gsQ0FBQzs4R0FuQlcscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBUGpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDTCxLQUFLLEVBQUUseUNBQXlDO3FCQUNoRDtpQkFDRDs4QkFLeUIsUUFBUTtzQkFBaEMsV0FBVzt1QkFBQyxVQUFVO2dCQUVBLE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyQ29udGVudEluaXQsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRIb3N0QmluZGluZyxcblx0SG9zdExpc3RlbmVyLFxuXHRpbmplY3QsXG5cdEluamVjdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4vc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ2J1dHRvbltzdWJtaXRCdXR0b25dJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aG9zdDoge1xuXHRcdGNsYXNzOiAnc3RlcHBlcl9fYnV0dG9uIHN0ZXBwZXJfX2J1dHRvbi0tc3VibWl0J1xuXHR9XG59KVxuZXhwb3J0IGNsYXNzIFN1Ym1pdEJ1dHRvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXHQjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHQjc3RlcHBlciA9IGluamVjdChTdGVwcGVyQ29tcG9uZW50KTtcblxuXHRASG9zdEJpbmRpbmcoJ2Rpc2FibGVkJykgZGlzYWJsZWQgPSBmYWxzZTtcblxuXHRASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG5cdFx0dGhpcy4jc3RlcHBlci5jb21wbGV0ZSgpO1xuXHR9XG5cblx0bmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5kaXNhYmxlZCA9ICF0aGlzLiNzdGVwcGVyLmlzVmFsaWRTdGVwSW5kZXgoXG5cdFx0XHRcdFx0dGhpcy4jc3RlcHBlci5jdXJyZW50SW5kZXgkKClcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciB9XG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Directive, HostListener, Component, ChangeDetectionStrategy, Input, ViewChild, ChangeDetectorRef, EventEmitter, TemplateRef, Output, ContentChildren, ContentChild, NgModule, Injectable } from '@angular/core';
|
|
2
|
+
import { inject, Injector, effect, Directive, HostBinding, HostListener, Component, ChangeDetectionStrategy, Input, ViewChild, ChangeDetectorRef, signal, EventEmitter, TemplateRef, Output, ContentChildren, ContentChild, NgModule, Injectable } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
|
|
6
6
|
class NextButtonDirective {
|
|
7
|
-
|
|
7
|
+
constructor() {
|
|
8
|
+
this.#injector = inject(Injector);
|
|
9
|
+
this.#stepper = inject(StepperComponent);
|
|
10
|
+
this.disabled = false;
|
|
11
|
+
}
|
|
12
|
+
#injector;
|
|
13
|
+
#stepper;
|
|
8
14
|
onClick() {
|
|
9
15
|
this.#stepper.goToNext();
|
|
10
16
|
}
|
|
17
|
+
ngAfterContentInit() {
|
|
18
|
+
effect(() => {
|
|
19
|
+
this.disabled = !this.#stepper.canNavigateTo(this.#stepper.currentIndex$() + 1);
|
|
20
|
+
}, { injector: this.#injector });
|
|
21
|
+
}
|
|
11
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NextButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
12
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NextButtonDirective, isStandalone: true, selector: "button[nextButton], button[continueButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--next" }, ngImport: i0 }); }
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: NextButtonDirective, isStandalone: true, selector: "button[nextButton], button[continueButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--next" }, ngImport: i0 }); }
|
|
13
24
|
}
|
|
14
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: NextButtonDirective, decorators: [{
|
|
15
26
|
type: Directive,
|
|
@@ -20,18 +31,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
20
31
|
class: 'stepper__button stepper__button--next'
|
|
21
32
|
}
|
|
22
33
|
}]
|
|
23
|
-
}], propDecorators: {
|
|
34
|
+
}], propDecorators: { disabled: [{
|
|
35
|
+
type: HostBinding,
|
|
36
|
+
args: ['disabled']
|
|
37
|
+
}], onClick: [{
|
|
24
38
|
type: HostListener,
|
|
25
39
|
args: ['click']
|
|
26
40
|
}] } });
|
|
27
41
|
|
|
28
42
|
class PreviousButtonDirective {
|
|
29
|
-
|
|
43
|
+
constructor() {
|
|
44
|
+
this.#injector = inject(Injector);
|
|
45
|
+
this.#stepper = inject(StepperComponent);
|
|
46
|
+
this.disabled = false;
|
|
47
|
+
}
|
|
48
|
+
#injector;
|
|
49
|
+
#stepper;
|
|
30
50
|
onClick() {
|
|
31
51
|
this.#stepper.goToPrevious();
|
|
32
52
|
}
|
|
53
|
+
ngAfterContentInit() {
|
|
54
|
+
effect(() => {
|
|
55
|
+
this.disabled = !this.#stepper.canNavigateTo(this.#stepper.currentIndex$() - 1);
|
|
56
|
+
}, { injector: this.#injector });
|
|
57
|
+
}
|
|
33
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PreviousButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: PreviousButtonDirective, isStandalone: true, selector: "button[previousButton], button[backButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--back" }, ngImport: i0 }); }
|
|
59
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: PreviousButtonDirective, isStandalone: true, selector: "button[previousButton], button[backButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--back" }, ngImport: i0 }); }
|
|
35
60
|
}
|
|
36
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PreviousButtonDirective, decorators: [{
|
|
37
62
|
type: Directive,
|
|
@@ -42,7 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
42
67
|
class: 'stepper__button stepper__button--back'
|
|
43
68
|
}
|
|
44
69
|
}]
|
|
45
|
-
}], propDecorators: {
|
|
70
|
+
}], propDecorators: { disabled: [{
|
|
71
|
+
type: HostBinding,
|
|
72
|
+
args: ['disabled']
|
|
73
|
+
}], onClick: [{
|
|
46
74
|
type: HostListener,
|
|
47
75
|
args: ['click']
|
|
48
76
|
}] } });
|
|
@@ -110,12 +138,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
110
138
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
111
139
|
|
|
112
140
|
class SubmitButtonDirective {
|
|
113
|
-
|
|
141
|
+
constructor() {
|
|
142
|
+
this.#injector = inject(Injector);
|
|
143
|
+
this.#stepper = inject(StepperComponent);
|
|
144
|
+
this.disabled = false;
|
|
145
|
+
}
|
|
146
|
+
#injector;
|
|
147
|
+
#stepper;
|
|
114
148
|
onClick() {
|
|
115
149
|
this.#stepper.complete();
|
|
116
150
|
}
|
|
151
|
+
ngAfterContentInit() {
|
|
152
|
+
effect(() => {
|
|
153
|
+
this.disabled = !this.#stepper.isValidStepIndex(this.#stepper.currentIndex$());
|
|
154
|
+
}, { injector: this.#injector });
|
|
155
|
+
}
|
|
117
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubmitButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
118
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: SubmitButtonDirective, isStandalone: true, selector: "button[submitButton]", host: { listeners: { "click": "onClick()" }, classAttribute: "stepper__button stepper__button--submit" }, ngImport: i0 }); }
|
|
157
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: SubmitButtonDirective, isStandalone: true, selector: "button[submitButton]", host: { listeners: { "click": "onClick()" }, properties: { "disabled": "this.disabled" }, classAttribute: "stepper__button stepper__button--submit" }, ngImport: i0 }); }
|
|
119
158
|
}
|
|
120
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: SubmitButtonDirective, decorators: [{
|
|
121
160
|
type: Directive,
|
|
@@ -126,7 +165,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
126
165
|
class: 'stepper__button stepper__button--submit'
|
|
127
166
|
}
|
|
128
167
|
}]
|
|
129
|
-
}], propDecorators: {
|
|
168
|
+
}], propDecorators: { disabled: [{
|
|
169
|
+
type: HostBinding,
|
|
170
|
+
args: ['disabled']
|
|
171
|
+
}], onClick: [{
|
|
130
172
|
type: HostListener,
|
|
131
173
|
args: ['click']
|
|
132
174
|
}] } });
|
|
@@ -140,7 +182,7 @@ class StepperComponent {
|
|
|
140
182
|
constructor() {
|
|
141
183
|
this.#cdr = inject(ChangeDetectorRef);
|
|
142
184
|
/** The index of the current active step */
|
|
143
|
-
this.currentIndex = 0;
|
|
185
|
+
this.currentIndex$ = signal(0);
|
|
144
186
|
/** Label for the back button */
|
|
145
187
|
this.backLabel = 'Back';
|
|
146
188
|
/** Label for the continue button */
|
|
@@ -156,6 +198,9 @@ class StepperComponent {
|
|
|
156
198
|
this.animationsEnabled = true;
|
|
157
199
|
}
|
|
158
200
|
#cdr;
|
|
201
|
+
get currentIndex() {
|
|
202
|
+
return this.currentIndex$();
|
|
203
|
+
}
|
|
159
204
|
/** Get the current active step */
|
|
160
205
|
get currentStep() {
|
|
161
206
|
return this.steps?.toArray()[this.currentIndex] ?? null;
|
|
@@ -188,8 +233,8 @@ class StepperComponent {
|
|
|
188
233
|
* @param index The index of the step to navigate to
|
|
189
234
|
*/
|
|
190
235
|
goTo(index) {
|
|
191
|
-
if (this.
|
|
192
|
-
this.currentIndex
|
|
236
|
+
if (this.isStepIndexInBounds(index)) {
|
|
237
|
+
this.currentIndex$.set(index);
|
|
193
238
|
this.#cdr.detectChanges();
|
|
194
239
|
if (index > this.currentIndex) {
|
|
195
240
|
this.nextStep.emit(index);
|
|
@@ -202,21 +247,12 @@ class StepperComponent {
|
|
|
202
247
|
console.error(`Invalid step index: ${index}`);
|
|
203
248
|
}
|
|
204
249
|
}
|
|
205
|
-
/**
|
|
206
|
-
* Check if it's possible to navigate to the next step
|
|
207
|
-
*/
|
|
208
|
-
canGoNext() {
|
|
209
|
-
const nextIndex = this.currentIndex + 1;
|
|
210
|
-
return (this.isValidStepIndex(nextIndex) &&
|
|
211
|
-
!this.steps.toArray()[nextIndex]?.disabled);
|
|
212
|
-
}
|
|
213
250
|
/**
|
|
214
251
|
* Check if it's possible to navigate to a specific step
|
|
215
252
|
* @param index The index of the step to check
|
|
216
253
|
*/
|
|
217
254
|
canNavigateTo(index) {
|
|
218
|
-
return (this.isValidStepIndex(index)
|
|
219
|
-
!this.steps.toArray()[index]?.disabled);
|
|
255
|
+
return this.isStepIndexInBounds(index) && this.isValidStepIndex(index);
|
|
220
256
|
}
|
|
221
257
|
/**
|
|
222
258
|
* Complete the stepper process
|
|
@@ -225,20 +261,35 @@ class StepperComponent {
|
|
|
225
261
|
this.completed.emit();
|
|
226
262
|
}
|
|
227
263
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
264
|
+
* Checks if a step at a given index is not disabled.
|
|
265
|
+
*
|
|
266
|
+
* @param {number} index - The `index` parameter is a number representing the index of a step in a collection of steps.
|
|
267
|
+
*
|
|
268
|
+
* @returns A boolean value. It checks if the step at the given index is not disabled, and returns `true` if it is a valid step
|
|
269
|
+
* index, and `false` if it is not a valid step index or if the step at that index is disabled.
|
|
230
270
|
*/
|
|
231
271
|
isValidStepIndex(index) {
|
|
272
|
+
return !this.steps.toArray()[index]?.disabled;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Checks if a given index is within the bounds of the steps array.
|
|
276
|
+
*
|
|
277
|
+
* @param {number} index - The `index` parameter is a number representing the step index that you want to check if it is within
|
|
278
|
+
* the bounds of the steps array.
|
|
279
|
+
*
|
|
280
|
+
* @returns A boolean value indicating whether the given index is within the bounds of the steps array.
|
|
281
|
+
*/
|
|
282
|
+
isStepIndexInBounds(index) {
|
|
232
283
|
return index >= 0 && index < this.steps.length;
|
|
233
284
|
}
|
|
234
285
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: StepperComponent, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { backLabel: "backLabel", continueLabel: "continueLabel", submitLabel: "submitLabel", animationsEnabled: "animationsEnabled" }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { classAttribute: "stepper" }, queries: [{ propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true }, { propertyName: "steps", predicate: StepComponent }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button
|
|
286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: StepperComponent, selector: "hub-stepper, hub-ui-stepper, ng80-stepper", inputs: { backLabel: "backLabel", continueLabel: "continueLabel", submitLabel: "submitLabel", animationsEnabled: "animationsEnabled" }, outputs: { completed: "completed", previousStep: "previousStep", nextStep: "nextStep" }, host: { classAttribute: "stepper" }, queries: [{ propertyName: "stepperNavTpt", first: true, predicate: StepperNavDirective, descendants: true, read: TemplateRef }, { propertyName: "previousButton", first: true, predicate: PreviousButtonDirective, descendants: true }, { propertyName: "nextButton", first: true, predicate: NextButtonDirective, descendants: true }, { propertyName: "submitButton", first: true, predicate: SubmitButtonDirective, descendants: true }, { propertyName: "steps", predicate: StepComponent }], ngImport: i0, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!previousButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex - 1)\"\n\t\t>\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!nextButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex + 1)\"\n\t\t>\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!submitButton\"\n\t\t\t(click)=\"complete()\"\n\t\t\t[disabled]=\"!isValidStepIndex(currentIndex)\"\n\t\t>\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: [":host{--stepper-direction: column;--stepper-primary-color: #009ef7;--stepper-secondary-color: #b5b5c3;--stepper-background-color: #f3f6f9;--stepper-text-color: #181c32;--stepper-disabled-color: #e1e3ea;display:flex;flex-direction:var(--stepper-direction);overflow:auto}.stepper__nav{background-color:var(--stepper-background-color)}.stepper__nav-trigger{color:var(--stepper-text-color)}.stepper__nav-trigger--current{color:var(--stepper-primary-color)}.stepper__nav-trigger--completed{color:var(--stepper-secondary-color)}.stepper__nav-trigger:disabled{color:var(--stepper-disabled-color)}.stepper__button--back{background-color:var(--stepper-background-color);color:var(--stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--stepper-primary-color);color:var(--stepper-background-color)}.stepper__button:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
236
287
|
}
|
|
237
288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: StepperComponent, decorators: [{
|
|
238
289
|
type: Component,
|
|
239
290
|
args: [{ selector: 'hub-stepper, hub-ui-stepper, ng80-stepper', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
240
291
|
class: 'stepper'
|
|
241
|
-
}, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button
|
|
292
|
+
}, template: "<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!previousButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex - 1)\"\n\t\t>\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!nextButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex + 1)\"\n\t\t>\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!submitButton\"\n\t\t\t(click)=\"complete()\"\n\t\t\t[disabled]=\"!isValidStepIndex(currentIndex)\"\n\t\t>\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n", styles: [":host{--stepper-direction: column;--stepper-primary-color: #009ef7;--stepper-secondary-color: #b5b5c3;--stepper-background-color: #f3f6f9;--stepper-text-color: #181c32;--stepper-disabled-color: #e1e3ea;display:flex;flex-direction:var(--stepper-direction);overflow:auto}.stepper__nav{background-color:var(--stepper-background-color)}.stepper__nav-trigger{color:var(--stepper-text-color)}.stepper__nav-trigger--current{color:var(--stepper-primary-color)}.stepper__nav-trigger--completed{color:var(--stepper-secondary-color)}.stepper__nav-trigger:disabled{color:var(--stepper-disabled-color)}.stepper__button--back{background-color:var(--stepper-background-color);color:var(--stepper-text-color)}.stepper__button--next,.stepper__button--submit{background-color:var(--stepper-primary-color);color:var(--stepper-background-color)}.stepper__button:disabled{opacity:.5;cursor:not-allowed}\n"] }]
|
|
242
293
|
}], propDecorators: { backLabel: [{
|
|
243
294
|
type: Input
|
|
244
295
|
}], continueLabel: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-hub-ui-stepper.mjs","sources":["../../../projects/stepper/src/lib/next-button.directive.ts","../../../projects/stepper/src/lib/previous-button.directive.ts","../../../projects/stepper/src/lib/step/step.component.ts","../../../projects/stepper/src/lib/step/step.component.html","../../../projects/stepper/src/lib/stepper-nav.directive.ts","../../../projects/stepper/src/lib/submit-button.directive.ts","../../../projects/stepper/src/lib/stepper/stepper.component.ts","../../../projects/stepper/src/lib/stepper/stepper.component.html","../../../projects/stepper/src/lib/step-trigger.directive.ts","../../../projects/stepper/src/lib/stepper.module.ts","../../../projects/stepper/src/lib/services/stepper-theme-service.ts","../../../projects/stepper/src/public-api.ts","../../../projects/stepper/src/ng-hub-ui-stepper.ts"],"sourcesContent":["import { Directive, HostListener, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[nextButton], button[continueButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--next'\n\t}\n})\nexport class NextButtonDirective {\n\t#stepper = inject(StepperComponent);\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.goToNext();\n\t}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[previousButton], button[backButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--back'\n\t}\n})\nexport class PreviousButtonDirective {\n\t#stepper = inject(StepperComponent);\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.goToPrevious();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tinject,\n\tInput,\n\tOnInit,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport { StepperComponent } from '../stepper/stepper.component';\n\nconst ANIMATION_DURATION = 256;\n\n@Component({\n\tselector: 'hub-step, hub-ui-step, ng80-step',\n\ttemplateUrl: './step.component.html',\n\tstyleUrls: ['./step.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n\t// animations: [\n\t// \ttrigger('slideInOut', [\n\t// \t\ttransition(':enter', [\n\t// \t\t\tstyle({ transform: 'translateX(-100%)', opacity: 0 }),\n\t// \t\t\tanimate(\n\t// \t\t\t\t`${ANIMATION_DURATION}ms ${ANIMATION_DURATION}ms`,\n\t// \t\t\t\tstyle({ transform: 'translateX(0%)', opacity: 1 })\n\t// \t\t\t)\n\t// \t\t]),\n\t// \t\ttransition(':leave', [\n\t// \t\t\tanimate(\n\t// \t\t\t\t`${ANIMATION_DURATION}ms ease-in`,\n\t// \t\t\t\tstyle({ transform: 'translateX(100%)' })\n\t// \t\t\t)\n\t// \t\t])\n\t// \t])\n\t// ]\n})\nexport class StepComponent implements OnInit {\n\tstepper = inject(StepperComponent);\n\n\t/** The index of this step in the stepper */\n\t@Input() index!: number;\n\n\t/** The title of this step */\n\t@Input() title?: string;\n\n\t/** Whether this step is disabled */\n\t@Input() disabled: boolean = false;\n\n\t/** Template reference for the content of this step */\n\t@ViewChild('innerTemplate', { static: true })\n\tinnerTemplate!: TemplateRef<any>;\n\n\tget animationState() {\n\t\treturn this.stepper.animationsEnabled ? '*' : 'void';\n\t}\n\n\tngOnInit(): void {\n\t\t// this.validateInputs();\n\t}\n\n\t/**\n\t * Validates the inputs to ensure the component is properly configured\n\t */\n\tprivate validateInputs(): void {\n\t\tif (this.index === undefined) {\n\t\t\tconsole.warn('StepComponent: index is required');\n\t\t}\n\t\tif (!this.title) {\n\t\t\tconsole.warn(\n\t\t\t\t'StepComponent: title is recommended for accessibility'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the step can be navigated to\n\t * @returns boolean indicating if the step is accessible\n\t */\n\tisAccessible(): boolean {\n\t\treturn !this.disabled;\n\t}\n}\n","<ng-template #innerTemplate>\n\t<div\n\t\tclass=\"step__content\"\n\t\t[attr.data-step-index]=\"index\"\n\t\t[attr.aria-label]=\"title\"\n\t>\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-template>\n","import { TemplateRef, Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[hubStepperNav], [stepperNav]'\n})\nexport class StepperNavDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[submitButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--submit'\n\t}\n})\nexport class SubmitButtonDirective {\n\t#stepper = inject(StepperComponent);\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.complete();\n\t}\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tContentChildren,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOutput,\n\tQueryList,\n\tTemplateRef\n} from '@angular/core';\nimport { NextButtonDirective } from '../next-button.directive';\nimport { PreviousButtonDirective } from '../previous-button.directive';\nimport { StepComponent } from '../step/step.component';\nimport { StepperNavDirective } from '../stepper-nav.directive';\nimport { SubmitButtonDirective } from '../submit-button.directive';\n\n/**\n * StepperComponent is a multi-step interface component for Angular applications.\n * It manages navigation between steps, handles step content, and provides\n * customization options for navigation and controls.\n */\n@Component({\n\tselector: 'hub-stepper, hub-ui-stepper, ng80-stepper',\n\ttemplateUrl: './stepper.component.html',\n\tstyleUrls: ['./stepper.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'stepper'\n\t}\n})\nexport class StepperComponent implements AfterContentInit {\n\t#cdr = inject(ChangeDetectorRef);\n\n\t/** The index of the current active step */\n\tcurrentIndex: number = 0;\n\n\t/** Label for the back button */\n\t@Input() backLabel: string = 'Back';\n\n\t/** Label for the continue button */\n\t@Input() continueLabel: string = 'Continue';\n\n\t/** Label for the submit button */\n\t@Input() submitLabel: string = 'Submit';\n\n\t/** Event emitted when the stepper is completed */\n\t@Output() completed = new EventEmitter<void>();\n\n\t/** Event emitted when moving to the previous step */\n\t@Output() previousStep = new EventEmitter<number>();\n\n\t/** Event emitted when moving to the next step */\n\t@Output() nextStep = new EventEmitter<number>();\n\n\t/** QueryList of all StepComponent children */\n\t@ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n\n\t/** Custom template for stepper navigation */\n\t@ContentChild(StepperNavDirective, { read: TemplateRef })\n\tstepperNavTpt?: TemplateRef<any>;\n\n\t@ContentChild(PreviousButtonDirective)\n\tpreviousButton?: PreviousButtonDirective;\n\n\t@ContentChild(NextButtonDirective)\n\tnextButton?: NextButtonDirective;\n\n\t@ContentChild(SubmitButtonDirective)\n\tsubmitButton?: SubmitButtonDirective;\n\n\t@Input() animationsEnabled: boolean = true;\n\n\t/** Get the current active step */\n\tget currentStep(): StepComponent | null {\n\t\treturn this.steps?.toArray()[this.currentIndex] ?? null;\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis.initializeSteps();\n\t}\n\n\t/**\n\t * Initialize step indices and set up change detection\n\t */\n\tprivate initializeSteps(): void {\n\t\tthis.steps.forEach((step, index) => (step.index = index));\n\t\t// Consider using ngZone.runOutsideAngular for better performance\n\t\tthis.#cdr.detectChanges();\n\t}\n\n\t/**\n\t * Navigate to the previous step\n\t */\n\tgoToPrevious(): void {\n\t\tthis.goTo(this.currentIndex - 1);\n\t}\n\n\t/**\n\t * Navigate to the next step\n\t */\n\tgoToNext(): void {\n\t\tthis.goTo(this.currentIndex + 1);\n\t}\n\n\t/**\n\t * Navigate to a specific step by index\n\t * @param index The index of the step to navigate to\n\t */\n\tgoTo(index: number): void {\n\t\tif (this.isValidStepIndex(index)) {\n\t\t\tthis.currentIndex = index;\n\t\t\tthis.#cdr.detectChanges();\n\t\t\tif (index > this.currentIndex) {\n\t\t\t\tthis.nextStep.emit(index);\n\t\t\t} else {\n\t\t\t\tthis.previousStep.emit(index);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(`Invalid step index: ${index}`);\n\t\t}\n\t}\n\n\t/**\n\t * Check if it's possible to navigate to the next step\n\t */\n\tcanGoNext(): boolean {\n\t\tconst nextIndex = this.currentIndex + 1;\n\t\treturn (\n\t\t\tthis.isValidStepIndex(nextIndex) &&\n\t\t\t!this.steps.toArray()[nextIndex]?.disabled\n\t\t);\n\t}\n\n\t/**\n\t * Check if it's possible to navigate to a specific step\n\t * @param index The index of the step to check\n\t */\n\tcanNavigateTo(index: number): boolean {\n\t\treturn (\n\t\t\tthis.isValidStepIndex(index) &&\n\t\t\t!this.steps.toArray()[index]?.disabled\n\t\t);\n\t}\n\n\t/**\n\t * Complete the stepper process\n\t */\n\tcomplete(): void {\n\t\tthis.completed.emit();\n\t}\n\n\t/**\n\t * Check if a given index is valid within the current steps\n\t * @param index The index to validate\n\t */\n\tprivate isValidStepIndex(index: number): boolean {\n\t\treturn index >= 0 && index < this.steps.length;\n\t}\n}\n","<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button *ngIf=\"!previousButton\" (click)=\"goToNext()\">\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button *ngIf=\"!nextButton\" (click)=\"goToNext()\">\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button *ngIf=\"!submitButton\" (click)=\"complete()\">\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n","import { TemplateRef, Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[hubStepTrigger] [stepTrigger]'\n})\nexport class StepTriggerDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { StepTriggerDirective } from './step-trigger.directive';\nimport { StepComponent } from './step/step.component';\nimport { StepperNavDirective } from './stepper-nav.directive';\nimport { StepperComponent } from './stepper/stepper.component';\nimport { PreviousButtonDirective } from './previous-button.directive';\nimport { NextButtonDirective } from './next-button.directive';\nimport { SubmitButtonDirective } from './submit-button.directive';\n\n@NgModule({\n\tdeclarations: [\n\t\tStepperComponent,\n\t\tStepComponent,\n\t\tStepTriggerDirective,\n\t\tStepperNavDirective\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tPreviousButtonDirective,\n\t\tNextButtonDirective,\n\t\tSubmitButtonDirective\n\t],\n\texports: [\n\t\tStepperComponent,\n\t\tStepComponent,\n\t\tStepTriggerDirective,\n\t\tStepperNavDirective,\n\t\tPreviousButtonDirective,\n\t\tNextButtonDirective,\n\t\tSubmitButtonDirective\n\t]\n})\nexport class StepperModule {}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class StepperThemeService {\n\tprivate renderer: Renderer2;\n\n\tconstructor(rendererFactory: RendererFactory2) {\n\t\tthis.renderer = rendererFactory.createRenderer(null, null);\n\t}\n\n\tsetTheme(theme: { [key: string]: string }) {\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tthis.renderer.setStyle(\n\t\t\t\tdocument.documentElement,\n\t\t\t\t`--stepper-${key}`,\n\t\t\t\ttheme[key]\n\t\t\t);\n\t\t});\n\t}\n}\n\n// Usage in a component:\n// constructor(private themeService: StepperThemeService) {}\n//\n// ngOnInit() {\n// this.themeService.setTheme({\n// 'primary-color': '#ff4081',\n// 'background-color': '#f0f0f0'\n// });\n// }\n","/*\n * Public API Surface of stepper\n */\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/step/step.component';\nexport * from './lib/stepper.module';\nexport * from './lib/previous-button.directive';\nexport * from './lib/next-button.directive';\nexport * from './lib/submit-button.directive';\nexport * from './lib/step-trigger.directive';\nexport * from './lib/stepper-nav.directive';\nexport * from './lib/services/stepper-theme-service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAUa,mBAAmB,CAAA;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACzB;8GALW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,qBAAA;AACD,iBAAA,CAAA;8BAIuB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;MCHT,uBAAuB,CAAA;AACnC,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KAC7B;8GALW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,qBAAA;AACD,iBAAA,CAAA;8BAIuB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;ACFtB,MAAM,kBAAkB,GAAG,GAAG,CAAC;MAyBlB,aAAa,CAAA;AAvB1B,IAAA,WAAA,GAAA;AAwBC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;;QAS1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAmCnC,KAAA;AA7BA,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,MAAM,CAAC;KACrD;IAED,QAAQ,GAAA;;KAEP;AAED;;AAEG;IACK,cAAc,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,CAAC,IAAI,CACX,uDAAuD,CACvD,CAAC;AACF,SAAA;KACD;AAED;;;AAGG;IACH,YAAY,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;KACtB;8GA5CW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wQCpC1B,0MASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FD2Ba,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvBzB,SAAS;+BACC,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0MAAA,EAAA,CAAA;8BAuBtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME5ChC,mBAAmB,CAAA;AAC/B,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;8GADrC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,iBAAA,CAAA;;;MCMY,qBAAqB,CAAA;AACjC,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACzB;8GALW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,yCAAyC;AAChD,qBAAA;AACD,iBAAA,CAAA;8BAIuB,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;ACOtB;;;;AAIG;MAUU,gBAAgB,CAAA;AAT7B,IAAA,WAAA,GAAA;AAUC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;QAGjC,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;;QAGhB,IAAS,CAAA,SAAA,GAAW,MAAM,CAAC;;QAG3B,IAAa,CAAA,aAAA,GAAW,UAAU,CAAC;;QAGnC,IAAW,CAAA,WAAA,GAAW,QAAQ,CAAC;;AAG9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAGrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;;AAG1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;QAkBvC,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;AAwF3C,KAAA;AA/HA,IAAA,IAAI,CAA6B;;AA0CjC,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;KACxD;IAED,kBAAkB,GAAA;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED;;AAEG;IACK,eAAe,GAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED;;AAEG;IACH,YAAY,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KACjC;AAED;;AAEG;IACH,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,IAAI,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AACD,SAAA;AAAM,aAAA;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAA,CAAE,CAAC,CAAC;AAC9C,SAAA;KACD;AAED;;AAEG;IACH,SAAS,GAAA;AACR,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxC,QAAA,QACC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EACzC;KACF;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,QACC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5B,YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EACrC;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACtB;AAED;;;AAGG;AACK,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACrC,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/C;8GA/HW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EA4Bd,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGxC,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uBAAuB,EAGvB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAGnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAZlB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAa,6BC3D/B,27EAkFA,EAAA,MAAA,EAAA,CAAA,q3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDhDa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,EAGpC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,SAAS;AAChB,qBAAA,EAAA,QAAA,EAAA,27EAAA,EAAA,MAAA,EAAA,CAAA,q3BAAA,CAAA,EAAA,CAAA;8BASQ,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAGG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAGG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAGyB,KAAK,EAAA,CAAA;sBAApC,eAAe;uBAAC,aAAa,CAAA;gBAI9B,aAAa,EAAA,CAAA;sBADZ,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAIxD,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,uBAAuB,CAAA;gBAIrC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,mBAAmB,CAAA;gBAIjC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,qBAAqB,CAAA;gBAG1B,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MErEM,oBAAoB,CAAA;AAChC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;8GADrC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,iBAAA,CAAA;;;MC6BY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBArBxB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;AACpB,YAAA,mBAAmB,aAGnB,YAAY;YACZ,uBAAuB;YACvB,mBAAmB;AACnB,YAAA,qBAAqB,aAGrB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAfxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAeD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE;wBACb,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,uBAAuB;wBACvB,mBAAmB;wBACnB,qBAAqB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,qBAAqB;AACrB,qBAAA;AACD,iBAAA,CAAA;;;MC3BY,mBAAmB,CAAA;AAG/B,IAAA,WAAA,CAAY,eAAiC,EAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3D;AAED,IAAA,QAAQ,CAAC,KAAgC,EAAA;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACrB,QAAQ,CAAC,eAAe,EACxB,CAAa,UAAA,EAAA,GAAG,EAAE,EAClB,KAAK,CAAC,GAAG,CAAC,CACV,CAAC;AACH,SAAC,CAAC,CAAC;KACH;8GAfW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;ACJD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-hub-ui-stepper.mjs","sources":["../../../projects/stepper/src/lib/next-button.directive.ts","../../../projects/stepper/src/lib/previous-button.directive.ts","../../../projects/stepper/src/lib/step/step.component.ts","../../../projects/stepper/src/lib/step/step.component.html","../../../projects/stepper/src/lib/stepper-nav.directive.ts","../../../projects/stepper/src/lib/submit-button.directive.ts","../../../projects/stepper/src/lib/stepper/stepper.component.ts","../../../projects/stepper/src/lib/stepper/stepper.component.html","../../../projects/stepper/src/lib/step-trigger.directive.ts","../../../projects/stepper/src/lib/stepper.module.ts","../../../projects/stepper/src/lib/services/stepper-theme-service.ts","../../../projects/stepper/src/public-api.ts","../../../projects/stepper/src/ng-hub-ui-stepper.ts"],"sourcesContent":["import {\n\tAfterContentInit,\n\tDirective,\n\teffect,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInjector\n} from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[nextButton], button[continueButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--next'\n\t}\n})\nexport class NextButtonDirective implements AfterContentInit {\n\t#injector = inject(Injector);\n\t#stepper = inject(StepperComponent);\n\n\t@HostBinding('disabled') disabled = false;\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.goToNext();\n\t}\n\n\tngAfterContentInit(): void {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.disabled = !this.#stepper.canNavigateTo(\n\t\t\t\t\tthis.#stepper.currentIndex$() + 1\n\t\t\t\t);\n\t\t\t},\n\t\t\t{ injector: this.#injector }\n\t\t);\n\t}\n}\n","import {\n\tAfterContentInit,\n\tDirective,\n\teffect,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInjector\n} from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[previousButton], button[backButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--back'\n\t}\n})\nexport class PreviousButtonDirective implements AfterContentInit {\n\t#injector = inject(Injector);\n\t#stepper = inject(StepperComponent);\n\n\t@HostBinding('disabled') disabled = false;\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.goToPrevious();\n\t}\n\n\tngAfterContentInit(): void {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.disabled = !this.#stepper.canNavigateTo(\n\t\t\t\t\tthis.#stepper.currentIndex$() - 1\n\t\t\t\t);\n\t\t\t},\n\t\t\t{ injector: this.#injector }\n\t\t);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tinject,\n\tInput,\n\tOnInit,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport { StepperComponent } from '../stepper/stepper.component';\n\nconst ANIMATION_DURATION = 256;\n\n@Component({\n\tselector: 'hub-step, hub-ui-step, ng80-step',\n\ttemplateUrl: './step.component.html',\n\tstyleUrls: ['./step.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n\t// animations: [\n\t// \ttrigger('slideInOut', [\n\t// \t\ttransition(':enter', [\n\t// \t\t\tstyle({ transform: 'translateX(-100%)', opacity: 0 }),\n\t// \t\t\tanimate(\n\t// \t\t\t\t`${ANIMATION_DURATION}ms ${ANIMATION_DURATION}ms`,\n\t// \t\t\t\tstyle({ transform: 'translateX(0%)', opacity: 1 })\n\t// \t\t\t)\n\t// \t\t]),\n\t// \t\ttransition(':leave', [\n\t// \t\t\tanimate(\n\t// \t\t\t\t`${ANIMATION_DURATION}ms ease-in`,\n\t// \t\t\t\tstyle({ transform: 'translateX(100%)' })\n\t// \t\t\t)\n\t// \t\t])\n\t// \t])\n\t// ]\n})\nexport class StepComponent implements OnInit {\n\tstepper = inject(StepperComponent);\n\n\t/** The index of this step in the stepper */\n\t@Input() index!: number;\n\n\t/** The title of this step */\n\t@Input() title?: string;\n\n\t/** Whether this step is disabled */\n\t@Input() disabled: boolean = false;\n\n\t/** Template reference for the content of this step */\n\t@ViewChild('innerTemplate', { static: true })\n\tinnerTemplate!: TemplateRef<any>;\n\n\tget animationState() {\n\t\treturn this.stepper.animationsEnabled ? '*' : 'void';\n\t}\n\n\tngOnInit(): void {\n\t\t// this.validateInputs();\n\t}\n\n\t/**\n\t * Validates the inputs to ensure the component is properly configured\n\t */\n\tprivate validateInputs(): void {\n\t\tif (this.index === undefined) {\n\t\t\tconsole.warn('StepComponent: index is required');\n\t\t}\n\t\tif (!this.title) {\n\t\t\tconsole.warn(\n\t\t\t\t'StepComponent: title is recommended for accessibility'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the step can be navigated to\n\t * @returns boolean indicating if the step is accessible\n\t */\n\tisAccessible(): boolean {\n\t\treturn !this.disabled;\n\t}\n}\n","<ng-template #innerTemplate>\n\t<div\n\t\tclass=\"step__content\"\n\t\t[attr.data-step-index]=\"index\"\n\t\t[attr.aria-label]=\"title\"\n\t>\n\t\t<ng-content></ng-content>\n\t</div>\n</ng-template>\n","import { TemplateRef, Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[hubStepperNav], [stepperNav]'\n})\nexport class StepperNavDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import {\n\tAfterContentInit,\n\tDirective,\n\teffect,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInjector\n} from '@angular/core';\nimport { StepperComponent } from './stepper/stepper.component';\n\n@Directive({\n\tselector: 'button[submitButton]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'stepper__button stepper__button--submit'\n\t}\n})\nexport class SubmitButtonDirective implements AfterContentInit {\n\t#injector = inject(Injector);\n\t#stepper = inject(StepperComponent);\n\n\t@HostBinding('disabled') disabled = false;\n\n\t@HostListener('click') onClick() {\n\t\tthis.#stepper.complete();\n\t}\n\n\tngAfterContentInit(): void {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.disabled = !this.#stepper.isValidStepIndex(\n\t\t\t\t\tthis.#stepper.currentIndex$()\n\t\t\t\t);\n\t\t\t},\n\t\t\t{ injector: this.#injector }\n\t\t);\n\t}\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tContentChildren,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOutput,\n\tQueryList,\n\tsignal,\n\tTemplateRef\n} from '@angular/core';\nimport { NextButtonDirective } from '../next-button.directive';\nimport { PreviousButtonDirective } from '../previous-button.directive';\nimport { StepComponent } from '../step/step.component';\nimport { StepperNavDirective } from '../stepper-nav.directive';\nimport { SubmitButtonDirective } from '../submit-button.directive';\n\n/**\n * StepperComponent is a multi-step interface component for Angular applications.\n * It manages navigation between steps, handles step content, and provides\n * customization options for navigation and controls.\n */\n@Component({\n\tselector: 'hub-stepper, hub-ui-stepper, ng80-stepper',\n\ttemplateUrl: './stepper.component.html',\n\tstyleUrls: ['./stepper.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'stepper'\n\t}\n})\nexport class StepperComponent implements AfterContentInit {\n\t#cdr = inject(ChangeDetectorRef);\n\n\t/** The index of the current active step */\n\tcurrentIndex$ = signal(0);\n\n\tget currentIndex(): number {\n\t\treturn this.currentIndex$();\n\t}\n\n\t/** Label for the back button */\n\t@Input() backLabel: string = 'Back';\n\n\t/** Label for the continue button */\n\t@Input() continueLabel: string = 'Continue';\n\n\t/** Label for the submit button */\n\t@Input() submitLabel: string = 'Submit';\n\n\t/** Event emitted when the stepper is completed */\n\t@Output() completed = new EventEmitter<void>();\n\n\t/** Event emitted when moving to the previous step */\n\t@Output() previousStep = new EventEmitter<number>();\n\n\t/** Event emitted when moving to the next step */\n\t@Output() nextStep = new EventEmitter<number>();\n\n\t/** QueryList of all StepComponent children */\n\t@ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n\n\t/** Custom template for stepper navigation */\n\t@ContentChild(StepperNavDirective, { read: TemplateRef })\n\tstepperNavTpt?: TemplateRef<any>;\n\n\t@ContentChild(PreviousButtonDirective)\n\tpreviousButton?: PreviousButtonDirective;\n\n\t@ContentChild(NextButtonDirective)\n\tnextButton?: NextButtonDirective;\n\n\t@ContentChild(SubmitButtonDirective)\n\tsubmitButton?: SubmitButtonDirective;\n\n\t@Input() animationsEnabled: boolean = true;\n\n\t/** Get the current active step */\n\tget currentStep(): StepComponent | null {\n\t\treturn this.steps?.toArray()[this.currentIndex] ?? null;\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis.initializeSteps();\n\t}\n\n\t/**\n\t * Initialize step indices and set up change detection\n\t */\n\tprivate initializeSteps(): void {\n\t\tthis.steps.forEach((step, index) => (step.index = index));\n\t\t// Consider using ngZone.runOutsideAngular for better performance\n\t\tthis.#cdr.detectChanges();\n\t}\n\n\t/**\n\t * Navigate to the previous step\n\t */\n\tgoToPrevious(): void {\n\t\tthis.goTo(this.currentIndex - 1);\n\t}\n\n\t/**\n\t * Navigate to the next step\n\t */\n\tgoToNext(): void {\n\t\tthis.goTo(this.currentIndex + 1);\n\t}\n\n\t/**\n\t * Navigate to a specific step by index\n\t * @param index The index of the step to navigate to\n\t */\n\tgoTo(index: number): void {\n\t\tif (this.isStepIndexInBounds(index)) {\n\t\t\tthis.currentIndex$.set(index);\n\t\t\tthis.#cdr.detectChanges();\n\t\t\tif (index > this.currentIndex) {\n\t\t\t\tthis.nextStep.emit(index);\n\t\t\t} else {\n\t\t\t\tthis.previousStep.emit(index);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(`Invalid step index: ${index}`);\n\t\t}\n\t}\n\n\t/**\n\t * Check if it's possible to navigate to a specific step\n\t * @param index The index of the step to check\n\t */\n\tcanNavigateTo(index: number): boolean {\n\t\treturn this.isStepIndexInBounds(index) && this.isValidStepIndex(index);\n\t}\n\n\t/**\n\t * Complete the stepper process\n\t */\n\tcomplete(): void {\n\t\tthis.completed.emit();\n\t}\n\n\t/**\n\t * Checks if a step at a given index is not disabled.\n\t *\n\t * @param {number} index - The `index` parameter is a number representing the index of a step in a collection of steps.\n\t *\n\t * @returns A boolean value. It checks if the step at the given index is not disabled, and returns `true` if it is a valid step\n\t * index, and `false` if it is not a valid step index or if the step at that index is disabled.\n\t */\n\tisValidStepIndex(index: number): boolean {\n\t\treturn !this.steps.toArray()[index]?.disabled;\n\t}\n\n\t/**\n\t * Checks if a given index is within the bounds of the steps array.\n\t *\n\t * @param {number} index - The `index` parameter is a number representing the step index that you want to check if it is within\n\t * the bounds of the steps array.\n\t *\n\t * @returns A boolean value indicating whether the given index is within the bounds of the steps array.\n\t */\n\tisStepIndexInBounds(index: number): boolean {\n\t\treturn index >= 0 && index < this.steps.length;\n\t}\n}\n","<!--begin::Nav-->\n<nav class=\"stepper__nav\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"stepperNavTpt || defaultNavTpt\"\n\t\t[ngTemplateOutletContext]=\"{ steps: steps, currentIndex }\"\n\t></ng-container>\n</nav>\n<!--end::Nav-->\n\n<!--begin::Content-->\n<div class=\"stepper__content\">\n\t<ng-container\n\t\t[ngTemplateOutlet]=\"currentStep?.innerTemplate\"\n\t></ng-container>\n</div>\n<!--end::Content-->\n\n<!--begin::Controls-->\n<div class=\"stepper__controls\">\n\t<ng-container *ngIf=\"currentIndex > 0\">\n\t\t<ng-content select=\"button[previousButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!previousButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex - 1)\"\n\t\t>\n\t\t\t{{ backLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex < steps.length - 1\">\n\t\t<ng-content select=\"button[nextButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!nextButton\"\n\t\t\t(click)=\"goToNext()\"\n\t\t\t[disabled]=\"canNavigateTo(currentIndex + 1)\"\n\t\t>\n\t\t\t{{ continueLabel }}\n\t\t</button>\n\t</ng-container>\n\n\t<ng-container *ngIf=\"currentIndex === steps.length - 1\">\n\t\t<ng-content select=\"button[submitButton]\"></ng-content>\n\t\t<button\n\t\t\t*ngIf=\"!submitButton\"\n\t\t\t(click)=\"complete()\"\n\t\t\t[disabled]=\"!isValidStepIndex(currentIndex)\"\n\t\t>\n\t\t\t{{ submitLabel }}\n\t\t</button>\n\t</ng-container>\n</div>\n<!--end::Controls-->\n\n<!-- begin:default-nav -->\n<ng-template #defaultNavTpt let-steps=\"steps\" let-currentIndex=\"currentIndex\">\n\t<ul class=\"stepper__nav-list\">\n\t\t<li *ngFor=\"let step of steps; let i = index\" class=\"stepper__nav-item\">\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\tstep?.stepTriggerTpt || defaultNavTriggerTpt\n\t\t\t\t\"\n\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\ttitle: step.title,\n\t\t\t\t\tindex: i,\n\t\t\t\t\tisCurrent: currentIndex === i,\n\t\t\t\t\tisCompleted: i < currentIndex\n\t\t\t\t}\"\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n<!-- end:default-nav -->\n\n<!-- begin:default-nav-trigger -->\n<ng-template\n\t#defaultNavTriggerTpt\n\tlet-title=\"title\"\n\tlet-index=\"index\"\n\tlet-isCurrent=\"isCurrent\"\n\tlet-isCompleted=\"isCompleted\"\n>\n\t<button\n\t\tclass=\"stepper__nav-trigger\"\n\t\t[class.stepper__nav-trigger--current]=\"isCurrent\"\n\t\t[class.stepper__nav-trigger--completed]=\"isCompleted\"\n\t\t[disabled]=\"!canNavigateTo(index)\"\n\t\t(click)=\"goTo(index)\"\n\t>\n\t\t<span class=\"stepper__nav-indicator\">{{ index + 1 }}</span>\n\t\t<span class=\"stepper__nav-title\" *ngIf=\"title\">{{ title }}</span>\n\t</button>\n</ng-template>\n<!-- end:default-nav-trigger -->\n","import { TemplateRef, Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[hubStepTrigger] [stepTrigger]'\n})\nexport class StepTriggerDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { StepTriggerDirective } from './step-trigger.directive';\nimport { StepComponent } from './step/step.component';\nimport { StepperNavDirective } from './stepper-nav.directive';\nimport { StepperComponent } from './stepper/stepper.component';\nimport { PreviousButtonDirective } from './previous-button.directive';\nimport { NextButtonDirective } from './next-button.directive';\nimport { SubmitButtonDirective } from './submit-button.directive';\n\n@NgModule({\n\tdeclarations: [\n\t\tStepperComponent,\n\t\tStepComponent,\n\t\tStepTriggerDirective,\n\t\tStepperNavDirective\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tPreviousButtonDirective,\n\t\tNextButtonDirective,\n\t\tSubmitButtonDirective\n\t],\n\texports: [\n\t\tStepperComponent,\n\t\tStepComponent,\n\t\tStepTriggerDirective,\n\t\tStepperNavDirective,\n\t\tPreviousButtonDirective,\n\t\tNextButtonDirective,\n\t\tSubmitButtonDirective\n\t]\n})\nexport class StepperModule {}\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class StepperThemeService {\n\tprivate renderer: Renderer2;\n\n\tconstructor(rendererFactory: RendererFactory2) {\n\t\tthis.renderer = rendererFactory.createRenderer(null, null);\n\t}\n\n\tsetTheme(theme: { [key: string]: string }) {\n\t\tObject.keys(theme).forEach((key) => {\n\t\t\tthis.renderer.setStyle(\n\t\t\t\tdocument.documentElement,\n\t\t\t\t`--stepper-${key}`,\n\t\t\t\ttheme[key]\n\t\t\t);\n\t\t});\n\t}\n}\n\n// Usage in a component:\n// constructor(private themeService: StepperThemeService) {}\n//\n// ngOnInit() {\n// this.themeService.setTheme({\n// 'primary-color': '#ff4081',\n// 'background-color': '#f0f0f0'\n// });\n// }\n","/*\n * Public API Surface of stepper\n */\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/step/step.component';\nexport * from './lib/stepper.module';\nexport * from './lib/previous-button.directive';\nexport * from './lib/next-button.directive';\nexport * from './lib/submit-button.directive';\nexport * from './lib/step-trigger.directive';\nexport * from './lib/stepper-nav.directive';\nexport * from './lib/services/stepper-theme-service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAkBa,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEX,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAgB1C,KAAA;AAnBA,IAAA,SAAS,CAAoB;AAC7B,IAAA,QAAQ,CAA4B;IAIb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACzB;IAED,kBAAkB,GAAA;QACjB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC3C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CACjC,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B,CAAC;KACF;8GAnBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,qBAAA;AACD,iBAAA,CAAA;8BAKyB,QAAQ,EAAA,CAAA;sBAAhC,WAAW;uBAAC,UAAU,CAAA;gBAEA,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;MCNT,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAQC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEX,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAgB1C,KAAA;AAnBA,IAAA,SAAS,CAAoB;AAC7B,IAAA,QAAQ,CAA4B;IAIb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KAC7B;IAED,kBAAkB,GAAA;QACjB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC3C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CACjC,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B,CAAC;KACF;8GAnBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,qBAAA;AACD,iBAAA,CAAA;8BAKyB,QAAQ,EAAA,CAAA;sBAAhC,WAAW;uBAAC,UAAU,CAAA;gBAEA,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;ACbtB,MAAM,kBAAkB,GAAG,GAAG,CAAC;MAyBlB,aAAa,CAAA;AAvB1B,IAAA,WAAA,GAAA;AAwBC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;;QAS1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAmCnC,KAAA;AA7BA,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,GAAG,MAAM,CAAC;KACrD;IAED,QAAQ,GAAA;;KAEP;AAED;;AAEG;IACK,cAAc,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,CAAC,IAAI,CACX,uDAAuD,CACvD,CAAC;AACF,SAAA;KACD;AAED;;;AAGG;IACH,YAAY,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;KACtB;8GA5CW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,wQCpC1B,0MASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FD2Ba,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvBzB,SAAS;+BACC,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0MAAA,EAAA,CAAA;8BAuBtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME5ChC,mBAAmB,CAAA;AAC/B,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;8GADrC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,iBAAA,CAAA;;;MCcY,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;AAQC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEX,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAgB1C,KAAA;AAnBA,IAAA,SAAS,CAAoB;AAC7B,IAAA,QAAQ,CAA4B;IAIb,OAAO,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACzB;IAED,kBAAkB,GAAA;QACjB,MAAM,CACL,MAAK;AACJ,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC9C,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAC7B,CAAC;SACF,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC5B,CAAC;KACF;8GAnBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,yCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACL,wBAAA,KAAK,EAAE,yCAAyC;AAChD,qBAAA;AACD,iBAAA,CAAA;8BAKyB,QAAQ,EAAA,CAAA;sBAAhC,WAAW;uBAAC,UAAU,CAAA;gBAEA,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;ACHtB;;;;AAIG;MAUU,gBAAgB,CAAA;AAT7B,IAAA,WAAA,GAAA;AAUC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAGjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;QAOjB,IAAS,CAAA,SAAA,GAAW,MAAM,CAAC;;QAG3B,IAAa,CAAA,aAAA,GAAW,UAAU,CAAC;;QAGnC,IAAW,CAAA,WAAA,GAAW,QAAQ,CAAC;;AAG9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAGrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;;AAG1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;QAkBvC,IAAiB,CAAA,iBAAA,GAAY,IAAI,CAAC;AA0F3C,KAAA;AArIA,IAAA,IAAI,CAA6B;AAKjC,IAAA,IAAI,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;KAC5B;;AAuCD,IAAA,IAAI,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;KACxD;IAED,kBAAkB,GAAA;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;KACvB;AAED;;AAEG;IACK,eAAe,GAAA;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED;;AAEG;IACH,YAAY,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KACjC;AAED;;AAEG;IACH,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,IAAI,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACN,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AACD,SAAA;AAAM,aAAA;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAA,CAAE,CAAC,CAAC;AAC9C,SAAA;KACD;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACvE;AAED;;AAEG;IACH,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACtB;AAED;;;;;;;AAOG;AACH,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;KAC9C;AAED;;;;;;;AAOG;AACH,IAAA,mBAAmB,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/C;8GArIW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAgCd,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGxC,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uBAAuB,EAGvB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAGnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAZlB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAa,6BChE/B,ypFA8FA,EAAA,MAAA,EAAA,CAAA,q3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FD3Da,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2CAA2C,EAGpC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,SAAS;AAChB,qBAAA,EAAA,QAAA,EAAA,ypFAAA,EAAA,MAAA,EAAA,CAAA,q3BAAA,CAAA,EAAA,CAAA;8BAaQ,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAGG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAGG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAGyB,KAAK,EAAA,CAAA;sBAApC,eAAe;uBAAC,aAAa,CAAA;gBAI9B,aAAa,EAAA,CAAA;sBADZ,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAIxD,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,uBAAuB,CAAA;gBAIrC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,mBAAmB,CAAA;gBAIjC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,qBAAqB,CAAA;gBAG1B,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;ME1EM,oBAAoB,CAAA;AAChC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;8GADrC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,iBAAA,CAAA;;;MC6BY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBArBxB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;AACpB,YAAA,mBAAmB,aAGnB,YAAY;YACZ,uBAAuB;YACvB,mBAAmB;AACnB,YAAA,qBAAqB,aAGrB,gBAAgB;YAChB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAfxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAeD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE;wBACb,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,uBAAuB;wBACvB,mBAAmB;wBACnB,qBAAqB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,qBAAqB;AACrB,qBAAA;AACD,iBAAA,CAAA;;;MC3BY,mBAAmB,CAAA;AAG/B,IAAA,WAAA,CAAY,eAAiC,EAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3D;AAED,IAAA,QAAQ,CAAC,KAAgC,EAAA;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACrB,QAAQ,CAAC,eAAe,EACxB,CAAa,UAAA,EAAA,GAAG,EAAE,EAClB,KAAK,CAAC,GAAG,CAAC,CACV,CAAC;AACH,SAAC,CAAC,CAAC;KACH;8GAfW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;ACJD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { AfterContentInit } from '@angular/core';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class NextButtonDirective {
|
|
3
|
+
export declare class NextButtonDirective implements AfterContentInit {
|
|
3
4
|
#private;
|
|
5
|
+
disabled: boolean;
|
|
4
6
|
onClick(): void;
|
|
7
|
+
ngAfterContentInit(): void;
|
|
5
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<NextButtonDirective, never>;
|
|
6
9
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NextButtonDirective, "button[nextButton], button[continueButton]", never, {}, {}, never, never, true, never>;
|
|
7
10
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { AfterContentInit } from '@angular/core';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class PreviousButtonDirective {
|
|
3
|
+
export declare class PreviousButtonDirective implements AfterContentInit {
|
|
3
4
|
#private;
|
|
5
|
+
disabled: boolean;
|
|
4
6
|
onClick(): void;
|
|
7
|
+
ngAfterContentInit(): void;
|
|
5
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<PreviousButtonDirective, never>;
|
|
6
9
|
static ɵdir: i0.ɵɵDirectiveDeclaration<PreviousButtonDirective, "button[previousButton], button[backButton]", never, {}, {}, never, never, true, never>;
|
|
7
10
|
}
|
|
@@ -12,7 +12,8 @@ import * as i0 from "@angular/core";
|
|
|
12
12
|
export declare class StepperComponent implements AfterContentInit {
|
|
13
13
|
#private;
|
|
14
14
|
/** The index of the current active step */
|
|
15
|
-
currentIndex
|
|
15
|
+
currentIndex$: import("@angular/core").WritableSignal<number>;
|
|
16
|
+
get currentIndex(): number;
|
|
16
17
|
/** Label for the back button */
|
|
17
18
|
backLabel: string;
|
|
18
19
|
/** Label for the continue button */
|
|
@@ -53,10 +54,6 @@ export declare class StepperComponent implements AfterContentInit {
|
|
|
53
54
|
* @param index The index of the step to navigate to
|
|
54
55
|
*/
|
|
55
56
|
goTo(index: number): void;
|
|
56
|
-
/**
|
|
57
|
-
* Check if it's possible to navigate to the next step
|
|
58
|
-
*/
|
|
59
|
-
canGoNext(): boolean;
|
|
60
57
|
/**
|
|
61
58
|
* Check if it's possible to navigate to a specific step
|
|
62
59
|
* @param index The index of the step to check
|
|
@@ -67,10 +64,23 @@ export declare class StepperComponent implements AfterContentInit {
|
|
|
67
64
|
*/
|
|
68
65
|
complete(): void;
|
|
69
66
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
67
|
+
* Checks if a step at a given index is not disabled.
|
|
68
|
+
*
|
|
69
|
+
* @param {number} index - The `index` parameter is a number representing the index of a step in a collection of steps.
|
|
70
|
+
*
|
|
71
|
+
* @returns A boolean value. It checks if the step at the given index is not disabled, and returns `true` if it is a valid step
|
|
72
|
+
* index, and `false` if it is not a valid step index or if the step at that index is disabled.
|
|
73
|
+
*/
|
|
74
|
+
isValidStepIndex(index: number): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Checks if a given index is within the bounds of the steps array.
|
|
77
|
+
*
|
|
78
|
+
* @param {number} index - The `index` parameter is a number representing the step index that you want to check if it is within
|
|
79
|
+
* the bounds of the steps array.
|
|
80
|
+
*
|
|
81
|
+
* @returns A boolean value indicating whether the given index is within the bounds of the steps array.
|
|
72
82
|
*/
|
|
73
|
-
|
|
83
|
+
isStepIndexInBounds(index: number): boolean;
|
|
74
84
|
static ɵfac: i0.ɵɵFactoryDeclaration<StepperComponent, never>;
|
|
75
85
|
static ɵcmp: i0.ɵɵComponentDeclaration<StepperComponent, "hub-stepper, hub-ui-stepper, ng80-stepper", never, { "backLabel": { "alias": "backLabel"; "required": false; }; "continueLabel": { "alias": "continueLabel"; "required": false; }; "submitLabel": { "alias": "submitLabel"; "required": false; }; "animationsEnabled": { "alias": "animationsEnabled"; "required": false; }; }, { "completed": "completed"; "previousStep": "previousStep"; "nextStep": "nextStep"; }, ["stepperNavTpt", "previousButton", "nextButton", "submitButton", "steps"], ["button[previousButton]", "button[nextButton]", "button[submitButton]"], false, never>;
|
|
76
86
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { AfterContentInit } from '@angular/core';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class SubmitButtonDirective {
|
|
3
|
+
export declare class SubmitButtonDirective implements AfterContentInit {
|
|
3
4
|
#private;
|
|
5
|
+
disabled: boolean;
|
|
4
6
|
onClick(): void;
|
|
7
|
+
ngAfterContentInit(): void;
|
|
5
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SubmitButtonDirective, never>;
|
|
6
9
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SubmitButtonDirective, "button[submitButton]", never, {}, {}, never, never, true, never>;
|
|
7
10
|
}
|
|
Binary file
|
package/package.json
CHANGED
|
Binary file
|