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

}