1/**
2 * data service
3 *
4 * @module app/common/services/toastService
5 * @exports toastService
6 * @name toastService
7
8 */
9
10window.angular && (function(angular) {
11  'use strict';
12
13  angular.module('app.common.services').service('toastService', [
14    'ngToast', '$sce',
15    function(ngToast, $sce) {
16      function initToast(
17          type = 'create', title = '', message = '', dismissOnTimeout = false) {
18        const iconStatus = type === 'success' ?
19            'on' :
20            type === 'danger' ? 'error' : type === 'warning' ? 'warn' : null;
21        const content = $sce.trustAsHtml(`
22          <div role="alert" class="alert-content-container">
23            <status-icon ng-if="${iconStatus !== null}"
24                         status="${iconStatus}"
25                         class="status-icon">
26            </status-icon>
27            <div class="alert-content">
28              <h2 class="alert-content__header">${title}</h2>
29              <p class="alert-content__body">${message}</p>
30            </div>
31          </div>`);
32        ngToast[type]({content, dismissOnTimeout, compileContent: true});
33      };
34
35      this.error = function(message) {
36        initToast('danger', 'Error', message);
37      };
38
39      this.success = function(message) {
40        initToast('success', 'Success!', message, true);
41      };
42
43      this.warn = function(message) {
44        initToast('warning', 'Warning', message);
45      };
46
47      this.info = function(title, message) {
48        initToast('info', title, message);
49      };
50    }
51  ]);
52})(window.angular);
53