@addapptables/notifier
Version:
Material notifier library for angular
135 lines • 11.5 kB
JavaScript
/**
* @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=