bar.component.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { Component, Host, HostBinding, Input, ElementRef, Renderer2 } from '@angular/core';
  6. import { ProgressbarComponent } from './progressbar.component';
  7. import { isBs3 } from 'ngx-bootstrap/utils';
  8. // todo: number pipe
  9. // todo: use query from progress?
  10. var BarComponent = /** @class */ (function () {
  11. function BarComponent(el, progress, renderer) {
  12. this.el = el;
  13. this.renderer = renderer;
  14. this.addClass = true;
  15. this.percent = 0;
  16. this.progress = progress;
  17. }
  18. Object.defineProperty(BarComponent.prototype, "type", {
  19. /** provide one of the four supported contextual classes: `success`, `info`, `warning`, `danger` */
  20. get: /**
  21. * provide one of the four supported contextual classes: `success`, `info`, `warning`, `danger`
  22. * @return {?}
  23. */
  24. function () {
  25. return this._type;
  26. },
  27. set: /**
  28. * @param {?} v
  29. * @return {?}
  30. */
  31. function (v) {
  32. this._type = v;
  33. this.applyTypeClasses();
  34. },
  35. enumerable: true,
  36. configurable: true
  37. });
  38. Object.defineProperty(BarComponent.prototype, "value", {
  39. /** current value of progress bar */
  40. get: /**
  41. * current value of progress bar
  42. * @return {?}
  43. */
  44. function () {
  45. return this._value;
  46. },
  47. set: /**
  48. * @param {?} v
  49. * @return {?}
  50. */
  51. function (v) {
  52. if (!v && v !== 0) {
  53. return;
  54. }
  55. this._value = v;
  56. this.recalculatePercentage();
  57. },
  58. enumerable: true,
  59. configurable: true
  60. });
  61. Object.defineProperty(BarComponent.prototype, "setBarWidth", {
  62. get: /**
  63. * @return {?}
  64. */
  65. function () {
  66. this.recalculatePercentage();
  67. return this.percent;
  68. },
  69. enumerable: true,
  70. configurable: true
  71. });
  72. Object.defineProperty(BarComponent.prototype, "isBs3", {
  73. get: /**
  74. * @return {?}
  75. */
  76. function () {
  77. return isBs3();
  78. },
  79. enumerable: true,
  80. configurable: true
  81. });
  82. /**
  83. * @return {?}
  84. */
  85. BarComponent.prototype.ngOnInit = /**
  86. * @return {?}
  87. */
  88. function () {
  89. this.progress.addBar(this);
  90. };
  91. /**
  92. * @return {?}
  93. */
  94. BarComponent.prototype.ngOnDestroy = /**
  95. * @return {?}
  96. */
  97. function () {
  98. this.progress.removeBar(this);
  99. };
  100. /**
  101. * @return {?}
  102. */
  103. BarComponent.prototype.recalculatePercentage = /**
  104. * @return {?}
  105. */
  106. function () {
  107. this.percent = +(this.value / this.progress.max * 100).toFixed(2);
  108. /** @type {?} */
  109. var totalPercentage = this.progress.bars
  110. .reduce((/**
  111. * @param {?} total
  112. * @param {?} bar
  113. * @return {?}
  114. */
  115. function (total, bar) {
  116. return total + bar.percent;
  117. }), 0);
  118. if (totalPercentage > 100) {
  119. this.percent -= totalPercentage - 100;
  120. }
  121. };
  122. /**
  123. * @private
  124. * @return {?}
  125. */
  126. BarComponent.prototype.applyTypeClasses = /**
  127. * @private
  128. * @return {?}
  129. */
  130. function () {
  131. if (this._prevType) {
  132. /** @type {?} */
  133. var barTypeClass = "progress-bar-" + this._prevType;
  134. /** @type {?} */
  135. var bgClass = "bg-" + this._prevType;
  136. this.renderer.removeClass(this.el.nativeElement, barTypeClass);
  137. this.renderer.removeClass(this.el.nativeElement, bgClass);
  138. this._prevType = null;
  139. }
  140. if (this._type) {
  141. /** @type {?} */
  142. var barTypeClass = "progress-bar-" + this._type;
  143. /** @type {?} */
  144. var bgClass = "bg-" + this._type;
  145. this.renderer.addClass(this.el.nativeElement, barTypeClass);
  146. this.renderer.addClass(this.el.nativeElement, bgClass);
  147. this._prevType = this._type;
  148. }
  149. };
  150. BarComponent.decorators = [
  151. { type: Component, args: [{
  152. selector: 'bar',
  153. template: "<ng-content></ng-content>\n",
  154. host: {
  155. role: 'progressbar',
  156. 'aria-valuemin': '0',
  157. '[class.progress-bar-animated]': '!isBs3 && animate',
  158. '[class.progress-bar-striped]': 'striped',
  159. '[class.active]': 'isBs3 && animate',
  160. '[attr.aria-valuenow]': 'value',
  161. '[attr.aria-valuetext]': 'percent ? percent.toFixed(0) + "%" : ""',
  162. '[attr.aria-valuemax]': 'max',
  163. '[style.height.%]': '"100"'
  164. }
  165. }] }
  166. ];
  167. /** @nocollapse */
  168. BarComponent.ctorParameters = function () { return [
  169. { type: ElementRef },
  170. { type: ProgressbarComponent, decorators: [{ type: Host }] },
  171. { type: Renderer2 }
  172. ]; };
  173. BarComponent.propDecorators = {
  174. type: [{ type: Input }],
  175. value: [{ type: Input }],
  176. setBarWidth: [{ type: HostBinding, args: ['style.width.%',] }],
  177. addClass: [{ type: HostBinding, args: ['class.progress-bar',] }]
  178. };
  179. return BarComponent;
  180. }());
  181. export { BarComponent };
  182. if (false) {
  183. /** @type {?} */
  184. BarComponent.prototype.max;
  185. /** @type {?} */
  186. BarComponent.prototype.addClass;
  187. /** @type {?} */
  188. BarComponent.prototype.striped;
  189. /** @type {?} */
  190. BarComponent.prototype.animate;
  191. /** @type {?} */
  192. BarComponent.prototype.percent;
  193. /** @type {?} */
  194. BarComponent.prototype.progress;
  195. /**
  196. * @type {?}
  197. * @protected
  198. */
  199. BarComponent.prototype._value;
  200. /**
  201. * @type {?}
  202. * @protected
  203. */
  204. BarComponent.prototype._type;
  205. /**
  206. * @type {?}
  207. * @private
  208. */
  209. BarComponent.prototype._prevType;
  210. /**
  211. * @type {?}
  212. * @private
  213. */
  214. BarComponent.prototype.el;
  215. /**
  216. * @type {?}
  217. * @private
  218. */
  219. BarComponent.prototype.renderer;
  220. }
  221. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXIvIiwic291cmNlcyI6WyJiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUdMLFVBQVUsRUFDVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFJNUM7SUFpRUUsc0JBQ1UsRUFBYyxFQUNkLFFBQThCLEVBQzlCLFFBQW1CO1FBRm5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFFZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEJNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFRbkQsWUFBTyxHQUFHLENBQUMsQ0FBQztRQVlWLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFwREQsc0JBQ0ksOEJBQUk7UUFGUixtR0FBbUc7Ozs7O1FBQ25HO1lBRUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7Ozs7O1FBRUQsVUFBUyxDQUFTO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQzs7O09BTEE7SUFRRCxzQkFDSSwrQkFBSztRQUZULG9DQUFvQzs7Ozs7UUFDcEM7WUFFRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQzs7Ozs7UUFFRCxVQUFVLENBQVM7WUFDakIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FB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Ozs7dUJBMkJSLEtBQUs7d0JBV0wsS0FBSzs4QkFhTCxXQUFXLFNBQUMsZUFBZTsyQkFPM0IsV0FBVyxTQUFDLG9CQUFvQjs7SUE2RG5DLG1CQUFDO0NBQUEsQUEvR0QsSUErR0M7U0FoR1ksWUFBWTs7O0lBQ3ZCLDJCQUFZOztJQWtDWixnQ0FBbUQ7O0lBTW5ELCtCQUFpQjs7SUFDakIsK0JBQWlCOztJQUNqQiwrQkFBWTs7SUFDWixnQ0FBK0I7Ozs7O0lBRS9CLDhCQUF5Qjs7Ozs7SUFDekIsNkJBQXdCOzs7OztJQUN4QixpQ0FBMEI7Ozs7O0lBR3hCLDBCQUFzQjs7Ozs7SUFFdEIsZ0NBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb2dyZXNzYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmVzc2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNCczMgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3V0aWxzJztcblxuLy8gdG9kbzogbnVtYmVyIHBpcGVcbi8vIHRvZG86IHVzZSBxdWVyeSBmcm9tIHByb2dyZXNzP1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAncHJvZ3Jlc3NiYXInLFxuICAgICdhcmlhLXZhbHVlbWluJzogJzAnLFxuICAgICdbY2xhc3MucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkXSc6ICchaXNCczMgJiYgYW5pbWF0ZScsXG4gICAgJ1tjbGFzcy5wcm9ncmVzcy1iYXItc3RyaXBlZF0nOiAnc3RyaXBlZCcsXG4gICAgJ1tjbGFzcy5hY3RpdmVdJzogJ2lzQnMzICYmIGFuaW1hdGUnLFxuICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICd2YWx1ZScsXG4gICAgJ1thdHRyLmFyaWEtdmFsdWV0ZXh0XSc6ICdwZXJjZW50ID8gcGVyY2VudC50b0ZpeGVkKDApICsgXCIlXCIgOiBcIlwiJyxcbiAgICAnW2F0dHIuYXJpYS12YWx1ZW1heF0nOiAnbWF4JyxcbiAgICAnW3N0eWxlLmhlaWdodC4lXSc6ICdcIjEwMFwiJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbWF4OiBudW1iZXI7XG5cbiAgLyoqIHByb3ZpZGUgb25lIG9mIHRoZSBmb3VyIHN1cHBvcnRlZCBjb250ZXh0dWFsIGNsYXNzZXM6IGBzdWNjZXNzYCwgYGluZm9gLCBgd2FybmluZ2AsIGBkYW5nZXJgICovXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBzZXQgdHlwZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdjtcbiAgICB0aGlzLmFwcGx5VHlwZUNsYXNzZXMoKTtcbiAgfVxuXG4gIC8qKiBjdXJyZW50IHZhbHVlIG9mIHByb2dyZXNzIGJhciAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodjogbnVtYmVyKSB7XG4gICAgaWYgKCF2ICYmIHYgIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIHRoaXMucmVjYWxjdWxhdGVQZXJjZW50YWdlKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoLiUnKVxuICBnZXQgc2V0QmFyV2lkdGgoKSB7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVBlcmNlbnRhZ2UoKTtcblxuICAgIHJldHVybiB0aGlzLnBlcmNlbnQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByb2dyZXNzLWJhcicpIGFkZENsYXNzID0gdHJ1ZTtcblxuICBnZXQgaXNCczMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzQnMzKCk7XG4gIH1cblxuICBzdHJpcGVkOiBib29sZWFuO1xuICBhbmltYXRlOiBib29sZWFuO1xuICBwZXJjZW50ID0gMDtcbiAgcHJvZ3Jlc3M6IFByb2dyZXNzYmFyQ29tcG9uZW50O1xuXG4gIHByb3RlY3RlZCBfdmFsdWU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ByZXZUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBASG9zdCgpIHByb2dyZXNzOiBQcm9ncmVzc2JhckNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9ncmVzcy5hZGRCYXIodGhpcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2dyZXNzLnJlbW92ZUJhcih0aGlzKTtcbiAgfVxuXG4gIHJlY2FsY3VsYXRlUGVyY2VudGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBlcmNlbnQgPSArKHRoaXMudmFsdWUgLyB0aGlzLnByb2dyZXNzLm1heCAqIDEwMCkudG9GaXhlZCgyKTtcblxuICAgIGNvbnN0IHRvdGFsUGVyY2VudGFnZSA9IHRoaXMucHJvZ3Jlc3MuYmFyc1xuICAgICAgLnJlZHVjZShmdW5jdGlvbiAodG90YWw6IG51bWJlciwgYmFyOiBCYXJDb21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdG90YWwgKyBiYXIucGVyY2VudDtcbiAgICAgIH0sIDApO1xuXG4gICAgaWYgKHRvdGFsUGVyY2VudGFnZSA+IDEwMCkge1xuICAgICAgdGhpcy5wZXJjZW50IC09IHRvdGFsUGVyY2VudGFnZSAtIDEwMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VHlwZUNsYXNzZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ByZXZUeXBlKSB7XG4gICAgICBjb25zdCBiYXJUeXBlQ2xhc3MgPSBgcHJvZ3Jlc3MtYmFyLSR7dGhpcy5fcHJldlR5cGV9YDtcbiAgICAgIGNvbnN0IGJnQ2xhc3MgPSBgYmctJHt0aGlzLl9wcmV2VHlwZX1gO1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGJhclR5cGVDbGFzcyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgYmdDbGFzcyk7XG4gICAgICB0aGlzLl9wcmV2VHlwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3R5cGUpIHtcbiAgICAgIGNvbnN0IGJhclR5cGVDbGFzcyA9IGBwcm9ncmVzcy1iYXItJHt0aGlzLl90eXBlfWA7XG4gICAgICBjb25zdCBiZ0NsYXNzID0gYGJnLSR7dGhpcy5fdHlwZX1gO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGJhclR5cGVDbGFzcyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgYmdDbGFzcyk7XG4gICAgICB0aGlzLl9wcmV2VHlwZSA9IHRoaXMuX3R5cGU7XG4gICAgfVxuICB9XG59XG4iXX0=