aboutsummaryrefslogtreecommitdiffstats
path: root/src/angular/notifications/notification/notification.component.ts
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);
        }
    }

}