127ce84d2Sbeccabroek/** 227ce84d2Sbeccabroek * data service 327ce84d2Sbeccabroek * 427ce84d2Sbeccabroek * @module app/common/services/toastService 527ce84d2Sbeccabroek * @exports toastService 627ce84d2Sbeccabroek * @name toastService 727ce84d2Sbeccabroek 827ce84d2Sbeccabroek */ 927ce84d2Sbeccabroek 1027ce84d2Sbeccabroekwindow.angular && (function(angular) { 1127ce84d2Sbeccabroek 'use strict'; 1227ce84d2Sbeccabroek 1327ce84d2Sbeccabroek angular.module('app.common.services').service('toastService', [ 1427ce84d2Sbeccabroek 'ngToast', '$sce', 1527ce84d2Sbeccabroek function(ngToast, $sce) { 165e930c0aSYoshie Muranaka function initToast( 175e930c0aSYoshie Muranaka type = 'create', title = '', message = '', dismissOnTimeout = false) { 18*339db9a4SPatrick Williams const iconStatus = type === 'success' ? 'on' : 19*339db9a4SPatrick Williams type === 'danger' ? 'error' : 20*339db9a4SPatrick Williams type === 'warning' ? 'warn' : 21*339db9a4SPatrick Williams null; 225e930c0aSYoshie Muranaka const content = $sce.trustAsHtml(` 235e930c0aSYoshie Muranaka <div role="alert" class="alert-content-container"> 245e930c0aSYoshie Muranaka <status-icon ng-if="${iconStatus !== null}" 255e930c0aSYoshie Muranaka status="${iconStatus}" 265e930c0aSYoshie Muranaka class="status-icon"> 275e930c0aSYoshie Muranaka </status-icon> 285e930c0aSYoshie Muranaka <div class="alert-content"> 295e930c0aSYoshie Muranaka <h2 class="alert-content__header">${title}</h2> 305e930c0aSYoshie Muranaka <p class="alert-content__body">${message}</p> 315e930c0aSYoshie Muranaka </div> 325e930c0aSYoshie Muranaka </div>`); 335e930c0aSYoshie Muranaka ngToast[type]({content, dismissOnTimeout, compileContent: true}); 3427ce84d2Sbeccabroek }; 355e930c0aSYoshie Muranaka 365e930c0aSYoshie Muranaka this.error = function(message) { 375e930c0aSYoshie Muranaka initToast('danger', 'Error', message); 385e930c0aSYoshie Muranaka }; 395e930c0aSYoshie Muranaka 4027ce84d2Sbeccabroek this.success = function(message) { 415e930c0aSYoshie Muranaka initToast('success', 'Success!', message, true); 425e930c0aSYoshie Muranaka }; 435e930c0aSYoshie Muranaka 445e930c0aSYoshie Muranaka this.warn = function(message) { 455e930c0aSYoshie Muranaka initToast('warning', 'Warning', message); 465e930c0aSYoshie Muranaka }; 475e930c0aSYoshie Muranaka 485e930c0aSYoshie Muranaka this.info = function(title, message) { 495e930c0aSYoshie Muranaka initToast('info', title, message); 5027ce84d2Sbeccabroek }; 5127ce84d2Sbeccabroek } 5227ce84d2Sbeccabroek ]); 5327ce84d2Sbeccabroek})(window.angular); 54