blob: 8b894676c6d1a82a80f42ea384cf49c0906d5f2b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
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;
public 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);
}
}
public fadeOut = (): void => {
this.fade = true;
}
public destroyMe() {
/*Only destroy on fade out, not on entry animation */
if (this.fade) {
this.destroyComponent.emit(this.notificationSetting);
}
}
}
|