@clr/angular
Version:
Angular components for Clarity
169 lines • 14.8 kB
JavaScript
/*
* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
* This software is released under MIT license.
* The full license information can be found in LICENSE in the root directory of this project.
*/
import { Component, HostBinding, Input } from '@angular/core';
import { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class ClrProgressBar {
constructor() {
this.max = 100;
/*
* No need to convert to `number` cause we could have
* floating point and parseInt will round the numbers
*
* working with string won't have any side-effects,
* we don't do any math so string will do the job.
*/
this.value = 0;
this.externalId = '';
}
get id() {
return this._ID;
}
set id(value) {
this._ID = value;
this.externalId = null;
}
get progressClass() {
return true;
}
set clrLabeled(value) {
this._labeled = isBooleanAttributeSet(value);
}
get labeledClass() {
return this._labeled;
}
set clrFade(value) {
this._fade = isBooleanAttributeSet(value);
}
get fadeClass() {
return this._fade;
}
set clrLoop(value) {
this._loop = isBooleanAttributeSet(value);
}
get loopClass() {
return this._loop;
}
/** @deprecated since 2.0, remove in 4.0 */
set clrSuccess(value) {
this._success = isBooleanAttributeSet(value);
}
get successClass() {
return this._success;
}
/** @deprecated since 2.0, remove in 4.0 */
set clrDanger(value) {
this._danger = isBooleanAttributeSet(value);
}
get dangerClass() {
return this._danger;
}
set clrFlash(value) {
this._flash = isBooleanAttributeSet(value);
}
get flashClass() {
return this._flash;
}
/** @deprecated since 2.0, remove in 4.0 */
set clrFlashDanger(value) {
this._flashDanger = isBooleanAttributeSet(value);
}
get flashDangerClass() {
return this._flashDanger;
}
/**
* Make sure that we always will have something that is readable
* for the screen reader
*/
get displayValue() {
if (this.displayval) {
return this.displayval;
}
return `${this.value || 0}%`;
}
/**
* Display optional text only when labeled is eneabled
*/
displayStringValue() {
return this._labeled;
}
}
ClrProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
ClrProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrProgressBar, selector: "clr-progress-bar", inputs: { max: ["clrMax", "max"], displayval: ["clrDisplayval", "displayval"], value: ["clrValue", "value"], id: "id", clrLabeled: "clrLabeled", clrFade: "clrFade", clrLoop: "clrLoop", clrSuccess: "clrSuccess", clrDanger: "clrDanger", clrFlash: "clrFlash", clrFlashDanger: "clrFlashDanger" }, host: { properties: { "attr.id": "this.externalId", "class.progress": "this.progressClass", "class.labeled": "this.labeledClass", "class.progress-fade": "this.fadeClass", "class.loop": "this.loopClass", "class.success": "this.successClass", "class.danger": "this.dangerClass", "class.flash": "this.flashClass", "class.flash-danger": "this.flashDangerClass" } }, ngImport: i0, template: `
<progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
<span *ngIf="displayStringValue()">{{ displayValue }}</span>
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrProgressBar, decorators: [{
type: Component,
args: [{
selector: 'clr-progress-bar',
template: `
<progress [id]="id" [attr.max]="max" [attr.value]="value" [attr.data-displayval]="displayValue"></progress>
<span *ngIf="displayStringValue()">{{ displayValue }}</span>
`,
}]
}], propDecorators: { max: [{
type: Input,
args: ['clrMax']
}], displayval: [{
type: Input,
args: ['clrDisplayval']
}], value: [{
type: Input,
args: ['clrValue']
}], externalId: [{
type: HostBinding,
args: ['attr.id']
}], id: [{
type: Input
}], progressClass: [{
type: HostBinding,
args: ['class.progress']
}], clrLabeled: [{
type: Input,
args: ['clrLabeled']
}], labeledClass: [{
type: HostBinding,
args: ['class.labeled']
}], clrFade: [{
type: Input,
args: ['clrFade']
}], fadeClass: [{
type: HostBinding,
args: ['class.progress-fade']
}], clrLoop: [{
type: Input,
args: ['clrLoop']
}], loopClass: [{
type: HostBinding,
args: ['class.loop']
}], clrSuccess: [{
type: Input,
args: ['clrSuccess']
}], successClass: [{
type: HostBinding,
args: ['class.success']
}], clrDanger: [{
type: Input,
args: ['clrDanger']
}], dangerClass: [{
type: HostBinding,
args: ['class.danger']
}], clrFlash: [{
type: Input,
args: ['clrFlash']
}], flashClass: [{
type: HostBinding,
args: ['class.flash']
}], clrFlashDanger: [{
type: Input,
args: ['clrFlashDanger']
}], flashDangerClass: [{
type: HostBinding,
args: ['class.flash-danger']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvcHJvZ3Jlc3MvcHJvZ3Jlc3MtYmFycy9wcm9ncmVzcy1iYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBU3ZGLE1BQU0sT0FBTyxjQUFjO0lBUDNCO1FBUW1CLFFBQUcsR0FBb0IsR0FBRyxDQUFDO1FBRzVDOzs7Ozs7V0FNRztRQUNnQixVQUFLLEdBQW9CLENBQUMsQ0FBQztRQUV0QixlQUFVLEdBQUcsRUFBRSxDQUFDO0tBbUh6QztJQXhHQyxJQUNJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQ0ksVUFBVSxDQUFDLEtBQXVCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQ0ksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxPQUFPLENBQUMsS0FBdUI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FB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QkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjMgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGlzQm9vbGVhbkF0dHJpYnV0ZVNldCB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbXBvbmVudC9pcy1ib29sZWFuLWF0dHJpYnV0ZS1zZXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItcHJvZ3Jlc3MtYmFyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cHJvZ3Jlc3MgW2lkXT1cImlkXCIgW2F0dHIubWF4XT1cIm1heFwiIFthdHRyLnZhbHVlXT1cInZhbHVlXCIgW2F0dHIuZGF0YS1kaXNwbGF5dmFsXT1cImRpc3BsYXlWYWx1ZVwiPjwvcHJvZ3Jlc3M+XG4gICAgPHNwYW4gKm5nSWY9XCJkaXNwbGF5U3RyaW5nVmFsdWUoKVwiPnt7IGRpc3BsYXlWYWx1ZSB9fTwvc3Bhbj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyUHJvZ3Jlc3NCYXIge1xuICBASW5wdXQoJ2Nsck1heCcpIG1heDogbnVtYmVyIHwgc3RyaW5nID0gMTAwO1xuICBASW5wdXQoJ2NsckRpc3BsYXl2YWwnKSBkaXNwbGF5dmFsOiBzdHJpbmc7XG5cbiAgLypcbiAgICogTm8gbmVlZCB0byBjb252ZXJ0IHRvIGBudW1iZXJgIGNhdXNlIHdlIGNvdWxkIGhhdmVcbiAgICogZmxvYXRpbmcgcG9pbnQgYW5kIHBhcnNlSW50IHdpbGwgcm91bmQgdGhlIG51bWJlcnNcbiAgICpcbiAgICogd29ya2luZyB3aXRoIHN0cmluZyB3b24ndCBoYXZlIGFueSBzaWRlLWVmZmVjdHMsXG4gICAqIHdlIGRvbid0IGRvIGFueSBtYXRoIHNvIHN0cmluZyB3aWxsIGRvIHRoZSBqb2IuXG4gICAqL1xuICBASW5wdXQoJ2NsclZhbHVlJykgdmFsdWU6IG51bWJlciB8IHN0cmluZyA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgZXh0ZXJuYWxJZCA9ICcnO1xuXG4gIHByaXZhdGUgX0lEOiBzdHJpbmc7XG4gIHByaXZhdGUgX2xhYmVsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2ZhZGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX2xvb3A6IGJvb2xlYW47XG4gIHByaXZhdGUgX3N1Y2Nlc3M6IGJvb2xlYW47XG4gIHByaXZhdGUgX2RhbmdlcjogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZmxhc2g6IGJvb2xlYW47XG4gIHByaXZhdGUgX2ZsYXNoRGFuZ2VyOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fSUQ7XG4gIH1cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9JRCA9IHZhbHVlO1xuICAgIHRoaXMuZXh0ZXJuYWxJZCA9IG51bGw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByb2dyZXNzJylcbiAgZ2V0IHByb2dyZXNzQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBASW5wdXQoJ2NsckxhYmVsZWQnKVxuICBzZXQgY2xyTGFiZWxlZCh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsZWQgPSBpc0Jvb2xlYW5BdHRyaWJ1dGVTZXQodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYWJlbGVkJylcbiAgZ2V0IGxhYmVsZWRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxlZDtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmFkZScpXG4gIHNldCBjbHJGYWRlKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fZmFkZSA9IGlzQm9vbGVhbkF0dHJpYnV0ZVNldCh2YWx1ZSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByb2dyZXNzLWZhZGUnKVxuICBnZXQgZmFkZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9mYWRlO1xuICB9XG5cbiAgQElucHV0KCdjbHJMb29wJylcbiAgc2V0IGNsckxvb3AodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb29wID0gaXNCb29sZWFuQXR0cmlidXRlU2V0KHZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubG9vcCcpXG4gIGdldCBsb29wQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvb3A7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgMi4wLCByZW1vdmUgaW4gNC4wICovXG4gIEBJbnB1dCgnY2xyU3VjY2VzcycpXG4gIHNldCBjbHJTdWNjZXNzKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fc3VjY2VzcyA9IGlzQm9vbGVhbkF0dHJpYnV0ZVNldCh2YWx1ZSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnN1Y2Nlc3MnKVxuICBnZXQgc3VjY2Vzc0NsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9zdWNjZXNzO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHNpbmNlIDIuMCwgcmVtb3ZlIGluIDQuMCAqL1xuICBASW5wdXQoJ2NsckRhbmdlcicpXG4gIHNldCBjbHJEYW5nZXIodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9kYW5nZXIgPSBpc0Jvb2xlYW5BdHRyaWJ1dGVTZXQodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYW5nZXInKVxuICBnZXQgZGFuZ2VyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhbmdlcjtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmxhc2gnKVxuICBzZXQgY2xyRmxhc2godmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9mbGFzaCA9IGlzQm9vbGVhbkF0dHJpYnV0ZVNldCh2YWx1ZSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsYXNoJylcbiAgZ2V0IGZsYXNoQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZsYXNoO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHNpbmNlIDIuMCwgcmVtb3ZlIGluIDQuMCAqL1xuICBASW5wdXQoJ2NsckZsYXNoRGFuZ2VyJylcbiAgc2V0IGNsckZsYXNoRGFuZ2VyKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fZmxhc2hEYW5nZXIgPSBpc0Jvb2xlYW5BdHRyaWJ1dGVTZXQodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbGFzaC1kYW5nZXInKVxuICBnZXQgZmxhc2hEYW5nZXJDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmxhc2hEYW5nZXI7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIHdpbGwgaGF2ZSBzb21ldGhpbmcgdGhhdCBpcyByZWFkYWJsZVxuICAgKiBmb3IgdGhlIHNjcmVlbiByZWFkZXJcbiAgICovXG4gIGdldCBkaXNwbGF5VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheXZhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheXZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMudmFsdWUgfHwgMH0lYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG9wdGlvbmFsIHRleHQgb25seSB3aGVuIGxhYmVsZWQgaXMgZW5lYWJsZWRcbiAgICovXG4gIGRpc3BsYXlTdHJpbmdWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxlZDtcbiAgfVxufVxuIl19