UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

155 lines 13.7 kB
/** * © 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&#40;es&#41; 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