@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
119 lines • 11.2 kB
JavaScript
/**
* Copyright (c) 2025 Visa, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**/
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { ContentChildren, Directive, HostBinding, Input, QueryList } from '@angular/core';
import { WizardStepDirective } from '../wizard-step/wizard-step.directive';
import * as i0 from "@angular/core";
export class WizardDirective {
/**
* Provides custom class(es) for custom styling.
* @default .v-wizard
*/
get class() {
return [
this._class,
'v-wizard',
this.vertical ? 'v-wizard-vertical' : '',
this.compact ? 'v-wizard-compact' : ''
].join(' ');
}
set class(value) {
this._class = value;
}
get hostClass() {
return this.class;
}
constructor() {
this._activeIndex = 0;
this._class = '';
this._vertical = false;
this._compact = false;
this._ariaLive = 'polite';
}
/**
* Sets wizard to vertical orientation when true.
* @default false
*/
get vertical() {
return this._vertical;
}
set vertical(value) {
this._vertical = coerceBooleanProperty(value);
}
/**
* Sets wizard to compact variant when true.
* @default false
*/
get compact() {
return this._compact;
}
set compact(value) {
this._compact = coerceBooleanProperty(value);
}
/**
* Sets the aria-live attribute for the wizard. <br />
* This attribute is used to inform assistive technologies, like screen readers, about updates to wizard.
* @default 'polite'
*/
get ariaLive() {
return this._ariaLive;
}
set ariaLive(value) {
this._ariaLive = value;
}
ngAfterContentInit() {
this._activeIndex = this.steps.toArray().findIndex((step) => step.active);
if (this._activeIndex > 0) {
this.steps.toArray().forEach((step, index) => {
if (index < this._activeIndex) {
step.complete = true;
}
});
}
}
get hostAriaLive() {
return this.ariaLive;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: WizardDirective, isStandalone: true, selector: "[v-wizard]", inputs: { class: "class", vertical: "vertical", compact: "compact", ariaLive: ["aria-live", "ariaLive"] }, host: { properties: { "class": "this.hostClass", "attr.aria-live": "this.hostAriaLive" } }, queries: [{ propertyName: "steps", predicate: WizardStepDirective }], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[v-wizard]'
}]
}], ctorParameters: () => [], propDecorators: { steps: [{
type: ContentChildren,
args: [WizardStepDirective]
}], class: [{
type: Input
}], hostClass: [{
type: HostBinding,
args: ['class']
}], vertical: [{
type: Input
}], compact: [{
type: Input
}], ariaLive: [{
type: Input,
args: ['aria-live']
}], hostAriaLive: [{
type: HostBinding,
args: ['attr.aria-live']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi93aXphcmQvd2l6YXJkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFvQixlQUFlLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQU0zRSxNQUFNLE9BQU8sZUFBZTtJQUcxQjs7O09BR0c7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPO1lBQ0wsSUFBSSxDQUFDLE1BQU07WUFDWCxVQUFVO1lBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDdkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDtRQXZCQSxpQkFBWSxHQUFXLENBQUMsQ0FBQztRQWlCekIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQW1CcEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQWEzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBYzFCLGNBQVMsR0FBVyxRQUFRLENBQUM7SUF4Q2QsQ0FBQztJQUVoQjs7O09BR0c7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBbUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBR0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7K0dBakZVLGVBQWU7bUdBQWYsZUFBZSxtU0FDVCxtQkFBbUI7OzRGQUR6QixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtpQkFDdkI7d0RBRXVDLEtBQUs7c0JBQTFDLGVBQWU7dUJBQUMsbUJBQW1CO2dCQU9oQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0YsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU87Z0JBWWhCLFFBQVE7c0JBRFgsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBZUYsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLFdBQVc7Z0JBcUJkLFlBQVk7c0JBRGYsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXphcmRTdGVwRGlyZWN0aXZlIH0gZnJvbSAnLi4vd2l6YXJkLXN0ZXAvd2l6YXJkLXN0ZXAuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3Ytd2l6YXJkXSdcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkU3RlcERpcmVjdGl2ZSkgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwRGlyZWN0aXZlPjtcbiAgX2FjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuICAvKipcbiAgICogUHJvdmlkZXMgY3VzdG9tIGNsYXNzJiM0MDtlcyYjNDE7IGZvciBjdXN0b20gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgLnYtd2l6YXJkXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgY2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5fY2xhc3MsXG4gICAgICAndi13aXphcmQnLFxuICAgICAgdGhpcy52ZXJ0aWNhbCA/ICd2LXdpemFyZC12ZXJ0aWNhbCcgOiAnJyxcbiAgICAgIHRoaXMuY29tcGFjdCA/ICd2LXdpemFyZC1jb21wYWN0JyA6ICcnXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cbiAgc2V0IGNsYXNzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jbGFzcyA9IHZhbHVlO1xuICB9XG4gIF9jbGFzczogc3RyaW5nID0gJyc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xhc3M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIFNldHMgd2l6YXJkIHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIHdoZW4gdHJ1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2ZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmVydGljYWw7XG4gIH1cbiAgc2V0IHZlcnRpY2FsKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl92ZXJ0aWNhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX3ZlcnRpY2FsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldHMgd2l6YXJkIHRvIGNvbXBhY3QgdmFyaWFudCB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFjdDtcbiAgfVxuICBzZXQgY29tcGFjdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fY29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX2NvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYXJpYS1saXZlIGF0dHJpYnV0ZSBmb3IgdGhlIHdpemFyZC4gPGJyIC8+XG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gaW5mb3JtIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMsIGxpa2Ugc2NyZWVuIHJlYWRlcnMsIGFib3V0IHVwZGF0ZXMgdG8gd2l6YXJkLlxuICAgKiBAZGVmYXVsdCAncG9saXRlJ1xuICAgKi9cbiAgQElucHV0KCdhcmlhLWxpdmUnKVxuICBnZXQgYXJpYUxpdmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXJpYUxpdmU7XG4gIH1cbiAgc2V0IGFyaWFMaXZlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhTGl2ZSA9IHZhbHVlO1xuICB9XG4gIF9hcmlhTGl2ZTogc3RyaW5nID0gJ3BvbGl0ZSc7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkuZmluZEluZGV4KChzdGVwKSA9PiBzdGVwLmFjdGl2ZSk7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZUluZGV4ID4gMCkge1xuICAgICAgdGhpcy5zdGVwcy50b0FycmF5KCkuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5fYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICBzdGVwLmNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGl2ZScpXG4gIGdldCBob3N0QXJpYUxpdmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hcmlhTGl2ZTtcbiAgfVxufVxuIl19