raspberryGPIOhtmlserver/node_modules/toastr-master/nuget/content/scripts/toastr.js
node_modules/toastr-master/nuget/content/scripts/toastr.jsRaw
1/*
2 * Toastr
3 * Copyright 2012-2014 John Papa and Hans Fjällemark.
4 * All Rights Reserved.
5 * Use, reproduction, distribution, and modification of this code is subject to the terms and
6 * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
7 *
8 * Author: John Papa and Hans Fjällemark
9 * ARIA Support: Greta Krafsig
10 * Project: https://github.com/CodeSeven/toastr
11 */
12; (function (define) {
13 define(['jquery'], function ($) {
14 return (function () {
15 var $container;
16 var listener;
17 var toastId = 0;
18 var toastType = {
19 error: 'error',
20 info: 'info',
21 success: 'success',
22 warning: 'warning'
23 };
24
25 var toastr = {
26 clear: clear,
27 remove: remove,
28 error: error,
29 getContainer: getContainer,
30 info: info,
31 options: {},
32 subscribe: subscribe,
33 success: success,
34 version: '2.0.3',
35 warning: warning
36 };
37
38 return toastr;
39
40 //#region Accessible Methods
41 function error(message, title, optionsOverride) {
42 return notify({
43 type: toastType.error,
44 iconClass: getOptions().iconClasses.error,
45 message: message,
46 optionsOverride: optionsOverride,
47 title: title
48 });
49 }
50
51 function getContainer(options, create) {
52 if (!options) { options = getOptions(); }
53 $container = $('#' + options.containerId);
54 if ($container.length) {
55 return $container;
56 }
57 if(create) {
58 $container = createContainer(options);
59 }
60 return $container;
61 }
62
63 function info(message, title, optionsOverride) {
64 return notify({
65 type: toastType.info,
66 iconClass: getOptions().iconClasses.info,
67 message: message,
68 optionsOverride: optionsOverride,
69 title: title
70 });
71 }
72
73 function subscribe(callback) {
74 listener = callback;
75 }
76
77 function success(message, title, optionsOverride) {
78 return notify({
79 type: toastType.success,
80 iconClass: getOptions().iconClasses.success,
81 message: message,
82 optionsOverride: optionsOverride,
83 title: title
84 });
85 }
86
87 function warning(message, title, optionsOverride) {
88 return notify({
89 type: toastType.warning,
90 iconClass: getOptions().iconClasses.warning,
91 message: message,
92 optionsOverride: optionsOverride,
93 title: title
94 });
95 }
96
97 function clear($toastElement) {
98 var options = getOptions();
99 if (!$container) { getContainer(options); }
100 if (!clearToast($toastElement, options)) {
101 clearContainer(options);
102 }
103 }
104
105 function remove($toastElement) {
106 var options = getOptions();
107 if (!$container) { getContainer(options); }
108 if ($toastElement && $(':focus', $toastElement).length === 0) {
109 removeToast($toastElement);
110 return;
111 }
112 if ($container.children().length) {
113 $container.remove();
114 }
115 }
116 //#endregion
117
118 //#region Internal Methods
119
120 function clearContainer(options){
121 var toastsToClear = $container.children();
122 for (var i = toastsToClear.length - 1; i >= 0; i--) {
123 clearToast($(toastsToClear[i]), options);
124 };
125 }
126
127 function clearToast($toastElement, options){
128 if ($toastElement && $(':focus', $toastElement).length === 0) {
129 $toastElement[options.hideMethod]({
130 duration: options.hideDuration,
131 easing: options.hideEasing,
132 complete: function () { removeToast($toastElement); }
133 });
134 return true;
135 }
136 return false;
137 }
138
139 function createContainer(options) {
140 $container = $('<div/>')
141 .attr('id', options.containerId)
142 .addClass(options.positionClass)
143 .attr('aria-live', 'polite')
144 .attr('role', 'alert');
145
146 $container.appendTo($(options.target));
147 return $container;
148 }
149
150 function getDefaults() {
151 return {
152 tapToDismiss: true,
153 toastClass: 'toast',
154 containerId: 'toast-container',
155 debug: false,
156
157 showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
158 showDuration: 300,
159 showEasing: 'swing', //swing and linear are built into jQuery
160 onShown: undefined,
161 hideMethod: 'fadeOut',
162 hideDuration: 1000,
163 hideEasing: 'swing',
164 onHidden: undefined,
165
166 extendedTimeOut: 1000,
167 iconClasses: {
168 error: 'toast-error',
169 info: 'toast-info',
170 success: 'toast-success',
171 warning: 'toast-warning'
172 },
173 iconClass: 'toast-info',
174 positionClass: 'toast-top-right',
175 timeOut: 5000, // Set timeOut and extendedTimeout to 0 to make it sticky
176 titleClass: 'toast-title',
177 messageClass: 'toast-message',
178 target: 'body',
179 closeHtml: '<button>×</button>',
180 newestOnTop: true
181 };
182 }
183
184 function publish(args) {
185 if (!listener) { return; }
186 listener(args);
187 }
188
189 function notify(map) {
190 var options = getOptions(),
191 iconClass = map.iconClass || options.iconClass;
192
193 if (typeof (map.optionsOverride) !== 'undefined') {
194 options = $.extend(options, map.optionsOverride);
195 iconClass = map.optionsOverride.iconClass || iconClass;
196 }
197
198 toastId++;
199
200 $container = getContainer(options, true);
201 var intervalId = null,
202 $toastElement = $('<div/>'),
203 $titleElement = $('<div/>'),
204 $messageElement = $('<div/>'),
205 $closeElement = $(options.closeHtml),
206 response = {
207 toastId: toastId,
208 state: 'visible',
209 startTime: new Date(),
210 options: options,
211 map: map
212 };
213
214 if (map.iconClass) {
215 $toastElement.addClass(options.toastClass).addClass(iconClass);
216 }
217
218 if (map.title) {
219 $titleElement.append(map.title).addClass(options.titleClass);
220 $toastElement.append($titleElement);
221 }
222
223 if (map.message) {
224 $messageElement.append(map.message).addClass(options.messageClass);
225 $toastElement.append($messageElement);
226 }
227
228 if (options.closeButton) {
229 $closeElement.addClass('toast-close-button').attr("role", "button");
230 $toastElement.prepend($closeElement);
231 }
232
233 $toastElement.hide();
234 if (options.newestOnTop) {
235 $container.prepend($toastElement);
236 } else {
237 $container.append($toastElement);
238 }
239
240
241 $toastElement[options.showMethod](
242 { duration: options.showDuration, easing: options.showEasing, complete: options.onShown }
243 );
244
245 if (options.timeOut > 0) {
246 intervalId = setTimeout(hideToast, options.timeOut);
247 }
248
249 $toastElement.hover(stickAround, delayedHideToast);
250 if (!options.onclick && options.tapToDismiss) {
251 $toastElement.click(hideToast);
252 }
253
254 if (options.closeButton && $closeElement) {
255 $closeElement.click(function (event) {
256 if( event.stopPropagation ) {
257 event.stopPropagation();
258 } else if( event.cancelBubble !== undefined && event.cancelBubble !== true ) {
259 event.cancelBubble = true;
260 }
261 hideToast(true);
262 });
263 }
264
265 if (options.onclick) {
266 $toastElement.click(function () {
267 options.onclick();
268 hideToast();
269 });
270 }
271
272 publish(response);
273
274 if (options.debug && console) {
275 console.log(response);
276 }
277
278 return $toastElement;
279
280 function hideToast(override) {
281 if ($(':focus', $toastElement).length && !override) {
282 return;
283 }
284 return $toastElement[options.hideMethod]({
285 duration: options.hideDuration,
286 easing: options.hideEasing,
287 complete: function () {
288 removeToast($toastElement);
289 if (options.onHidden && response.state !== 'hidden') {
290 options.onHidden();
291 }
292 response.state = 'hidden';
293 response.endTime = new Date();
294 publish(response);
295 }
296 });
297 }
298
299 function delayedHideToast() {
300 if (options.timeOut > 0 || options.extendedTimeOut > 0) {
301 intervalId = setTimeout(hideToast, options.extendedTimeOut);
302 }
303 }
304
305 function stickAround() {
306 clearTimeout(intervalId);
307 $toastElement.stop(true, true)[options.showMethod](
308 { duration: options.showDuration, easing: options.showEasing }
309 );
310 }
311 }
312
313 function getOptions() {
314 return $.extend({}, getDefaults(), toastr.options);
315 }
316
317 function removeToast($toastElement) {
318 if (!$container) { $container = getContainer(); }
319 if ($toastElement.is(':visible')) {
320 return;
321 }
322 $toastElement.remove();
323 $toastElement = null;
324 if ($container.children().length === 0) {
325 $container.remove();
326 }
327 }
328 //#endregion
329
330 })();
331 });
332}(typeof define === 'function' && define.amd ? define : function (deps, factory) {
333 if (typeof module !== 'undefined' && module.exports) { //Node
334 module.exports = factory(require('jquery'));
335 } else {
336 window['toastr'] = factory(window['jQuery']);
337 }
338}));