ngx-bootstrap
Version:
Native Angular Bootstrap Components
324 lines (316 loc) • 9.97 kB
JavaScript
import { isBs3 } from 'ngx-bootstrap/utils';
import { CommonModule } from '@angular/common';
import { Injectable, Component, HostBinding, Input, Host, NgModule } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProgressbarConfig = /** @class */ (function () {
function ProgressbarConfig() {
/**
* if `true` changing value of progress bar will be animated
*/
this.animate = false;
/**
* maximum total value of progress element
*/
this.max = 100;
}
ProgressbarConfig.decorators = [
{ type: Injectable }
];
return ProgressbarConfig;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProgressbarComponent = /** @class */ (function () {
function ProgressbarComponent(config) {
this.isStacked = false;
this.addClass = true;
/* tslint:disable-next-line:no-any */
this.bars = [];
this._max = 100;
Object.assign(this, config);
}
Object.defineProperty(ProgressbarComponent.prototype, "animate", {
/** if `true` changing value of progress bar will be animated */
set: /**
* if `true` changing value of progress bar will be animated
* @param {?} value
* @return {?}
*/
function (value) {
this._animate = value;
this.bars.forEach(function (b) {
b.animate = value;
});
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProgressbarComponent.prototype, "striped", {
/** If `true`, striped classes are applied */
set: /**
* If `true`, striped classes are applied
* @param {?} value
* @return {?}
*/
function (value) {
this._striped = value;
this.bars.forEach(function (b) {
b.striped = value;
});
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProgressbarComponent.prototype, "value", {
/** current value of progress bar. Could be a number or array of objects
* like {"value":15,"type":"info","label":"15 %"}
*/
set: /**
* current value of progress bar. Could be a number or array of objects
* like {"value":15,"type":"info","label":"15 %"}
* @param {?} value
* @return {?}
*/
function (value) {
this.isStacked = Array.isArray(value);
this._value = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProgressbarComponent.prototype, "isBs3", {
get: /**
* @return {?}
*/
function () {
return isBs3();
},
enumerable: true,
configurable: true
});
Object.defineProperty(ProgressbarComponent.prototype, "max", {
/** maximum total value of progress element */
get: /**
* maximum total value of progress element
* @return {?}
*/
function () {
return this._max;
},
set: /**
* @param {?} v
* @return {?}
*/
function (v) {
this._max = v;
this.bars.forEach(function (bar) {
bar.recalculatePercentage();
});
},
enumerable: true,
configurable: true
});
/**
* @param {?} bar
* @return {?}
*/
ProgressbarComponent.prototype.addBar = /**
* @param {?} bar
* @return {?}
*/
function (bar) {
bar.animate = this._animate;
bar.striped = this._striped;
this.bars.push(bar);
};
/**
* @param {?} bar
* @return {?}
*/
ProgressbarComponent.prototype.removeBar = /**
* @param {?} bar
* @return {?}
*/
function (bar) {
this.bars.splice(this.bars.indexOf(bar), 1);
};
ProgressbarComponent.decorators = [
{ type: Component, args: [{
selector: 'progressbar',
template: "<bar [type]=\"type\" [value]=\"_value\" *ngIf=\"!isStacked\">\n <ng-content></ng-content>\n</bar>\n<ng-template [ngIf]=\"isStacked\">\n <bar *ngFor=\"let item of _value\" [type]=\"item.type\" [value]=\"item.value\">{{ item.label }}</bar>\n</ng-template>\n",
styles: ["\n :host {\n width: 100%;\n display: flex;\n }\n "]
}] }
];
/** @nocollapse */
ProgressbarComponent.ctorParameters = function () { return [
{ type: ProgressbarConfig }
]; };
ProgressbarComponent.propDecorators = {
animate: [{ type: Input }],
striped: [{ type: Input }],
type: [{ type: Input }],
value: [{ type: Input }],
max: [{ type: HostBinding, args: ['attr.max',] }, { type: Input }],
addClass: [{ type: HostBinding, args: ['class.progress',] }]
};
return ProgressbarComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// todo: number pipe
// todo: use query from progress?
var BarComponent = /** @class */ (function () {
function BarComponent(progress) {
this.percent = 0;
this.progress = progress;
}
Object.defineProperty(BarComponent.prototype, "value", {
/** current value of progress bar */
get: /**
* current value of progress bar
* @return {?}
*/
function () {
return this._value;
},
set: /**
* @param {?} v
* @return {?}
*/
function (v) {
if (!v && v !== 0) {
return;
}
this._value = v;
this.recalculatePercentage();
},
enumerable: true,
configurable: true
});
Object.defineProperty(BarComponent.prototype, "setBarWidth", {
get: /**
* @return {?}
*/
function () {
this.recalculatePercentage();
return this.percent;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BarComponent.prototype, "isBs3", {
get: /**
* @return {?}
*/
function () {
return isBs3();
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
BarComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.progress.addBar(this);
};
/**
* @return {?}
*/
BarComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.progress.removeBar(this);
};
/**
* @return {?}
*/
BarComponent.prototype.recalculatePercentage = /**
* @return {?}
*/
function () {
this.percent = +(this.value / this.progress.max * 100).toFixed(2);
/** @type {?} */
var totalPercentage = this.progress.bars
.reduce(function (total, bar) {
return total + bar.percent;
}, 0);
if (totalPercentage > 100) {
this.percent -= totalPercentage - 100;
}
};
BarComponent.decorators = [
{ type: Component, args: [{
selector: 'bar',
template: "<ng-content></ng-content>\n",
host: {
role: 'progressbar',
'aria-valuemin': '0',
'[class]': '"progress-bar " + (type ? "progress-bar-" + type + " bg-" + type : "")',
'[class.progress-bar-animated]': '!isBs3 && animate',
'[class.progress-bar-striped]': 'striped',
'[class.active]': 'isBs3 && animate',
'[attr.aria-valuenow]': 'value',
'[attr.aria-valuetext]': 'percent ? percent.toFixed(0) + "%" : ""',
'[attr.aria-valuemax]': 'max',
'[style.height.%]': '"100"'
}
}] }
];
/** @nocollapse */
BarComponent.ctorParameters = function () { return [
{ type: ProgressbarComponent, decorators: [{ type: Host }] }
]; };
BarComponent.propDecorators = {
type: [{ type: Input }],
value: [{ type: Input }],
setBarWidth: [{ type: HostBinding, args: ['style.width.%',] }]
};
return BarComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProgressbarModule = /** @class */ (function () {
function ProgressbarModule() {
}
/**
* @return {?}
*/
ProgressbarModule.forRoot = /**
* @return {?}
*/
function () {
return { ngModule: ProgressbarModule, providers: [ProgressbarConfig] };
};
ProgressbarModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
declarations: [BarComponent, ProgressbarComponent],
exports: [BarComponent, ProgressbarComponent]
},] }
];
return ProgressbarModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { BarComponent, ProgressbarComponent, ProgressbarModule, ProgressbarConfig };
//# sourceMappingURL=ngx-bootstrap-progressbar.js.map