@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
155 lines • 13.7 kB
JavaScript
/**
* © 2025 Visa
*
* 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, coerceNumberProperty } from '@angular/cdk/coercion';
import { Directive, HostBinding, Input } from '@angular/core';
import * as i0 from "@angular/core";
export class LinearProgressDirective {
get hostClasses() {
return [
this.class,
'v-progress',
'v-progress-bar',
this.determinate ? '' : 'v-progress-indeterminate',
this.determinate && this.percentage === this.max ? 'v-progress-complete' : '',
this.invalid ? 'v-progress-error' : ''
].join(' ');
}
/**
* Sets progress to determinate when true.
* @default false
*/
get determinate() {
return this._determinate;
}
set determinate(value) {
this._determinate = coerceBooleanProperty(value);
}
/**
* Marks progress as invalid when true.
* @default false
*/
get invalid() {
return this._invalid;
}
set invalid(value) {
this._invalid = coerceBooleanProperty(value);
}
/**
* Sets the percentage for a <code>determinate</code> progress bar.
* @default 0
*/
get percentage() {
return this._percentage;
}
set percentage(value) {
this._percentage = coerceNumberProperty(value);
}
/**
* The max value for a <code>determinate</code> progress bar.
* @default 100
*/
get max() {
return this._max;
}
set max(value) {
this._max = coerceNumberProperty(value);
}
get hostMax() {
if (this.determinate) {
return this.max;
}
else
return 1;
}
get hostAriaHidden() {
if (this.ariaHidden) {
return this.ariaHidden;
}
if (!this.determinate) {
return 'true';
}
return null;
}
/**
* The current value for a <code>determinate</code> progress bar.
*/
get value() {
return this._value;
}
set value(value) {
this._value = coerceNumberProperty(value);
}
get hostValue() {
if (this.determinate) {
return this.value ? this.value : this.percentage;
}
}
constructor() {
/**
* Provides custom class(es) for custom styling.
* @default .v-progress.v-progress-bar
*/
this.class = '';
this._determinate = false;
this._invalid = false;
this._percentage = 0;
this._max = 100;
/**
* Hide indeterminate progress bar from screen readers when true.
* @default 'true' when <code>determinate</code> is false
* @default null when <code>determinate</code> is true
* @builtin true
*/
this.ariaHidden = null;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinearProgressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: LinearProgressDirective, isStandalone: true, selector: "[v-progress-linear], [v-linear-progress]", inputs: { class: "class", determinate: "determinate", invalid: "invalid", percentage: "percentage", max: "max", ariaHidden: "ariaHidden", value: "value" }, host: { properties: { "class": "this.hostClasses", "max": "this.hostMax", "attr.aria-hidden": "this.hostAriaHidden", "attr.value": "this.hostValue" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinearProgressDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[v-progress-linear], [v-linear-progress]'
}]
}], ctorParameters: () => [], propDecorators: { class: [{
type: Input
}], hostClasses: [{
type: HostBinding,
args: ['class']
}], determinate: [{
type: Input
}], invalid: [{
type: Input
}], percentage: [{
type: Input
}], max: [{
type: Input
}], hostMax: [{
type: HostBinding,
args: ['max']
}], ariaHidden: [{
type: Input
}], hostAriaHidden: [{
type: HostBinding,
args: ['attr.aria-hidden']
}], value: [{
type: Input
}], hostValue: [{
type: HostBinding,
args: ['attr.value']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXByb2dyZXNzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9saW5lYXItcHJvZ3Jlc3MvbGluZWFyLXByb2dyZXNzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQTZCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0csT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU05RCxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsS0FBSztZQUNWLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7WUFDbEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ3ZDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ0ksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xCLENBQUM7O1lBQU0sT0FBTyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQVNELElBQ0ksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFrQjtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRDtRQS9HQTs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBd0I1QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQWE5QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBYTFCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBYXhCLFNBQUksR0FBVyxHQUFHLENBQUM7UUFRbkI7Ozs7O1dBS0c7UUFDTSxlQUFVLEdBQXlCLElBQUksQ0FBQztJQThCbEMsQ0FBQzsrR0FoSEwsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwwQ0FBMEM7aUJBQ3JEO3dEQU1VLEtBQUs7c0JBQWIsS0FBSztnQkFFRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFpQmhCLFdBQVc7c0JBRGQsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBY0YsVUFBVTtzQkFEYixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFTRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsS0FBSztnQkFhVCxVQUFVO3NCQUFsQixLQUFLO2dCQUVGLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQWUzQixLQUFLO3NCQURSLEtBQUs7Z0JBU0YsU0FBUztzQkFEWixXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICDCqSAyMDI1IFZpc2FcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3YtcHJvZ3Jlc3MtbGluZWFyXSwgW3YtbGluZWFyLXByb2dyZXNzXSdcbn0pXG5leHBvcnQgY2xhc3MgTGluZWFyUHJvZ3Jlc3NEaXJlY3RpdmUge1xuICAvKipcbiAgICogUHJvdmlkZXMgY3VzdG9tIGNsYXNzJiM0MDtlcyYjNDE7IGZvciBjdXN0b20gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgLnYtcHJvZ3Jlc3Mudi1wcm9ncmVzcy1iYXJcbiAgICovXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgJ3YtcHJvZ3Jlc3MnLFxuICAgICAgJ3YtcHJvZ3Jlc3MtYmFyJyxcbiAgICAgIHRoaXMuZGV0ZXJtaW5hdGUgPyAnJyA6ICd2LXByb2dyZXNzLWluZGV0ZXJtaW5hdGUnLFxuICAgICAgdGhpcy5kZXRlcm1pbmF0ZSAmJiB0aGlzLnBlcmNlbnRhZ2UgPT09IHRoaXMubWF4ID8gJ3YtcHJvZ3Jlc3MtY29tcGxldGUnIDogJycsXG4gICAgICB0aGlzLmludmFsaWQgPyAndi1wcm9ncmVzcy1lcnJvcicgOiAnJ1xuICAgIF0uam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcHJvZ3Jlc3MgdG8gZGV0ZXJtaW5hdGUgd2hlbiB0cnVlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kZXRlcm1pbmF0ZTtcbiAgfVxuICBzZXQgZGV0ZXJtaW5hdGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2RldGVybWluYXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTWFya3MgcHJvZ3Jlc3MgYXMgaW52YWxpZCB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW52YWxpZDtcbiAgfVxuICBzZXQgaW52YWxpZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5faW52YWxpZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX2ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGVyY2VudGFnZSBmb3IgYSA8Y29kZT5kZXRlcm1pbmF0ZTwvY29kZT4gcHJvZ3Jlc3MgYmFyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcGVyY2VudGFnZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZXJjZW50YWdlO1xuICB9XG4gIHNldCBwZXJjZW50YWdlKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3BlcmNlbnRhZ2UgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX3BlcmNlbnRhZ2U6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXggdmFsdWUgZm9yIGEgPGNvZGU+ZGV0ZXJtaW5hdGU8L2NvZGU+IHByb2dyZXNzIGJhci5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuICBzZXQgbWF4KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX21heCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIEBIb3N0QmluZGluZygnbWF4JylcbiAgZ2V0IGhvc3RNYXgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5kZXRlcm1pbmF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgIH0gZWxzZSByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgYmFyIGZyb20gc2NyZWVuIHJlYWRlcnMgd2hlbiB0cnVlLlxuICAgKiBAZGVmYXVsdCAndHJ1ZScgd2hlbiA8Y29kZT5kZXRlcm1pbmF0ZTwvY29kZT4gaXMgZmFsc2VcbiAgICogQGRlZmF1bHQgbnVsbCB3aGVuIDxjb2RlPmRldGVybWluYXRlPC9jb2RlPiBpcyB0cnVlXG4gICAqIEBidWlsdGluIHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGFyaWFIaWRkZW46IHN0cmluZyB8IHZvaWQgfCBudWxsID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcbiAgZ2V0IGhvc3RBcmlhSGlkZGVuKCk6IHN0cmluZyB8IHZvaWQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5hcmlhSGlkZGVuKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcmlhSGlkZGVuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHJldHVybiAndHJ1ZSc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHZhbHVlIGZvciBhIDxjb2RlPmRldGVybWluYXRlPC9jb2RlPiBwcm9ncmVzcyBiYXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3ZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF92YWx1ZTogbnVtYmVyO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudmFsdWUnKVxuICBnZXQgaG9zdFZhbHVlKCk6IG51bWJlciB8IHZvaWQge1xuICAgIGlmICh0aGlzLmRldGVybWluYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiB0aGlzLnBlcmNlbnRhZ2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19