blob: 476853cf3dfc5627e6fc8498560a52deec0be322 [file] [log] [blame]
import { Component, Input, Output, EventEmitter, OnInit, ViewContainerRef, ViewChild } from "@angular/core";
import { NotificationSettings } from "../utilities/notification.config";
import { CreateDynamicComponentService } from "../../utils/create-dynamic-component.service";
import template from "./notification.component.html";
@Component({
selector: 'sdc-notification',
template: template
})
export class NotificationComponent implements OnInit {
@Input() notificationSetting:NotificationSettings;
@Output() destroyComponent = new EventEmitter<any>();
@ViewChild("dynamicContentContainer", {read: ViewContainerRef}) contentContainer:ViewContainerRef;
private fade: boolean = false;
constructor(private createDynamicComponentService: CreateDynamicComponentService) {
}
public ngOnInit() {
if(this.notificationSetting.hasCustomContent){
this.createDynamicComponentService.insertComponentDynamically(this.notificationSetting.innerComponentType, this.notificationSetting.innerComponentOptions, this.contentContainer);
}
if(!this.notificationSetting.sticky){
setTimeout(() => this.fadeOut(), this.notificationSetting.duration);
}
}
private fadeOut = ():void => {
this.fade = true;
}
private destroyMe() {
/*Only destroy on fade out, not on entry animation */
if(this.fade){
this.destroyComponent.emit(this.notificationSetting);
}
}
}