alert.component.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import * as tslib_1 from "tslib";
  6. import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
  7. import { AlertConfig } from './alert.config';
  8. import { OnChange } from 'ngx-bootstrap/utils';
  9. var AlertComponent = /** @class */ (function () {
  10. function AlertComponent(_config, changeDetection) {
  11. var _this = this;
  12. this.changeDetection = changeDetection;
  13. /**
  14. * Alert type.
  15. * Provides one of four bootstrap supported contextual classes:
  16. * `success`, `info`, `warning` and `danger`
  17. */
  18. this.type = 'warning';
  19. /**
  20. * If set, displays an inline "Close" button
  21. */
  22. this.dismissible = false;
  23. /**
  24. * Is alert visible
  25. */
  26. this.isOpen = true;
  27. /**
  28. * This event fires immediately after close instance method is called,
  29. * $event is an instance of Alert component.
  30. */
  31. this.onClose = new EventEmitter();
  32. /**
  33. * This event fires when alert closed, $event is an instance of Alert component
  34. */
  35. this.onClosed = new EventEmitter();
  36. this.classes = '';
  37. this.dismissibleChange = new EventEmitter();
  38. Object.assign(this, _config);
  39. this.dismissibleChange.subscribe((/**
  40. * @param {?} dismissible
  41. * @return {?}
  42. */
  43. function (dismissible) {
  44. _this.classes = _this.dismissible ? 'alert-dismissible' : '';
  45. _this.changeDetection.markForCheck();
  46. }));
  47. }
  48. /**
  49. * @return {?}
  50. */
  51. AlertComponent.prototype.ngOnInit = /**
  52. * @return {?}
  53. */
  54. function () {
  55. var _this = this;
  56. if (this.dismissOnTimeout) {
  57. // if dismissOnTimeout used as attr without binding, it will be a string
  58. setTimeout((/**
  59. * @return {?}
  60. */
  61. function () { return _this.close(); }), parseInt((/** @type {?} */ (this.dismissOnTimeout)), 10));
  62. }
  63. };
  64. // todo: animation ` If the .fade and .in classes are present on the element,
  65. // the alert will fade out before it is removed`
  66. /**
  67. * Closes an alert by removing it from the DOM.
  68. */
  69. // todo: animation ` If the .fade and .in classes are present on the element,
  70. // the alert will fade out before it is removed`
  71. /**
  72. * Closes an alert by removing it from the DOM.
  73. * @return {?}
  74. */
  75. AlertComponent.prototype.close =
  76. // todo: animation ` If the .fade and .in classes are present on the element,
  77. // the alert will fade out before it is removed`
  78. /**
  79. * Closes an alert by removing it from the DOM.
  80. * @return {?}
  81. */
  82. function () {
  83. if (!this.isOpen) {
  84. return;
  85. }
  86. this.onClose.emit(this);
  87. this.isOpen = false;
  88. this.changeDetection.markForCheck();
  89. this.onClosed.emit(this);
  90. };
  91. AlertComponent.decorators = [
  92. { type: Component, args: [{
  93. selector: 'alert,bs-alert',
  94. template: "<ng-template [ngIf]=\"isOpen\">\n <div [class]=\"'alert alert-' + type\" role=\"alert\" [ngClass]=\"classes\">\n <ng-template [ngIf]=\"dismissible\">\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"close()\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">Close</span>\n </button>\n </ng-template>\n <ng-content></ng-content>\n </div>\n</ng-template>\n",
  95. changeDetection: ChangeDetectionStrategy.OnPush
  96. }] }
  97. ];
  98. /** @nocollapse */
  99. AlertComponent.ctorParameters = function () { return [
  100. { type: AlertConfig },
  101. { type: ChangeDetectorRef }
  102. ]; };
  103. AlertComponent.propDecorators = {
  104. type: [{ type: Input }],
  105. dismissible: [{ type: Input }],
  106. dismissOnTimeout: [{ type: Input }],
  107. isOpen: [{ type: Input }],
  108. onClose: [{ type: Output }],
  109. onClosed: [{ type: Output }]
  110. };
  111. tslib_1.__decorate([
  112. OnChange(),
  113. tslib_1.__metadata("design:type", Object)
  114. ], AlertComponent.prototype, "dismissible", void 0);
  115. return AlertComponent;
  116. }());
  117. export { AlertComponent };
  118. if (false) {
  119. /**
  120. * Alert type.
  121. * Provides one of four bootstrap supported contextual classes:
  122. * `success`, `info`, `warning` and `danger`
  123. * @type {?}
  124. */
  125. AlertComponent.prototype.type;
  126. /**
  127. * If set, displays an inline "Close" button
  128. * @type {?}
  129. */
  130. AlertComponent.prototype.dismissible;
  131. /**
  132. * Number in milliseconds, after which alert will be closed
  133. * @type {?}
  134. */
  135. AlertComponent.prototype.dismissOnTimeout;
  136. /**
  137. * Is alert visible
  138. * @type {?}
  139. */
  140. AlertComponent.prototype.isOpen;
  141. /**
  142. * This event fires immediately after close instance method is called,
  143. * $event is an instance of Alert component.
  144. * @type {?}
  145. */
  146. AlertComponent.prototype.onClose;
  147. /**
  148. * This event fires when alert closed, $event is an instance of Alert component
  149. * @type {?}
  150. */
  151. AlertComponent.prototype.onClosed;
  152. /** @type {?} */
  153. AlertComponent.prototype.classes;
  154. /** @type {?} */
  155. AlertComponent.prototype.dismissibleChange;
  156. /**
  157. * @type {?}
  158. * @private
  159. */
  160. AlertComponent.prototype.changeDetection;
  161. }
  162. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJvb3RzdHJhcC9hbGVydC8iLCJzb3VyY2VzIjpbImFsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DO0lBOEJFLHdCQUFZLE9BQW9CLEVBQVUsZUFBa0M7UUFBNUUsaUJBTUM7UUFOeUMsb0JBQWUsR0FBZixlQUFlLENBQW1COzs7Ozs7UUFwQm5FLFNBQUksR0FBRyxTQUFTLENBQUM7Ozs7UUFFRCxnQkFBVyxHQUFHLEtBQUssQ0FBQzs7OztRQUtwQyxXQUFNLEdBQUcsSUFBSSxDQUFDOzs7OztRQUtiLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQzs7OztRQUU3QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFHeEQsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7Ozs7UUFBQyxVQUFDLFdBQW9CO1lBQ3BELEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxLQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELGlDQUFROzs7SUFBUjtRQUFBLGlCQVFDO1FBUEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsd0VBQXdFO1lBQ3hFLFVBQVU7OztZQUNSLGNBQU0sT0FBQSxLQUFJLENBQUMsS0FBSyxFQUFFLEVBQVosQ0FBWSxHQUNsQixRQUFRLENBQUMsbUJBQUEsSUFBSSxDQUFDLGdCQUFnQixFQUFVLEVBQUUsRUFBRSxDQUFDLENBQzlDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFDN0UsZ0RBQWdEO0lBQ2hEOztPQUVHOzs7Ozs7O0lBQ0gsOEJBQUs7Ozs7Ozs7SUFBTDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7Z0JBOURGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQiwrYkFBcUM7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQkFQUSxXQUFXO2dCQVBsQixpQkFBaUI7Ozt1QkFvQmhCLEtBQUs7OEJBRVMsS0FBSzttQ0FFbkIsS0FBSzt5QkFHTCxLQUFLOzBCQUtMLE1BQU07MkJBRU4sTUFBTTs7SUFaa0I7UUFBeEIsUUFBUSxFQUFFOzt1REFBa0M7SUFtRC9DLHFCQUFDO0NBQUEsQUEvREQsSUErREM7U0ExRFksY0FBYzs7Ozs7Ozs7SUFLekIsOEJBQTBCOzs7OztJQUUxQixxQ0FBNkM7Ozs7O0lBRTdDLDBDQUEyQzs7Ozs7SUFHM0MsZ0NBQXVCOzs7Ozs7SUFLdkIsaUNBQXVEOzs7OztJQUV2RCxrQ0FBd0Q7O0lBR3hELGlDQUFhOztJQUNiLDJDQUFnRDs7Ozs7SUFFZCx5Q0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4vYWxlcnQuY29uZmlnJztcbmltcG9ydCB7IE9uQ2hhbmdlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FsZXJ0LGJzLWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogQWxlcnQgdHlwZS5cbiAgICogUHJvdmlkZXMgb25lIG9mIGZvdXIgYm9vdHN0cmFwIHN1cHBvcnRlZCBjb250ZXh0dWFsIGNsYXNzZXM6XG4gICAqIGBzdWNjZXNzYCwgYGluZm9gLCBgd2FybmluZ2AgYW5kIGBkYW5nZXJgXG4gICAqL1xuICBASW5wdXQoKSB0eXBlID0gJ3dhcm5pbmcnO1xuICAvKiogSWYgc2V0LCBkaXNwbGF5cyBhbiBpbmxpbmUgXCJDbG9zZVwiIGJ1dHRvbiAqL1xuICBAT25DaGFuZ2UoKSAgIEBJbnB1dCgpICAgZGlzbWlzc2libGUgPSBmYWxzZTtcbiAgLyoqIE51bWJlciBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIGFsZXJ0IHdpbGwgYmUgY2xvc2VkICovXG4gIEBJbnB1dCgpIGRpc21pc3NPblRpbWVvdXQ6IG51bWJlciB8IHN0cmluZztcblxuICAvKiogSXMgYWxlcnQgdmlzaWJsZSAqL1xuICBASW5wdXQoKSBpc09wZW4gPSB0cnVlO1xuXG4gIC8qKiBUaGlzIGV2ZW50IGZpcmVzIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlIGluc3RhbmNlIG1ldGhvZCBpcyBjYWxsZWQsXG4gICAqICRldmVudCBpcyBhbiBpbnN0YW5jZSBvZiBBbGVydCBjb21wb25lbnQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWxlcnRDb21wb25lbnQ+KCk7XG4gIC8qKiBUaGlzIGV2ZW50IGZpcmVzIHdoZW4gYWxlcnQgY2xvc2VkLCAkZXZlbnQgaXMgYW4gaW5zdGFuY2Ugb2YgQWxlcnQgY29tcG9uZW50ICovXG4gIEBPdXRwdXQoKSBvbkNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QWxlcnRDb21wb25lbnQ+KCk7XG5cblxuICBjbGFzc2VzID0gJyc7XG4gIGRpc21pc3NpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKF9jb25maWc6IEFsZXJ0Q29uZmlnLCBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIF9jb25maWcpO1xuICAgIHRoaXMuZGlzbWlzc2libGVDaGFuZ2Uuc3Vic2NyaWJlKChkaXNtaXNzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgdGhpcy5jbGFzc2VzID0gdGhpcy5kaXNtaXNzaWJsZSA/ICdhbGVydC1kaXNtaXNzaWJsZScgOiAnJztcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzbWlzc09uVGltZW91dCkge1xuICAgICAgLy8gaWYgZGlzbWlzc09uVGltZW91dCB1c2VkIGFzIGF0dHIgd2l0aG91dCBiaW5kaW5nLCBpdCB3aWxsIGJlIGEgc3RyaW5nXG4gICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3NlKCksXG4gICAgICAgIHBhcnNlSW50KHRoaXMuZGlzbWlzc09uVGltZW91dCBhcyBzdHJpbmcsIDEwKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyB0b2RvOiBhbmltYXRpb24gYCBJZiB0aGUgLmZhZGUgYW5kIC5pbiBjbGFzc2VzIGFyZSBwcmVzZW50IG9uIHRoZSBlbGVtZW50LFxuICAvLyB0aGUgYWxlcnQgd2lsbCBmYWRlIG91dCBiZWZvcmUgaXQgaXMgcmVtb3ZlZGBcbiAgLyoqXG4gICAqIENsb3NlcyBhbiBhbGVydCBieSByZW1vdmluZyBpdCBmcm9tIHRoZSBET00uXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsb3NlLmVtaXQodGhpcyk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLm9uQ2xvc2VkLmVtaXQodGhpcyk7XG4gIH1cbn1cbiJdfQ==