All files / src/flash-messages flash-messages.component.ts

100% Statements 17/17
66.67% Branches 2/3
100% Functions 6/6
100% Lines 14/14
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 411x 1x                   1x 13x   13x     12x 1x         4x       4x 4x   4x   4x   4x 1x          
import { Component, OnInit } from '@angular/core';
import {
  FlashMessagesService,
  IFlashMessage,
  IFlashMessageOptions,
} from './flash-messages.service';
 
@Component({
  selector: 'ngx-flash-messages',
  templateUrl: './flash-messages.component.html',
})
export class FlashMessagesComponent implements OnInit {
  public messages: IFlashMessage[] = [];
 
  constructor(private flashMessagesService: FlashMessagesService) { }
 
  ngOnInit() {
    this.flashMessagesService.message.subscribe( message => {
      this.handleMessage(message);
    });
  }
 
  handleMessage(message: IFlashMessage) {
    const defaultOpts: IFlashMessageOptions = {
      classes: [],
      timeout: 3000
    };
    Object.assign(defaultOpts, message.options);
    message.options = defaultOpts;
 
    const timestamp = message.timestamp = + new Date();
 
    this.messages.push(message);
 
    setTimeout(() => {
      this.messages = this.messages.filter( msg => msg.timestamp !== timestamp );
    }, message.options.timeout);
  }
 
}