/* * Copyright 2012 John Papa and Hans Fjällemark. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * Author: John Papa and Hans Fjällemark * Project: https://github.com/CodeSeven/toastr */ ; (function (define) { define(['jquery'], function ($) { return (function () { var version = '1.3.1', $container, toastType = { error: 'error', info: 'info', success: 'success', warning: 'warning' }, listener, toastId = 0, defaults = { tapToDismiss: true, toastClass: 'toast', containerId: 'toast-container', debug: false, fadeIn: 300, onFadeIn: undefined, fadeOut: 1000, onFadeOut: undefined, extendedTimeOut: 1000, iconClasses: { error: 'toast-error', info: 'toast-info', success: 'toast-success', warning: 'toast-warning' }, iconClass: 'toast-info', positionClass: 'toast-top-right', timeOut: 5000, // Set timeOut and extendedTimeout to 0 to make it sticky titleClass: 'toast-title', messageClass: 'toast-message', target: 'body', newestOnTop: true }, error = function (message, title, optionsOverride) { return notify({ type: toastType.error, iconClass: getOptions().iconClasses.error, message: message, optionsOverride: optionsOverride, title: title }); }, info = function (message, title, optionsOverride) { return notify({ type: toastType.info, iconClass: getOptions().iconClasses.info, message: message, optionsOverride: optionsOverride, title: title }); }, subscribe = function (callback) { listener = callback; }, success = function (message, title, optionsOverride) { return notify({ type: toastType.success, iconClass: getOptions().iconClasses.success, message: message, optionsOverride: optionsOverride, title: title }); }, warning = function (message, title, optionsOverride) { return notify({ type: toastType.warning, iconClass: getOptions().iconClasses.warning, message: message, optionsOverride: optionsOverride, title: title }); }, clear = function ($toastElement) { var options = getOptions(); if (!$container) { getContainer(options); } if ($toastElement && $(':focus', $toastElement).length === 0) { $toastElement.fadeOut(options.fadeOut, function () { removeToast($toastElement); }); return; } if ($container.children().length) { $container.fadeOut(options.fadeOut, function () { $container.remove(); }); } }; var toastr = { clear: clear, error: error, getContainer: getContainer, info: info, options: {}, subscribe: subscribe, success: success, version: version, warning: warning }; return toastr; //#region Internal Methods function publish(args) { if (!listener) { return; } listener(args); } function notify(map) { var options = getOptions(), iconClass = map.iconClass || options.iconClass; if (typeof (map.optionsOverride) !== 'undefined') { options = $.extend(options, map.optionsOverride); iconClass = map.optionsOverride.iconClass || iconClass; } toastId++; $container = getContainer(options); var intervalId = null, $toastElement = $('
'), $titleElement = $(''), $messageElement = $(''), response = { toastId: toastId, state: 'visible', startTime: new Date(), options: options, map: map }; if (map.iconClass) { $toastElement.addClass(options.toastClass).addClass(iconClass); } if (map.title) { $titleElement.append(map.title).addClass(options.titleClass); $toastElement.append($titleElement); } if (map.message) { $messageElement.append(map.message).addClass(options.messageClass); $toastElement.append($messageElement); } $toastElement.hide(); if (options.newestOnTop) { $container.prepend($toastElement); } else { $container.append($toastElement); } $toastElement.fadeIn(options.fadeIn, options.onFadeIn); if (options.timeOut > 0) { intervalId = setTimeout(fadeAway, options.timeOut); } $toastElement.hover(stickAround, delayedFadeAway); if (!options.onclick && options.tapToDismiss) { $toastElement.click(fadeAway); } if (options.onclick) { $toastElement.click(function () { options.onclick() && fadeAway(); }); } publish(response); if (options.debug && console) { console.log(response); } return $toastElement; function fadeAway() { if ($(':focus', $toastElement).length > 0) { return; } return $toastElement.fadeOut(options.fadeOut, function () { removeToast($toastElement); if (options.onFadeOut) { options.onFadeOut(); } response.state = 'hidden'; response.endTime = new Date(), publish(response); }); } function delayedFadeAway() { if (options.timeOut > 0 || options.extendedTimeOut > 0) { intervalId = setTimeout(fadeAway, options.extendedTimeOut); } } function stickAround() { clearTimeout(intervalId); $toastElement.stop(true, true).fadeIn(options.fadeIn); } } function getContainer(options) { if (!options) { options = getOptions(); } $container = $('#' + options.containerId); if ($container.length) { return $container; } $container = $('') .attr('id', options.containerId) .addClass(options.positionClass); $container.appendTo($(options.target)); return $container; } function getOptions() { return $.extend({}, defaults, toastr.options); } function removeToast($toastElement) { if (!$container) { $container = getContainer(); } if ($toastElement.is(':visible')) { return; } $toastElement.remove(); $toastElement = null; if ($container.children().length === 0) { $container.remove(); } } //#endregion })(); }); }(typeof define === 'function' && define.amd ? define : function (deps, factory) { if (typeof module !== 'undefined' && module.exports) { //Node module.exports = factory(require('jquery')); } else { window['toastr'] = factory(window['jQuery']); } }));