@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
155 lines • 13.8 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, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXByb2dyZXNzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9saW5lYXItcHJvZ3Jlc3MvbGluZWFyLXByb2dyZXNzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQTZCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0csT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU05RCxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLENBQUMsS0FBSztZQUNWLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7WUFDbEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ3ZDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ0ksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xCLENBQUM7O1lBQU0sT0FBTyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQVNELElBQ0ksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFrQjtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRDtRQS9HQTs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBd0I1QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQWE5QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBYTFCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBYXhCLFNBQUksR0FBVyxHQUFHLENBQUM7UUFRbkI7Ozs7O1dBS0c7UUFDTSxlQUFVLEdBQXlCLElBQUksQ0FBQztJQThCbEMsQ0FBQzsrR0FoSEwsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwwQ0FBMEM7aUJBQ3JEO3dEQU1VLEtBQUs7c0JBQWIsS0FBSztnQkFFRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFpQmhCLFdBQVc7c0JBRGQsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBY0YsVUFBVTtzQkFEYixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFTRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsS0FBSztnQkFhVCxVQUFVO3NCQUFsQixLQUFLO2dCQUVGLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQWUzQixLQUFLO3NCQURSLEtBQUs7Z0JBU0YsU0FBUztzQkFEWixXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbdi1wcm9ncmVzcy1saW5lYXJdLCBbdi1saW5lYXItcHJvZ3Jlc3NdJ1xufSlcbmV4cG9ydCBjbGFzcyBMaW5lYXJQcm9ncmVzc0RpcmVjdGl2ZSB7XG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1wcm9ncmVzcy52LXByb2dyZXNzLWJhclxuICAgKi9cbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAndi1wcm9ncmVzcycsXG4gICAgICAndi1wcm9ncmVzcy1iYXInLFxuICAgICAgdGhpcy5kZXRlcm1pbmF0ZSA/ICcnIDogJ3YtcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZScsXG4gICAgICB0aGlzLmRldGVybWluYXRlICYmIHRoaXMucGVyY2VudGFnZSA9PT0gdGhpcy5tYXggPyAndi1wcm9ncmVzcy1jb21wbGV0ZScgOiAnJyxcbiAgICAgIHRoaXMuaW52YWxpZCA/ICd2LXByb2dyZXNzLWVycm9yJyA6ICcnXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBwcm9ncmVzcyB0byBkZXRlcm1pbmF0ZSB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RldGVybWluYXRlO1xuICB9XG4gIHNldCBkZXRlcm1pbmF0ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGV0ZXJtaW5hdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF9kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBNYXJrcyBwcm9ncmVzcyBhcyBpbnZhbGlkIHdoZW4gdHJ1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZhbGlkO1xuICB9XG4gIHNldCBpbnZhbGlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9pbnZhbGlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfaW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwZXJjZW50YWdlIGZvciBhIDxjb2RlPmRldGVybWluYXRlPC9jb2RlPiBwcm9ncmVzcyBiYXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBwZXJjZW50YWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcmNlbnRhZ2U7XG4gIH1cbiAgc2V0IHBlcmNlbnRhZ2UodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fcGVyY2VudGFnZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfcGVyY2VudGFnZTogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogVGhlIG1heCB2YWx1ZSBmb3IgYSA8Y29kZT5kZXRlcm1pbmF0ZTwvY29kZT4gcHJvZ3Jlc3MgYmFyLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG4gIHNldCBtYXgodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fbWF4ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF9tYXg6IG51bWJlciA9IDEwMDtcbiAgQEhvc3RCaW5kaW5nKCdtYXgnKVxuICBnZXQgaG9zdE1heCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmRldGVybWluYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfSBlbHNlIHJldHVybiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBiYXIgZnJvbSBzY3JlZW4gcmVhZGVycyB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0ICd0cnVlJyB3aGVuIDxjb2RlPmRldGVybWluYXRlPC9jb2RlPiBpcyBmYWxzZVxuICAgKiBAZGVmYXVsdCBudWxsIHdoZW4gPGNvZGU+ZGV0ZXJtaW5hdGU8L2NvZGU+IGlzIHRydWVcbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgYXJpYUhpZGRlbjogc3RyaW5nIHwgdm9pZCB8IG51bGwgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKVxuICBnZXQgaG9zdEFyaWFIaWRkZW4oKTogc3RyaW5nIHwgdm9pZCB8IG51bGwge1xuICAgIGlmICh0aGlzLmFyaWFIaWRkZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmFyaWFIaWRkZW47XG4gICAgfVxuICAgIGlmICghdGhpcy5kZXRlcm1pbmF0ZSkge1xuICAgICAgcmV0dXJuICd0cnVlJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdmFsdWUgZm9yIGEgPGNvZGU+ZGV0ZXJtaW5hdGU8L2NvZGU+IHByb2dyZXNzIGJhci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX3ZhbHVlOiBudW1iZXI7XG4gIEBIb3N0QmluZGluZygnYXR0ci52YWx1ZScpXG4gIGdldCBob3N0VmFsdWUoKTogbnVtYmVyIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IHRoaXMucGVyY2VudGFnZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=