锘?function (define) { define(["jquery"], function ($) { return (function () { var $container; var listener; var toastId = 0; var toastType = { error: "error", info: "info", success: "success", warning: "warning", }; var toastr = { clear: clear, remove: remove, error: error, getContainer: getContainer, info: info, options: {}, subscribe: subscribe, success: success, version: "2.0.3", warning: warning, }; return toastr; //#region Accessible Methods function error(message, title, optionsOverride) { return notify({ type: toastType.error, iconClass: getOptions().iconClasses.error, message: message, optionsOverride: optionsOverride, title: title, }); } function getContainer(options, create) { if (!options) { options = getOptions(); } $container = $("#" + options.containerId); if ($container.length) { return $container; } if (create) { $container = createContainer(options); } return $container; } function info(message, title, optionsOverride) { return notify({ type: toastType.info, iconClass: getOptions().iconClasses.info, message: message, optionsOverride: optionsOverride, title: title, }); } function subscribe(callback) { listener = callback; } function success(message, title, optionsOverride) { return notify({ type: toastType.success, iconClass: getOptions().iconClasses.success, message: message, optionsOverride: optionsOverride, title: title, }); } function warning(message, title, optionsOverride) { return notify({ type: toastType.warning, iconClass: getOptions().iconClasses.warning, message: message, optionsOverride: optionsOverride, title: title, }); } function clear($toastElement) { var options = getOptions(); if (!$container) { getContainer(options); } if (!clearToast($toastElement, options)) { clearContainer(options); } } function remove($toastElement) { var options = getOptions(); if (!$container) { getContainer(options); } if ($toastElement && $(":focus", $toastElement).length === 0) { removeToast($toastElement); return; } if ($container.children().length) { $container.remove(); } } //#endregion //#region Internal Methods function clearContainer(options) { var toastsToClear = $container.children(); for (var i = toastsToClear.length - 1; i >= 0; i--) { clearToast($(toastsToClear[i]), options); } } function clearToast($toastElement, options) { if ($toastElement && $(":focus", $toastElement).length === 0) { $toastElement[options.hideMethod]({ duration: options.hideDuration, easing: options.hideEasing, complete: function () { removeToast($toastElement); }, }); return true; } return false; } function createContainer(options) { $container = $("
") .attr("id", options.containerId) .addClass(options.positionClass) .attr("aria-live", "polite") .attr("role", "alert"); $container.appendTo($(options.target)); return $container; } function getDefaults() { return { tapToDismiss: true, toastClass: "toast", containerId: "toast-container", debug: false, showMethod: "fadeIn", //fadeIn, slideDown, and show are built into jQuery showDuration: 300, showEasing: "swing", //swing and linear are built into jQuery onShown: undefined, hideMethod: "fadeOut", hideDuration: 2000, hideEasing: "swing", onHidden: undefined, extendedTimeOut: 1000, iconClasses: { error: "toast-error", info: "toast-info", success: "toast-success", warning: "toast-warning", }, iconClass: "toast-info", positionClass: "toast-top-middle", timeOut: 1000, // Set timeOut and extendedTimeout to 0 to make it sticky titleClass: "toast-title", messageClass: "toast-message", target: "body", closeHtml: "", newestOnTop: true, }; } 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, true); var intervalId = null, $toastElement = $("
"), $titleElement = $("
"), $messageElement = $("
"), $closeElement = $(options.closeHtml), 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); } if (options.closeButton) { $closeElement.addClass("toast-close-button").attr("role", "button"); $toastElement.prepend($closeElement); } $toastElement.hide(); if (options.newestOnTop) { $container.prepend($toastElement); } else { $container.append($toastElement); } $toastElement[options.showMethod]({ duration: options.showDuration, easing: options.showEasing, complete: options.onShown, }); if (options.timeOut > 0) { intervalId = setTimeout(hideToast, options.timeOut); } $toastElement.hover(stickAround, delayedHideToast); if (!options.onclick && options.tapToDismiss) { $toastElement.click(hideToast); } if (options.closeButton && $closeElement) { $closeElement.click(function (event) { if (event.stopPropagation) { event.stopPropagation(); } else if ( event.cancelBubble !== undefined && event.cancelBubble !== true ) { event.cancelBubble = true; } hideToast(true); }); } if (options.onclick) { $toastElement.click(function () { options.onclick(); hideToast(); }); } publish(response); if (options.debug && console) { console.log(response); } return $toastElement; function hideToast(override) { if ($(":focus", $toastElement).length && !override) { return; } return $toastElement[options.hideMethod]({ duration: options.hideDuration, easing: options.hideEasing, complete: function () { removeToast($toastElement); if (options.onHidden && response.state !== "hidden") { options.onHidden(); } response.state = "hidden"; response.endTime = new Date(); publish(response); }, }); } function delayedHideToast() { if (options.timeOut > 0 || options.extendedTimeOut > 0) { intervalId = setTimeout(hideToast, options.extendedTimeOut); } } function stickAround() { clearTimeout(intervalId); $toastElement .stop(true, true) [options.showMethod]({ duration: options.showDuration, easing: options.showEasing, }); } } function getOptions() { return $.extend({}, getDefaults(), 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"]); } } );