@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
122 lines (121 loc) • 10.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Subject } from 'rxjs';
import { Component, ViewContainerRef, HostBinding } from '@angular/core';
import * as nh from '../../../native-helper';
export class AsiNotificationContainer {
/**
* @param {?} viewContainerRef
*/
constructor(viewContainerRef) {
this.viewContainerRef = viewContainerRef;
this.class = 'asi-component asi-notification-container';
this.subjectContainer = new Subject();
this.notifications = [];
}
/**
* @param {?} position
* @return {?}
*/
setPosition(position) {
this._position = position;
this.class += ` ${this._position.toString()}`;
}
/**
* @return {?}
*/
getPosition() {
return this._position;
}
/**
* @return {?}
*/
onContainerEmpty() {
return this.subjectContainer.asObservable();
}
/**
* @param {?} componentRef
* @param {?} config
* @return {?}
*/
addNotification(componentRef, config) {
this.notifications.unshift(componentRef);
setTimeout(() => {
this.updatePosition();
}, 5);
if (config.delayInMs != null && config.delayInMs > 0) {
setTimeout(() => {
this.removeNotification(componentRef);
}, config.delayInMs);
}
}
/**
* @param {?} componentRef
* @return {?}
*/
removeNotification(componentRef) {
componentRef.location.nativeElement.style.opacity = '0';
setTimeout(() => {
nh.remove(this.notifications, (notif) => {
return notif.instance === componentRef.instance;
});
this.updatePosition();
componentRef.destroy();
if (this.notifications.length === 0) {
this.subjectContainer.next(this);
this.subjectContainer.complete();
}
}, 300);
}
/**
* @return {?}
*/
updatePosition() {
/** @type {?} */
let top = this._position.value.startsWith('top');
/** @type {?} */
let position = 0;
/** @type {?} */
let notifHeight;
this.notifications.forEach(notification => {
notifHeight = notification.location.nativeElement.offsetHeight;
/** @type {?} */
let pos = (position * notifHeight + (5 * position)) + 'px';
if (top) {
notification.location.nativeElement.style.top = pos;
}
else {
notification.location.nativeElement.style.bottom = pos;
}
position++;
});
}
}
AsiNotificationContainer.decorators = [
{ type: Component, args: [{
selector: 'asi-notification-container',
template: "<div class=\"asi-notification-container-panel\"></div>"
}] }
];
/** @nocollapse */
AsiNotificationContainer.ctorParameters = () => [
{ type: ViewContainerRef }
];
AsiNotificationContainer.propDecorators = {
class: [{ type: HostBinding, args: ['class',] }]
};
if (false) {
/** @type {?} */
AsiNotificationContainer.prototype.class;
/** @type {?} */
AsiNotificationContainer.prototype._position;
/** @type {?} */
AsiNotificationContainer.prototype.subjectContainer;
/** @type {?} */
AsiNotificationContainer.prototype.notifications;
/** @type {?} */
AsiNotificationContainer.prototype.viewContainerRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1ub3RpZmljYXRpb24vY29udGFpbmVyL2FzaS1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFnQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU03QyxNQUFNOzs7O0lBU0osWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7cUJBUHZCLDBDQUEwQztnQ0FHVixJQUFJLE9BQU8sRUFBRTs2QkFFaEIsRUFBRTtLQUc1RDs7Ozs7SUFFRCxXQUFXLENBQUMsUUFBaUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztLQUMvQzs7OztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztLQUN2Qjs7OztJQUVELGdCQUFnQjtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7S0FDN0M7Ozs7OztJQUVELGVBQWUsQ0FBQyxZQUFnRCxFQUFFLE1BQTZCO1FBQzdGLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNOLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN2QyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtLQUNGOzs7OztJQUVELGtCQUFrQixDQUFDLFlBQWdEO1FBQ2pFLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRXhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQzthQUNqRCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNsQztTQUNGLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FFVDs7OztJQUVELGNBQWM7O1FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBOztRQUVoRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7O1FBQ2pCLElBQUksV0FBVyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3hDLFdBQVcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7O1lBQy9ELElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMzRCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNSLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQ3JEO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7YUFDeEQ7WUFDRCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQTtLQUNIOzs7WUF6RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLGtFQUF3RDthQUN6RDs7OztZQVBtQixnQkFBZ0I7OztvQkFVakMsV0FBVyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFzaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uL25vdGlmaWNhdGlvbi9hc2ktbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzaU5vdGlmaWNhdGlvblBvc2l0aW9uLCBBc2lOb3RpZmljYXRpb25Db25maWcgfSBmcm9tICcuLi9hc2ktbm90aWZpY2F0aW9uLWNvbmZpZyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50UmVmLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0ICogYXMgbmggZnJvbSAnLi4vLi4vLi4vbmF0aXZlLWhlbHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FzaS1ub3RpZmljYXRpb24tY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS1ub3RpZmljYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNpTm90aWZpY2F0aW9uQ29udGFpbmVyIHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2FzaS1jb21wb25lbnQgYXNpLW5vdGlmaWNhdGlvbi1jb250YWluZXInO1xyXG5cclxuICBwcml2YXRlIF9wb3NpdGlvbjogQXNpTm90aWZpY2F0aW9uUG9zaXRpb247XHJcbiAgcHJpdmF0ZSBzdWJqZWN0Q29udGFpbmVyOiBTdWJqZWN0PEFzaU5vdGlmaWNhdGlvbkNvbnRhaW5lcj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBub3RpZmljYXRpb25zOiBBcnJheTxDb21wb25lbnRSZWY8QXNpTm90aWZpY2F0aW9uPGFueT4+PiA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb24ocG9zaXRpb246IEFzaU5vdGlmaWNhdGlvblBvc2l0aW9uKSB7XHJcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgdGhpcy5jbGFzcyArPSBgICR7dGhpcy5fcG9zaXRpb24udG9TdHJpbmcoKX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBvbkNvbnRhaW5lckVtcHR5KCk6IE9ic2VydmFibGU8QXNpTm90aWZpY2F0aW9uQ29udGFpbmVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0Q29udGFpbmVyLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkTm90aWZpY2F0aW9uKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEFzaU5vdGlmaWNhdGlvbjxhbnk+PiwgY29uZmlnOiBBc2lOb3RpZmljYXRpb25Db25maWcpIHtcclxuICAgIHRoaXMubm90aWZpY2F0aW9ucy51bnNoaWZ0KGNvbXBvbmVudFJlZik7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgfSwgNSk7XHJcbiAgICBpZiAoY29uZmlnLmRlbGF5SW5NcyAhPSBudWxsICYmIGNvbmZpZy5kZWxheUluTXMgPiAwKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTm90aWZpY2F0aW9uKGNvbXBvbmVudFJlZik7XHJcbiAgICAgIH0sIGNvbmZpZy5kZWxheUluTXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm90aWZpY2F0aW9uKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEFzaU5vdGlmaWNhdGlvbjxhbnk+Pikge1xyXG4gICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICcwJztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbmgucmVtb3ZlKHRoaXMubm90aWZpY2F0aW9ucywgKG5vdGlmKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5vdGlmLmluc3RhbmNlID09PSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgIGNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zdWJqZWN0Q29udGFpbmVyLm5leHQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zdWJqZWN0Q29udGFpbmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDMwMCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlUG9zaXRpb24oKSB7XHJcbiAgICBsZXQgdG9wID0gdGhpcy5fcG9zaXRpb24udmFsdWUuc3RhcnRzV2l0aCgndG9wJylcclxuXHJcbiAgICBsZXQgcG9zaXRpb24gPSAwO1xyXG4gICAgbGV0IG5vdGlmSGVpZ2h0O1xyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uID0+IHtcclxuICAgICAgbm90aWZIZWlnaHQgPSBub3RpZmljYXRpb24ubG9jYXRpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIGxldCBwb3MgPSAocG9zaXRpb24gKiBub3RpZkhlaWdodCArICg1ICogcG9zaXRpb24pKSArICdweCc7XHJcbiAgICAgIGlmICh0b3ApIHtcclxuICAgICAgICBub3RpZmljYXRpb24ubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zdHlsZS50b3AgPSBwb3M7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm90aWZpY2F0aW9uLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYm90dG9tID0gcG9zO1xyXG4gICAgICB9XHJcbiAgICAgIHBvc2l0aW9uKys7XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=