1
1
/***************************************************************************************************
2
2
LoadingOverlay - A flexible loading overlay jQuery plugin
3
3
Author : Gaspare Sganga
4
- Version : 2.1.0
4
+ Version : 2.1.1
5
5
License : MIT
6
6
Documentation : https://gasparesganga.com/labs/jquery-loading-overlay/
7
7
***************************************************************************************************/
@@ -118,7 +118,7 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
118
118
// Data Template
119
119
var _dataTemplate = {
120
120
"count" : 0 ,
121
- "overlay" : undefined ,
121
+ "container" : undefined ,
122
122
"settings" : undefined ,
123
123
"wholePage" : undefined ,
124
124
"resizeIntervalId" : undefined ,
@@ -217,34 +217,34 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
217
217
settings . minSize = parseInt ( settings . minSize , 10 ) || 0 ;
218
218
settings . resizeInterval = parseInt ( settings . resizeInterval , 10 ) || 0 ;
219
219
220
- var data = container . data ( "loadingoverlay" ) ;
220
+ var overlay = container . data ( "loadingoverlay" ) ;
221
221
if ( typeof data === "undefined" ) {
222
222
// Init data
223
- data = $ . extend ( { } , _dataTemplate ) ;
223
+ var data = $ . extend ( { } , _dataTemplate ) ;
224
+ data . container = container ;
224
225
data . wholePage = container . is ( "body" ) ;
225
- container . data ( "loadingoverlay" , data ) ;
226
226
227
227
// Overlay
228
- data . overlay = $ ( "<div>" , {
228
+ overlay = $ ( "<div>" , {
229
229
"class" : "loadingoverlay"
230
230
} )
231
231
. css ( _css . overlay )
232
232
. css ( "flex-direction" , settings . direction . toLowerCase ( ) === "row" ? "row" : "column" ) ;
233
233
if ( settings . backgroundClass ) {
234
- data . overlay . addClass ( settings . backgroundClass ) ;
234
+ overlay . addClass ( settings . backgroundClass ) ;
235
235
} else {
236
- data . overlay . css ( "background" , settings . background ) ;
236
+ overlay . css ( "background" , settings . background ) ;
237
237
}
238
238
if ( data . wholePage ) {
239
- data . overlay . css ( {
239
+ overlay . css ( {
240
240
"position" : "fixed" ,
241
241
"top" : 0 ,
242
242
"left" : 0 ,
243
243
"width" : "100%" ,
244
244
"height" : "100%"
245
245
} ) ;
246
246
}
247
- if ( typeof settings . zIndex !== "undefined" ) data . overlay . css ( "z-index" , settings . zIndex ) ;
247
+ if ( typeof settings . zIndex !== "undefined" ) overlay . css ( "z-index" , settings . zIndex ) ;
248
248
249
249
// Image
250
250
if ( settings . image ) {
@@ -266,7 +266,7 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
266
266
"fill" : settings . imageColor
267
267
} ;
268
268
}
269
- var element = _CreateElement ( data . overlay , settings . imageOrder , settings . imageAutoResize , settings . imageResizeFactor , settings . imageAnimation ) ;
269
+ var element = _CreateElement ( overlay , settings . imageOrder , settings . imageAutoResize , settings . imageResizeFactor , settings . imageAnimation ) ;
270
270
if ( settings . image . slice ( 0 , 4 ) . toLowerCase ( ) === "<svg" && settings . image . slice ( - 6 ) . toLowerCase ( ) === "</svg>" ) {
271
271
// Inline SVG
272
272
element . append ( settings . image ) ;
@@ -292,7 +292,7 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
292
292
293
293
// Font Awesome
294
294
if ( settings . fontawesome ) {
295
- var element = _CreateElement ( data . overlay , settings . fontawesomeOrder , settings . fontawesomeAutoResize , settings . fontawesomeResizeFactor , settings . fontawesomeAnimation )
295
+ var element = _CreateElement ( overlay , settings . fontawesomeOrder , settings . fontawesomeAutoResize , settings . fontawesomeResizeFactor , settings . fontawesomeAnimation )
296
296
. addClass ( "loadingoverlay_fa" ) ;
297
297
$ ( "<div>" , {
298
298
"class" : settings . fontawesome
@@ -302,13 +302,13 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
302
302
303
303
// Custom
304
304
if ( settings . custom ) {
305
- var element = _CreateElement ( data . overlay , settings . customOrder , settings . customAutoResize , settings . customResizeFactor , settings . customAnimation )
305
+ var element = _CreateElement ( overlay , settings . customOrder , settings . customAutoResize , settings . customResizeFactor , settings . customAnimation )
306
306
. append ( settings . custom ) ;
307
307
}
308
308
309
309
// Text
310
310
if ( settings . text ) {
311
- data . text = _CreateElement ( data . overlay , settings . textOrder , settings . textAutoResize , settings . textResizeFactor , settings . textAnimation )
311
+ data . text = _CreateElement ( overlay , settings . textOrder , settings . textAutoResize , settings . textResizeFactor , settings . textAnimation )
312
312
. addClass ( "loadingoverlay_text" )
313
313
. text ( settings . text ) ;
314
314
if ( settings . textClass ) {
@@ -320,7 +320,7 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
320
320
321
321
// Progress
322
322
if ( settings . progress ) {
323
- var element = _CreateElement ( data . overlay , settings . progressOrder , settings . progressAutoResize , settings . progressResizeFactor , false )
323
+ var element = _CreateElement ( overlay , settings . progressOrder , settings . progressAutoResize , settings . progressResizeFactor , false )
324
324
. addClass ( "loadingoverlay_progress" ) ;
325
325
var wrapper = $ ( "<div>" )
326
326
. css ( _css . progress_wrapper )
@@ -372,11 +372,17 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
372
372
}
373
373
settings . fade = [ parseInt ( settings . fade [ 0 ] , 10 ) , parseInt ( settings . fade [ 1 ] , 10 ) ]
374
374
375
+
375
376
// Save settings
376
377
data . settings = settings ;
378
+ // Save data
379
+ overlay . data ( "loadingoverlay_data" , data ) ;
380
+ // Save reference to overlay
381
+ container . data ( "loadingoverlay" , overlay ) ;
382
+
377
383
378
384
// Resize
379
- data . overlay
385
+ overlay
380
386
. fadeTo ( 0 , 0.01 )
381
387
. appendTo ( "body" ) ;
382
388
_IntervalResize ( container , true ) ;
@@ -387,19 +393,21 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
387
393
}
388
394
389
395
// Show LoadingOverlay
390
- data . overlay . fadeTo ( settings . fade [ 0 ] , 1 ) ;
396
+ overlay . fadeTo ( settings . fade [ 0 ] , 1 ) ;
391
397
}
392
398
data . count ++ ;
393
399
}
394
400
395
401
function Hide ( container , force ) {
396
402
container = $ ( container ) ;
397
- var data = container . data ( "loadingoverlay" ) ;
398
- if ( typeof data === "undefined" ) return ;
403
+ var overlay = container . data ( "loadingoverlay" ) ;
404
+ var data = _GetData ( overlay ) ;
405
+ if ( data === false ) return ;
406
+
399
407
data . count -- ;
400
408
if ( force || data . count <= 0 ) {
401
409
if ( data . resizeIntervalId ) clearInterval ( data . resizeIntervalId ) ;
402
- data . overlay . fadeOut ( data . settings . fade [ 1 ] , function ( ) {
410
+ overlay . fadeOut ( data . settings . fade [ 1 ] , function ( ) {
403
411
$ ( this ) . remove ( ) ;
404
412
} ) ;
405
413
container . removeData ( "loadingoverlay" ) ;
@@ -412,8 +420,10 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
412
420
413
421
function Text ( container , value ) {
414
422
container = $ ( container ) ;
415
- var data = container . data ( "loadingoverlay" ) ;
416
- if ( typeof data === "undefined" || ! data . text ) return ;
423
+ var overlay = container . data ( "loadingoverlay" ) ;
424
+ var data = _GetData ( overlay ) ;
425
+ if ( data === false || ! data . text ) return ;
426
+
417
427
if ( value === false ) {
418
428
data . text . hide ( ) ;
419
429
} else {
@@ -425,8 +435,10 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
425
435
426
436
function Progress ( container , value ) {
427
437
container = $ ( container ) ;
428
- var data = container . data ( "loadingoverlay" ) ;
429
- if ( typeof data === "undefined" || ! data . progress ) return ;
438
+ var overlay = container . data ( "loadingoverlay" ) ;
439
+ var data = _GetData ( overlay ) ;
440
+ if ( data === false || ! data . progress ) return ;
441
+
430
442
if ( value === false ) {
431
443
data . progress . bar . hide ( ) ;
432
444
} else {
@@ -443,13 +455,15 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
443
455
444
456
445
457
function _IntervalResize ( container , force ) {
446
- var data = container . data ( "loadingoverlay" ) ;
458
+ var overlay = container . data ( "loadingoverlay" ) ;
459
+ var data = _GetData ( overlay ) ;
460
+ if ( data === false ) return ;
447
461
448
462
// Overlay
449
463
if ( ! data . wholePage ) {
450
464
var isFixed = container . css ( "position" ) === "fixed" ;
451
465
var pos = isFixed ? container [ 0 ] . getBoundingClientRect ( ) : container . offset ( ) ;
452
- data . overlay . css ( {
466
+ overlay . css ( {
453
467
"position" : isFixed ? "fixed" : "absolute" ,
454
468
"top" : pos . top + parseInt ( container . css ( "border-top-width" ) , 10 ) ,
455
469
"left" : pos . left + parseInt ( container . css ( "border-left-width" ) , 10 ) ,
@@ -467,22 +481,21 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
467
481
if ( data . settings . maxSize && size > data . settings . maxSize ) size = data . settings . maxSize ;
468
482
if ( data . settings . minSize && size < data . settings . minSize ) size = data . settings . minSize ;
469
483
}
470
- data . overlay . children ( ".loadingoverlay_element" ) . each ( function ( ) {
484
+ overlay . children ( ".loadingoverlay_element" ) . each ( function ( ) {
471
485
var $this = $ ( this ) ;
472
486
if ( force || $this . data ( "loadingoverlay_autoresize" ) ) {
473
487
var resizeFactor = $this . data ( "loadingoverlay_resizefactor" ) ;
474
488
if ( $this . hasClass ( "loadingoverlay_fa" ) || $this . hasClass ( "loadingoverlay_text" ) ) {
475
489
$this . css ( "font-size" , ( size * resizeFactor ) + data . settings . size . units ) ;
476
490
} else if ( $this . hasClass ( "loadingoverlay_progress" ) ) {
477
- var progress = container . data ( "loadingoverlay" ) . progress ;
478
- progress . bar . css ( "height" , ( size * resizeFactor ) + data . settings . size . units ) ;
479
- if ( ! progress . fixed ) {
480
- progress . bar
491
+ data . progress . bar . css ( "height" , ( size * resizeFactor ) + data . settings . size . units ) ;
492
+ if ( ! data . progress . fixed ) {
493
+ data . progress . bar
481
494
. css ( "top" , $this . position ( ) . top )
482
495
. css ( "top" , "-=" + ( size * resizeFactor * 0.5 ) + data . settings . size . units ) ;
483
- } else if ( progress . fixed === "bottom" ) {
496
+ } else if ( data . progress . fixed === "bottom" ) {
484
497
$this
485
- . css ( "bottom" , progress . margin ? progress . margin . value + ( progress . margin . fixed ? progress . margin . units : "%" ) : 0 )
498
+ . css ( "bottom" , data . progress . margin ? data . progress . margin . value + ( data . progress . margin . fixed ? data . progress . margin . units : "%" ) : 0 )
486
499
. css ( "bottom" , "+=" + ( size * resizeFactor ) + data . settings . size . units ) ;
487
500
}
488
501
} else {
@@ -497,6 +510,21 @@ LoadingOverlay - A flexible loading overlay jQuery plugin
497
510
}
498
511
499
512
513
+ function _GetData ( overlay ) {
514
+ var data = ( typeof overlay === "undefined" ) ? undefined : overlay . data ( "loadingoverlay_data" ) ;
515
+ if ( typeof data === "undefined" ) {
516
+ // Clean DOM
517
+ $ ( ".loadingoverlay" ) . each ( function ( ) {
518
+ var $this = $ ( this ) ;
519
+ if ( ! document . body . contains ( $this . data ( "loadingoverlay_data" ) . container [ 0 ] ) ) $this . remove ( ) ;
520
+ } ) ;
521
+ return false ;
522
+ } else {
523
+ return data ;
524
+ }
525
+ }
526
+
527
+
500
528
function _CreateElement ( overlay , order , autoResize , resizeFactor , animation ) {
501
529
var element = $ ( "<div>" , {
502
530
"class" : "loadingoverlay_element" ,
0 commit comments