UNPKG

@addapptables/notifier

Version:
135 lines 11.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { take } from 'rxjs/operators'; /** * @abstract */ export class AbstractStrategy { /** * @param {?} _document */ constructor(_document) { this._document = _document; this.notifiers = []; this.margin = 30; this.maxNotifiers = 5; this.notifiers = []; } /** * @param {?} notifierRef * @return {?} */ newNotifier(notifierRef) { notifierRef.afterClosed().pipe(take(1)).subscribe(this.deletePortal.bind(this)); notifierRef.changedStyle(this.getStyleNewNotifier(notifierRef)); setTimeout((/** * @return {?} */ () => { if (this.notifiers.length >= this.maxNotifiers) { /** @type {?} */ const notifier = this.notifiers.shift(); notifier.close(); } /** @type {?} */ const element = this._document.querySelector(`#${notifierRef.component._id} > addapptable-notifier > .addapptable-notifier`); this.notifiers.forEach((/** * @param {?} notifier * @return {?} */ notifier => { /** @type {?} */ const elementNotifier = this._document .querySelector(`#${notifier.component._id} > addapptable-notifier > .addapptable-notifier`); notifier.changedStyle(this.getStyleNotifierPosition(elementNotifier, element.clientHeight)); })); this.notifiers.push(notifierRef); })); } /** * @private * @param {?} id * @return {?} */ deletePortal(id) { /** @type {?} */ const notifier = this.notifiers.findIndex((/** * @param {?} x * @return {?} */ x => x.component._id === id)); if (notifier >= 0) { /** @type {?} */ const element = this._document .querySelector(`#${this.notifiers[notifier].component._id} > addapptable-notifier > .addapptable-notifier`); /** @type {?} */ const clientHeightElementDelete = element.clientHeight; this.notifiers.splice(notifier, 1); for (let index = notifier - 1; index >= 0; index--) { /** @type {?} */ const notifierStyle = this.notifiers[index]; /** @type {?} */ const elementChange = this._document .querySelector(`#${notifierStyle.component._id} > addapptable-notifier > .addapptable-notifier`); notifierStyle.changedStyle(this.getStyleDeleteNotifier(elementChange, clientHeightElementDelete)); } } } /** * @return {?} */ ngOnDestroy() { this.notifiers.forEach((/** * @param {?} notifier * @return {?} */ notifier => { notifier.close(); })); } } /** @nocollapse */ AbstractStrategy.ctorParameters = () => [ { type: HTMLDocument, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; if (false) { /** @type {?} */ AbstractStrategy.prototype.notifiers; /** @type {?} */ AbstractStrategy.prototype.margin; /** @type {?} */ AbstractStrategy.prototype.maxNotifiers; /** * @type {?} * @private */ AbstractStrategy.prototype._document; /** * @abstract * @protected * @param {?} notifierRef * @return {?} */ AbstractStrategy.prototype.getStyleNewNotifier = function (notifierRef) { }; /** * @abstract * @protected * @param {?} divNotifier * @param {?} clientHeight * @return {?} */ AbstractStrategy.prototype.getStyleNotifierPosition = function (divNotifier, clientHeight) { }; /** * @abstract * @protected * @param {?} elementChange * @param {?} clientHeightElementDelete * @return {?} */ AbstractStrategy.prototype.getStyleDeleteNotifier = function (elementChange, clientHeightElementDelete) { }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRkYXBwdGFibGVzL25vdGlmaWVyLyIsInNvdXJjZXMiOlsibGliL3N0cmF0ZWdpZXMvYWJzdHJhY3Qtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUd0QyxNQUFNLE9BQWdCLGdCQUFnQjs7OztJQU9sQyxZQUFzQyxTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBTjdELGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBRTlCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFWixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUdiLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLFdBQXdCO1FBQ2hDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEYsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNoRSxVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7O3NCQUN0QyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNwQjs7a0JBQ0ssT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlEQUFpRCxDQUFDO1lBQzVILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzs7OztZQUFDLFFBQVEsQ0FBQyxFQUFFOztzQkFDeEIsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTO3FCQUNqQyxhQUFhLENBQWlCLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlEQUFpRCxDQUFDO2dCQUMvRyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDaEcsQ0FBQyxFQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7OztJQU1PLFlBQVksQ0FBQyxFQUFVOztjQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUM7UUFDdEUsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFOztrQkFDVCxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVM7aUJBQ3pCLGFBQWEsQ0FBaUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlEQUFpRCxDQUFDOztrQkFDekgseUJBQXlCLEdBQUcsT0FBTyxDQUFDLFlBQVk7WUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEtBQUssSUFBSSxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFOztzQkFDMUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDOztzQkFDckMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTO3FCQUMvQixhQUFhLENBQWlCLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlEQUFpRCxDQUFDO2dCQUNwSCxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDO2FBQ3JHO1NBQ0o7SUFDTCxDQUFDOzs7O0lBSUQsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzs7OztRQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7WUFoRGdELFlBQVksdUJBQWhELE1BQU0sU0FBQyxRQUFROzs7O0lBTjVCLHFDQUE4Qjs7SUFFOUIsa0NBQVk7O0lBRVosd0NBQWlCOzs7OztJQUVMLHFDQUFpRDs7Ozs7OztJQXNCN0QsNEVBQWlFOzs7Ozs7OztJQUVqRSwrRkFBK0Y7Ozs7Ozs7O0lBa0IvRiw0R0FBNEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZmllclJlZiB9IGZyb20gJy4uL25vdGlmaWVyLXJlZic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyYXRlZ3kgfSBmcm9tICcuL3N0cmF0ZWd5JztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN0cmF0ZWd5IGltcGxlbWVudHMgU3RyYXRlZ3ksIE9uRGVzdHJveSB7XHJcbiAgICBub3RpZmllcnM6IE5vdGlmaWVyUmVmW10gPSBbXTtcclxuXHJcbiAgICBtYXJnaW4gPSAzMDtcclxuXHJcbiAgICBtYXhOb3RpZmllcnMgPSA1O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBIVE1MRG9jdW1lbnQpIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWVycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld05vdGlmaWVyKG5vdGlmaWVyUmVmOiBOb3RpZmllclJlZikge1xyXG4gICAgICAgIG5vdGlmaWVyUmVmLmFmdGVyQ2xvc2VkKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodGhpcy5kZWxldGVQb3J0YWwuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgbm90aWZpZXJSZWYuY2hhbmdlZFN0eWxlKHRoaXMuZ2V0U3R5bGVOZXdOb3RpZmllcihub3RpZmllclJlZikpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ub3RpZmllcnMubGVuZ3RoID49IHRoaXMubWF4Tm90aWZpZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZmllciA9IHRoaXMubm90aWZpZXJzLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgICAgICBub3RpZmllci5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtub3RpZmllclJlZi5jb21wb25lbnQuX2lkfSA+IGFkZGFwcHRhYmxlLW5vdGlmaWVyID4gLmFkZGFwcHRhYmxlLW5vdGlmaWVyYCk7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpZXJzLmZvckVhY2gobm90aWZpZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudE5vdGlmaWVyID0gdGhpcy5fZG9jdW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYCMke25vdGlmaWVyLmNvbXBvbmVudC5faWR9ID4gYWRkYXBwdGFibGUtbm90aWZpZXIgPiAuYWRkYXBwdGFibGUtbm90aWZpZXJgKTtcclxuICAgICAgICAgICAgICAgIG5vdGlmaWVyLmNoYW5nZWRTdHlsZSh0aGlzLmdldFN0eWxlTm90aWZpZXJQb3NpdGlvbihlbGVtZW50Tm90aWZpZXIsIGVsZW1lbnQuY2xpZW50SGVpZ2h0KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWVycy5wdXNoKG5vdGlmaWVyUmVmKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U3R5bGVOZXdOb3RpZmllcihub3RpZmllclJlZjogTm90aWZpZXJSZWYpO1xyXG5cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRTdHlsZU5vdGlmaWVyUG9zaXRpb24oZGl2Tm90aWZpZXI6IEhUTUxEaXZFbGVtZW50LCBjbGllbnRIZWlnaHQ6IG51bWJlcik7XHJcblxyXG4gICAgcHJpdmF0ZSBkZWxldGVQb3J0YWwoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IG5vdGlmaWVyID0gdGhpcy5ub3RpZmllcnMuZmluZEluZGV4KHggPT4geC5jb21wb25lbnQuX2lkID09PSBpZCk7XHJcbiAgICAgICAgaWYgKG5vdGlmaWVyID49IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2RvY3VtZW50XHJcbiAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYCMke3RoaXMubm90aWZpZXJzW25vdGlmaWVyXS5jb21wb25lbnQuX2lkfSA+IGFkZGFwcHRhYmxlLW5vdGlmaWVyID4gLmFkZGFwcHRhYmxlLW5vdGlmaWVyYCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudEhlaWdodEVsZW1lbnREZWxldGUgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmllcnMuc3BsaWNlKG5vdGlmaWVyLCAxKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBub3RpZmllciAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vdGlmaWVyU3R5bGUgPSB0aGlzLm5vdGlmaWVyc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50Q2hhbmdlID0gdGhpcy5fZG9jdW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYCMke25vdGlmaWVyU3R5bGUuY29tcG9uZW50Ll9pZH0gPiBhZGRhcHB0YWJsZS1ub3RpZmllciA+IC5hZGRhcHB0YWJsZS1ub3RpZmllcmApO1xyXG4gICAgICAgICAgICAgICAgbm90aWZpZXJTdHlsZS5jaGFuZ2VkU3R5bGUodGhpcy5nZXRTdHlsZURlbGV0ZU5vdGlmaWVyKGVsZW1lbnRDaGFuZ2UsIGNsaWVudEhlaWdodEVsZW1lbnREZWxldGUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0U3R5bGVEZWxldGVOb3RpZmllcihlbGVtZW50Q2hhbmdlOiBIVE1MRGl2RWxlbWVudCwgY2xpZW50SGVpZ2h0RWxlbWVudERlbGV0ZTogbnVtYmVyKTtcclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWVycy5mb3JFYWNoKG5vdGlmaWVyID0+IHtcclxuICAgICAgICAgICAgbm90aWZpZXIuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=