@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
866 lines • 78.7 kB
JavaScript
import { __decorate, __extends, __metadata } from "tslib";
import { CommonModule } from '@angular/common';
import { Component, ElementRef, EventEmitter, HostBinding, Input, NgModule, Output, Renderer2, ViewChild, ContentChild, AfterViewInit } from '@angular/core';
import { IgxProcessBarTextTemplateDirective, IgxProgressBarGradientDirective, } from './progressbar.common';
var ONE_PERCENT = 0.01;
var MIN_VALUE = 0;
export var IgxTextAlign;
(function (IgxTextAlign) {
IgxTextAlign["START"] = "start";
IgxTextAlign["CENTER"] = "center";
IgxTextAlign["END"] = "end";
})(IgxTextAlign || (IgxTextAlign = {}));
export var IgxProgressType;
(function (IgxProgressType) {
IgxProgressType["DANGER"] = "danger";
IgxProgressType["INFO"] = "info";
IgxProgressType["WARNING"] = "warning";
IgxProgressType["SUCCESS"] = "success";
})(IgxProgressType || (IgxProgressType = {}));
var BaseProgress = /** @class */ (function () {
function BaseProgress() {
/**
* @hidden
*/
this.requestAnimationId = undefined;
/**
* @hidden
*/
this._valueInPercent = MIN_VALUE;
/**
* @hidden
*/
this._max = 100;
/**
* @hidden
*/
this._value = MIN_VALUE;
/**
* @hidden
*/
this._animate = true;
}
Object.defineProperty(BaseProgress.prototype, "valueInPercent", {
/**
*Returns the `IgxLinearProgressBarComponent`/`IgxCircularProgressBarComponent` value in percentage.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent; // IgxCircularProgressBarComponent
*public valuePercent(event){
* let percentValue = this.progressBar.valueInPercent;
* alert(percentValue);
*}
*```
*/
get: function () {
return this._valueInPercent;
},
/**
*Sets the `IgxLinearProgressBarComponent`/`IgxCircularProgressBarComponent` value in percentage.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent; // IgxCircularProgressBarComponent
* public setValue(event){
* this.progressBar.valueInPercent = 56;
*}
* //...
*```
*```html
*<button igxButton="fab" igxRipple="" (click)="setValue()">setValue</button>
*```
*/
set: function (value) {
this._valueInPercent = value;
},
enumerable: true,
configurable: true
});
/**
* @hidden
*/
BaseProgress.prototype.runAnimation = function (val, step) {
var _this = this;
this.requestAnimationId = requestAnimationFrame(function () { return _this.updateProgressSmoothly.call(_this, val, step); });
};
/**
* @hidden
*/
BaseProgress.prototype.updateProgressSmoothly = function (val, step) {
var _this = this;
this._value += step;
var passedValue = convertInPercentage(val, this._max);
var progressValue = convertInPercentage(this._value, this._max);
if (this.valueInPercent === passedValue) {
this.updateProgress(val);
cancelAnimationFrame(this.requestAnimationId);
}
else if (this.isInLimitRange(progressValue, passedValue, step)) {
this.updateProgress(val);
cancelAnimationFrame(this.requestAnimationId);
}
else {
this.valueInPercent = progressValue;
this.requestAnimationId = requestAnimationFrame(function () { return _this.updateProgressSmoothly.call(_this, val, step); });
}
};
/**
* @hidden
*/
BaseProgress.prototype.updateProgressDirectly = function (val) {
this._value = val;
this.valueInPercent = convertInPercentage(this._value, this._max);
};
/**
* @hidden
*/
BaseProgress.prototype.directionFlow = function (currentValue, prevValue, step) {
if (currentValue < prevValue) {
return step;
}
return -step;
};
/**
* @hidden
*/
BaseProgress.prototype.isInLimitRange = function (val, comparator, step) {
return this.isExceedingUpperLimit(val, comparator, step) || this.isExceedingLowerLimit(val, comparator, step);
};
/**
* @hidden
*
*
* @param val
* @param comparator
* @param step
*/
BaseProgress.prototype.isExceedingUpperLimit = function (val, comparator, step) {
return val > comparator && step > 0;
};
/**
* @hidden
*
* @param val
* @param comparator
* @param step
*/
BaseProgress.prototype.isExceedingLowerLimit = function (val, comparator, step) {
return val < comparator && step < 0;
};
/**
* @hidden
* @param step
*/
BaseProgress.prototype.updateProgress = function (val) {
this._value = val;
this.valueInPercent = convertInPercentage(this._value, this._max);
};
return BaseProgress;
}());
export { BaseProgress };
var NEXT_LINEAR_ID = 0;
var NEXT_CIRCULAR_ID = 0;
var NEXT_GRADIENT_ID = 0;
var IgxLinearProgressBarComponent = /** @class */ (function (_super) {
__extends(IgxLinearProgressBarComponent, _super);
function IgxLinearProgressBarComponent() {
var _this = _super.call(this) || this;
_this.valueMin = 0;
_this.cssClass = 'igx-linear-bar';
/**
*Set `IgxLinearProgressBarComponent` to have striped style. By default it is set to false.
*```html
*<igx-linear-bar [striped]="true" [max]="200" [value]="50"></igx-linear-bar>
*```
*/
_this.striped = false;
/**
*Set `IgxLinearProgressBarComponent` to have indeterminate. By default it is set to false.
*```html
*<igx-linear-bar [indeterminate]="true"></igx-linear-bar>
*```
*/
_this.indeterminate = false;
/**An @Input property that sets the value of the `role` attribute. If not provided it will be automatically set to `progressbar`.
* ```html
*<igx-linear-bar role="progressbar"></igx-linear-bar>
* ```
*/
_this.role = 'progressbar';
/**An @Input property that sets the value of `id` attribute. If not provided it will be automatically generated.
* ```html
*<igx-linear-bar [id]="'igx-linear-bar-55'" [striped]="true" [max]="200" [value]="50"></igx-linear-bar>
* ```
*/
_this.id = "igx-linear-bar-" + NEXT_LINEAR_ID++;
/**
*Set the position that defines where the text is aligned.
Possible options - `IgxTextAlign.START` (default), `IgxTextAlign.CENTER`, `IgxTextAlign.END`.
*```typescript
*public positionCenter: IgxTextAlign;
*public ngOnInit() {
* this.positionCenter = IgxTextAlign.CENTER;
*}
* //...
*```
* ```html
*<igx-linear-bar type="warning" [text]="'Custom text'" [textAlign]="positionCenter" [striped]="true"></igx-linear-bar>
*```
*/
_this.textAlign = IgxTextAlign.START;
/**
*Set the text to be visible. By default it is set to true.
* ```html
*<igx-linear-bar type="default" [textVisibility]="false"></igx-linear-bar>
*```
*/
_this.textVisibility = true;
/**
*Set the position that defines if the text should be aligned above the progress line. By default is set to false.
*```html
*<igx-linear-bar type="danger" [textTop]="true"></igx-linear-bar>
*```
*/
_this.textTop = false;
/**
*Set type of the `IgxLinearProgressBarComponent`. Possible options - `default`, `success`, `info`, `warning`, and `danger`.
*```html
*<igx-linear-bar [striped]="false" [max]="100" [value]="0" type="danger"></igx-linear-bar>
*```
*/
_this.type = 'default';
/**
*An event, which is triggered after a progress is changed.
*```typescript
*public progressChange(event) {
* alert("Progress made!");
*}
* //...
*```
*```html
*<igx-linear-bar (onProgressChanged)="progressChange($event)" type="success">
*```
*/
_this.onProgressChanged = new EventEmitter();
return _this;
}
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "animate", {
/**
*Returns whether the `IgxLinearProgressBarComponent` has animation true/false.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent;
*public animationStatus(event) {
* let animationStatus = this.progressBar.animate;
* alert(animationStatus);
*}
*```
*/
get: function () {
return this._animate;
},
/**
*Animation on progress `IgxLinearProgressBarComponent`. By default it is set to true.
*```html
*<igx-linear-bar [animate]="false" [striped]="true" [max]="200" [value]="50"></igx-linear-bar>
*```
*/
set: function (animate) {
this._animate = animate;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "max", {
/**
*Returns the the maximum progress value of the `IgxLinearProgressBarComponent`.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent;
*public maxValue(event) {
* let max = this.progressBar.max;
* alert(max);
*}
*```
*/
get: function () {
return this._max;
},
/**
*Set maximum value that can be passed. By default it is set to 100.
*```html
*<igx-linear-bar [striped]="false" [max]="200" [value]="0"></igx-linear-bar>
*```
*/
set: function (maxNum) {
this._max = maxNum;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "step", {
/**
*Returns the value which update the progress indicator of the `IgxLinearProgressBarComponent`.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent;
*public stepValue(event) {
* let step = this.progressBar.step;
* alert(step);
*}
*```
*/
get: function () {
if (this._step) {
return this._step;
}
return this._max * ONE_PERCENT;
},
/**
*Sets the value by which progress indicator is updated. By default it is 1% of the maximum value.
*```html
*<igx-linear-bar [striped]="false" [max]="200" [value]="0" [step]="1"></igx-linear-bar>
*```
*/
set: function (val) {
this._step = Number(val);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "value", {
/**
*Returns value that indicates the current `IgxLinearProgressBarComponent` position.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxLinearProgressBarComponent;
*public getValue(event) {
* let value = this.progressBar.value;
* alert(value);
*}
*```
*/
get: function () {
return this._value;
},
/**
*Set value that indicates the current `IgxLinearProgressBarComponent` position.
*```html
*<igx-linear-bar [striped]="false" [max]="200" [value]="50"></igx-linear-bar>
*```
*/
set: function (val) {
val = Number(val);
if (this._value === val || this.indeterminate) {
return;
}
var valueInRange = getValueInProperRange(val, this.max);
if (isNaN(valueInRange)) {
return;
}
var changedValues = {
currentValue: valueInRange,
previousValue: this._value
};
var updateValue = _super.prototype.directionFlow.call(this, this._value, val, this.step);
if (this._animate && val >= this.step) {
_super.prototype.runAnimation.call(this, valueInRange, updateValue);
}
else {
_super.prototype.updateProgressDirectly.call(this, valueInRange);
}
this.onProgressChanged.emit(changedValues);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "danger", {
/**
* @hidden
*/
get: function () {
return this.type === IgxProgressType.DANGER;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "info", {
/**
* @hidden
*/
get: function () {
return this.type === IgxProgressType.INFO;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "warning", {
/**
* @hidden
*/
get: function () {
return this.type === IgxProgressType.WARNING;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLinearProgressBarComponent.prototype, "success", {
/**
* @hidden
*/
get: function () {
return this.type === IgxProgressType.SUCCESS;
},
enumerable: true,
configurable: true
});
__decorate([
Input(),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [Boolean])
], IgxLinearProgressBarComponent.prototype, "animate", null);
__decorate([
HostBinding('attr.aria-valuemax'),
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Number])
], IgxLinearProgressBarComponent.prototype, "max", null);
__decorate([
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Number])
], IgxLinearProgressBarComponent.prototype, "step", null);
__decorate([
HostBinding('attr.aria-valuemin'),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "valueMin", void 0);
__decorate([
HostBinding('class.igx-linear-bar'),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "cssClass", void 0);
__decorate([
HostBinding('class.igx-linear-bar--striped'),
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "striped", void 0);
__decorate([
HostBinding('class.igx-linear-bar--indeterminate'),
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "indeterminate", void 0);
__decorate([
HostBinding('attr.role'),
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "role", void 0);
__decorate([
HostBinding('attr.id'),
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "id", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxLinearProgressBarComponent.prototype, "textAlign", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "textVisibility", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "textTop", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxLinearProgressBarComponent.prototype, "text", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "type", void 0);
__decorate([
HostBinding('attr.aria-valuenow'),
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Object])
], IgxLinearProgressBarComponent.prototype, "value", null);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxLinearProgressBarComponent.prototype, "onProgressChanged", void 0);
__decorate([
HostBinding('class.igx-linear-bar--danger'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLinearProgressBarComponent.prototype, "danger", null);
__decorate([
HostBinding('class.igx-linear-bar--info'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLinearProgressBarComponent.prototype, "info", null);
__decorate([
HostBinding('class.igx-linear-bar--warning'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLinearProgressBarComponent.prototype, "warning", null);
__decorate([
HostBinding('class.igx-linear-bar--success'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLinearProgressBarComponent.prototype, "success", null);
IgxLinearProgressBarComponent = __decorate([
Component({
selector: 'igx-linear-bar',
template: "<div class=\"igx-linear-bar__base\">\n <div class=\"igx-linear-bar__indicator\"\n [style.width.%]=\"valueInPercent\"></div>\n</div>\n\n<span\n class=\"igx-linear-bar__value\"\n [ngClass]=\"{\n 'igx-linear-bar__value--start': textAlign === 'start',\n 'igx-linear-bar__value--center': textAlign === 'center',\n 'igx-linear-bar__value--end': textAlign === 'end',\n 'igx-linear-bar__value--top': textTop,\n 'igx-linear-bar__value--hidden': !textVisibility\n }\">\n {{text ? text : valueInPercent + '%'}}\n</span>\n"
}),
__metadata("design:paramtypes", [])
], IgxLinearProgressBarComponent);
return IgxLinearProgressBarComponent;
}(BaseProgress));
export { IgxLinearProgressBarComponent };
var IgxCircularProgressBarComponent = /** @class */ (function (_super) {
__extends(IgxCircularProgressBarComponent, _super);
function IgxCircularProgressBarComponent(renderer) {
var _this = _super.call(this) || this;
_this.renderer = renderer;
_this.STROKE_OPACITY_DVIDER = 100;
_this.STROKE_OPACITY_ADDITION = .2;
/** @hidden */
_this.cssClass = 'igx-circular-bar';
/**
*An event, which is triggered after a progress is changed.
*```typescript
*public progressChange(event) {
* alert("Progress made!");
*}
* //...
*```
*```html
*<igx-circular-bar [value]="currentValue" (onProgressChanged)="progressChange($event)"></igx-circular-bar>
*```
*/
_this.onProgressChanged = new EventEmitter();
/**
*An @Input property that sets the value of `id` attribute. If not provided it will be automatically generated.
*```html
*<igx-circular-bar [id]="'igx-circular-bar-55'" [value]="50"></igx-circular-bar>
*```
*/
_this.id = "igx-circular-bar-" + NEXT_CIRCULAR_ID++;
/**
* @hidden
*/
_this.gradientId = "igx-circular-gradient-" + NEXT_GRADIENT_ID++;
/**
*An @Input property that sets the value of the `indeterminate` attribute. If not provided it will be automatically set to false.
*```html
*<igx-circular-bar [indeterminate]="true"></igx-circular-bar>
*```
*/
_this.indeterminate = false;
/**
*Sets the text visibility. By default it is set to true.
*```html
*<igx-circular-bar [textVisibility]="false"></igx-circular-bar>
*```
*/
_this.textVisibility = true;
_this._circleRadius = 46;
_this._circumference = 2 * Math.PI * _this._circleRadius;
return _this;
}
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "context", {
/**
* @hidden
*/
get: function () {
return {
$implicit: { value: this.value, valueInPercent: this.valueInPercent, max: this.max }
};
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "animate", {
/**
*Returns whether the `IgxCircularProgressBarComponent` has animation true/false.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxCircularProgressBarComponent;
*public animationStatus(event) {
* let animationStatus = this.progressBar.animate;
* alert(animationStatus);
*}
*```
*/
get: function () {
return this._animate;
},
/**
*Animation on progress `IgxCircularProgressBarComponent`. By default it is set to true.
*```html
*<igx-circular-bar [animate]="false" [value]="50"></igx-circular-bar>
*```
*/
set: function (animate) {
this._animate = animate;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "max", {
/**
*Returns the the maximum progress value of the `IgxCircularProgressBarComponent`.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxCircularProgressBarComponent;
*public maxValue(event) {
* let max = this.progressBar.max;
* alert(max);
*}
*```
*```html
*<igx-circular-bar [max]="245" [animate]="false" [value]="currentValue"></igx-circular-bar>
*```
*/
get: function () {
return this._max;
},
/**
*Set maximum value that can be passed. By default it is set to 100.
*```html
*<igx-circular-bar [max]="200" [value]="0"></igx-circular-bar>
*```
*/
set: function (maxNum) {
this._max = maxNum;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "step", {
/**
*Returns the value which update the progress indicator of the `IgxCircularProgressBarComponent`.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxCircularProgressBarComponent;
*public stepValue(event) {
* let step = this.progressBar.step;
* alert(step);
*}
*```
*/
get: function () {
if (this._step) {
return this._step;
}
return this._max * ONE_PERCENT;
},
/**
*Sets the value by which progress indicator is updated. By default it is 1% of the maximum value.
*```html
*<igx-circular-bar [striped]="false" [max]="200" [value]="0" [step]="1"></igx-circular-bar>
*```
*/
set: function (val) {
this._step = Number(val);
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "value", {
/**
*Returns value that indicates the current `IgxCircularProgressBarComponent` position.
*```typescript
*@ViewChild("MyProgressBar")
*public progressBar: IgxCircularProgressBarComponent;
*public getValue(event) {
* let value = this.progressBar.value;
* alert(value);
*}
*```
*```html
*<button igxButton="fab" igxRipple="" (click)="getValue()">Click</button>
*```
*/
get: function () {
return this._value;
},
/**
*Set value that indicates the current `IgxCircularProgressBarComponent` position.
*```html
*<igx-circular-bar [value]="50"></igx-circular-bar>
*```
*/
set: function (val) {
val = Number(val);
if (this._value === val || this.indeterminate) {
return;
}
var valueInProperRange = getValueInProperRange(val, this.max);
if (isNaN(valueInProperRange)) {
return;
}
var changedValues = {
currentValue: valueInProperRange,
previousValue: this._value
};
var updateValue = _super.prototype.directionFlow.call(this, this._value, val, this.step);
if (this.animate && val >= this.step) {
_super.prototype.runAnimation.call(this, valueInProperRange, updateValue);
}
else {
this.updateProgressDirectly(valueInProperRange);
}
this.onProgressChanged.emit(changedValues);
},
enumerable: true,
configurable: true
});
IgxCircularProgressBarComponent.prototype.ngAfterViewInit = function () {
this.renderer.setStyle(this._svgCircle.nativeElement, 'stroke', "url(#" + this.gradientId + ")");
};
/**
* @hidden
*/
IgxCircularProgressBarComponent.prototype.updateProgressSmoothly = function (val, step) {
// Set frames for the animation
var FRAMES = [{
strokeDashoffset: this.getProgress(this._value),
strokeOpacity: (this._value / this.STROKE_OPACITY_DVIDER) + this.STROKE_OPACITY_ADDITION
}, {
strokeDashoffset: this.getProgress(this.valueInPercent),
strokeOpacity: (this.valueInPercent / this.STROKE_OPACITY_DVIDER) + this.STROKE_OPACITY_ADDITION
}];
this._svgCircle.nativeElement.animate(FRAMES, {
easing: 'ease-out',
fill: 'forwards'
});
_super.prototype.updateProgressSmoothly.call(this, val, step);
};
Object.defineProperty(IgxCircularProgressBarComponent.prototype, "textContent", {
/**
* @hidden
*/
get: function () {
return this.text;
},
enumerable: true,
configurable: true
});
/**
* @hidden
*/
IgxCircularProgressBarComponent.prototype.updateProgressDirectly = function (val) {
_super.prototype.updateProgressDirectly.call(this, val);
this.renderer.setStyle(this._svgCircle.nativeElement, 'stroke-dashoffset', this.getProgress(this.valueInPercent));
this.renderer.setStyle(this._svgCircle.nativeElement, 'stroke-opacity', (this.valueInPercent / this.STROKE_OPACITY_DVIDER) + this.STROKE_OPACITY_ADDITION);
};
IgxCircularProgressBarComponent.prototype.getProgress = function (percentage) {
// Reverse the sign here: '-' should become '+' in RTL mode
return this._circumference - (percentage * this._circumference / 100);
};
IgxCircularProgressBarComponent.ctorParameters = function () { return [
{ type: Renderer2 }
]; };
__decorate([
HostBinding('class.igx-circular-bar'),
__metadata("design:type", Object)
], IgxCircularProgressBarComponent.prototype, "cssClass", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxCircularProgressBarComponent.prototype, "onProgressChanged", void 0);
__decorate([
HostBinding('attr.id'),
Input(),
__metadata("design:type", Object)
], IgxCircularProgressBarComponent.prototype, "id", void 0);
__decorate([
HostBinding('class.igx-circular-bar--indeterminate'),
Input(),
__metadata("design:type", Object)
], IgxCircularProgressBarComponent.prototype, "indeterminate", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxCircularProgressBarComponent.prototype, "textVisibility", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxCircularProgressBarComponent.prototype, "text", void 0);
__decorate([
ContentChild(IgxProcessBarTextTemplateDirective, { read: IgxProcessBarTextTemplateDirective }),
__metadata("design:type", IgxProcessBarTextTemplateDirective)
], IgxCircularProgressBarComponent.prototype, "textTemplate", void 0);
__decorate([
ContentChild(IgxProgressBarGradientDirective, { read: IgxProgressBarGradientDirective }),
__metadata("design:type", IgxProgressBarGradientDirective)
], IgxCircularProgressBarComponent.prototype, "gradientTemplate", void 0);
__decorate([
Input(),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [Boolean])
], IgxCircularProgressBarComponent.prototype, "animate", null);
__decorate([
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Number])
], IgxCircularProgressBarComponent.prototype, "max", null);
__decorate([
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Number])
], IgxCircularProgressBarComponent.prototype, "step", null);
__decorate([
Input(),
__metadata("design:type", Number),
__metadata("design:paramtypes", [Number])
], IgxCircularProgressBarComponent.prototype, "value", null);
__decorate([
ViewChild('circle', { static: true }),
__metadata("design:type", ElementRef)
], IgxCircularProgressBarComponent.prototype, "_svgCircle", void 0);
IgxCircularProgressBarComponent = __decorate([
Component({
selector: 'igx-circular-bar',
template: "<svg #svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid meet\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\">\n <svg:circle class=\"igx-circular-bar__inner\" cx=\"50\" cy=\"50\" r=\"46\" />\n <svg:circle #circle class=\"igx-circular-bar__outer\" cx=\"50\" cy=\"50\" r=\"46\" />\n <svg:text *ngIf=\"textVisibility\" text-anchor=\"middle\" x=\"50\" y=\"60\">\n <ng-container *ngTemplateOutlet=\"textTemplate ? textTemplate.template : defaultTextTemplate;\n context: context\">\n </ng-container>\n </svg:text>\n\n <svg:defs>\n <ng-container\n *ngTemplateOutlet=\"gradientTemplate ? gradientTemplate.template : defaultGradientTemplate;\n context: { $implicit: gradientId }\">\n </ng-container>\n </svg:defs>\n\n <ng-template #defaultTextTemplate>\n <svg:tspan class=\"igx-circular-bar__text\">\n {{textContent ? textContent: valueInPercent + '%'}}\n </svg:tspan>\n </ng-template>\n\n <ng-template #defaultGradientTemplate>\n <svg:linearGradient [id]=\"gradientId\" gradientTransform=\"rotate(90)\">\n <stop offset=\"0%\" class=\"igx-circular-bar__gradient-start\" />\n <stop offset=\"100%\" class=\"igx-circular-bar__gradient-end\" />\n </svg:linearGradient>\n </ng-template>\n</svg>\n\n"
}),
__metadata("design:paramtypes", [Renderer2])
], IgxCircularProgressBarComponent);
return IgxCircularProgressBarComponent;
}(BaseProgress));
export { IgxCircularProgressBarComponent };
export function getValueInProperRange(value, max, min) {
if (min === void 0) { min = 0; }
return Math.max(Math.min(value, max), min);
}
export function convertInPercentage(value, max) {
return Math.floor(100 * value / max);
}
/**
* @hidden
*/
var IgxProgressBarModule = /** @class */ (function () {
function IgxProgressBarModule() {
}
IgxProgressBarModule = __decorate([
NgModule({
declarations: [
IgxLinearProgressBarComponent,
IgxCircularProgressBarComponent,
IgxProcessBarTextTemplateDirective,
IgxProgressBarGradientDirective,
],
exports: [
IgxLinearProgressBarComponent,
IgxCircularProgressBarComponent,
IgxProcessBarTextTemplateDirective,
IgxProgressBarGradientDirective,
],
imports: [CommonModule]
})
], IgxProgressBarModule);
return IgxProgressBarModule;
}());
export { IgxProgressBarModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtDQUFrQyxFQUNsQywrQkFBK0IsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsSUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBRXBCLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDcEIsK0JBQWUsQ0FBQTtJQUNmLGlDQUFpQixDQUFBO0lBQ2pCLDJCQUFXLENBQUE7QUFDZixDQUFDLEVBSlcsWUFBWSxLQUFaLFlBQVksUUFJdkI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3ZCLG9DQUFpQixDQUFBO0lBQ2pCLGdDQUFhLENBQUE7SUFDYixzQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUFPRDtJQUFBO1FBQ0k7O1dBRUc7UUFDSyx1QkFBa0IsR0FBVyxTQUFTLENBQUM7UUFFL0M7O1dBRUc7UUFDTyxvQkFBZSxHQUFHLFNBQVMsQ0FBQztRQUN0Qzs7V0FFRztRQUNPLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDckI7O1dBRUc7UUFDTyxXQUFNLEdBQUcsU0FBUyxD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MUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOztHQUVHO0FBZ0JIO0lBQUE7SUFBb0MsQ0FBQztJQUF4QixvQkFBb0I7UUFmaEMsUUFBUSxDQUFDO1lBQ04sWUFBWSxFQUFFO2dCQUNWLDZCQUE2QjtnQkFDN0IsK0JBQStCO2dCQUMvQixrQ0FBa0M7Z0JBQ2xDLCtCQUErQjthQUNsQztZQUNELE9BQU8sRUFBRTtnQkFDTCw2QkFBNkI7Z0JBQzdCLCtCQUErQjtnQkFDL0Isa0NBQWtDO2dCQUNsQywrQkFBK0I7YUFDbEM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDMUIsQ0FBQztPQUNXLG9CQUFvQixDQUFJO0lBQUQsMkJBQUM7Q0FBQSxBQUFyQyxJQUFxQztTQUF4QixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIElneFByb2Nlc3NCYXJUZXh0VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgSWd4UHJvZ3Jlc3NCYXJHcmFkaWVudERpcmVjdGl2ZSxcbn0gZnJvbSAnLi9wcm9ncmVzc2Jhci5jb21tb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxuY29uc3QgT05FX1BFUkNFTlQgPSAwLjAxO1xuY29uc3QgTUlOX1ZBTFVFID0gMDtcblxuZXhwb3J0IGVudW0gSWd4VGV4dEFsaWduIHtcbiAgICBTVEFSVCA9ICdzdGFydCcsXG4gICAgQ0VOVEVSID0gJ2NlbnRlcicsXG4gICAgRU5EID0gJ2VuZCdcbn1cblxuZXhwb3J0IGVudW0gSWd4UHJvZ3Jlc3NUeXBlIHtcbiAgICBEQU5HRVIgPSAnZGFuZ2VyJyxcbiAgICBJTkZPID0gJ2luZm8nLFxuICAgIFdBUk5JTkcgPSAnd2FybmluZycsXG4gICAgU1VDQ0VTUyA9ICdzdWNjZXNzJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VQcm9ncmVzc0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBwcmV2aW91c1ZhbHVlOiBudW1iZXI7XG4gICAgY3VycmVudFZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJvZ3Jlc3Mge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlcXVlc3RBbmltYXRpb25JZDogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsdWVJblBlcmNlbnQgPSBNSU5fVkFMVUU7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfbWF4ID0gMTAwO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ZhbHVlID0gTUlOX1ZBT