izimodal 1.2.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02ea3bc1c9e43547fcdcd2c7a4fca8aa4cd396b9
4
- data.tar.gz: 61b8b2e4c02d0a79f34204ffc8121d74750c0329
3
+ metadata.gz: faff0444533a06c88d606685821ef554f5cd4ba0
4
+ data.tar.gz: 900dfa5d9192d9c87f25c3948720cb146f633ded
5
5
  SHA512:
6
- metadata.gz: 76ed500d4c24fd93af64c2d6b58ab0dc9455446f5f912e497a4c631ba8ab250c9a5cc88453471ee1747469163357c690644c70da8d74420d38daea2cd7a7e73f
7
- data.tar.gz: e86241b8221e7efb1aca4c27e2f470758793e3e399600194c73abb1d023e8fd176e72cbf7e5c57d271069a1a108574195d79b7a7227e37ee394b4838845b610e
6
+ metadata.gz: 9f2fc417ff60a8e97974486d91f4b54b8d711297ceb46d7055094b47c6b120a0ac652a894bf9762ebb95fb30f78f12da8ccd70e594a93fd336fa47269fea14ca
7
+ data.tar.gz: 8fb9d8f91e7117d1754cbfa2e93af3099b087ef3487dd065d8c3d7eb48fb56fe865332ea4ccb27949de90a09b401e23db66f953ce3a7005cad92353e8d86fdbd
@@ -1,3 +1,3 @@
1
1
  module Izimodal
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.2"
3
3
  end
@@ -1,5 +1,5 @@
1
1
  /*
2
- * iziModal | v1.2.0
2
+ * iziModal | v1.3.2
3
3
  * http://izimodal.marcelodolce.com
4
4
  * by Marcelo Dolce.
5
5
  */
@@ -7,6 +7,9 @@
7
7
 
8
8
  "use strict";
9
9
 
10
+ var $window = $(window);
11
+ var $document = $(document);
12
+
10
13
  var PLUGIN_NAME = 'iziModal';
11
14
 
12
15
  var STATES = {
@@ -34,11 +37,8 @@
34
37
  }
35
38
  }
36
39
  var animationEvent = whichAnimationEvent();
37
-
38
- var isMobile = false;
39
- if (/Mobi/.test(navigator.userAgent)) {
40
- isMobile = true;
41
- }
40
+ var isMobile = (/Mobi/.test(navigator.userAgent)) ? true : false;
41
+ var autoOpenModal = 0;
42
42
 
43
43
  var iziModal = function (element, options) {
44
44
  this.init(element, options);
@@ -54,44 +54,65 @@
54
54
 
55
55
  this.$element = $(element);
56
56
  this.id = this.$element.attr('id');
57
+ this.content = this.$element.html();
57
58
  this.state = STATES.CLOSED;
58
59
  this.options = options;
60
+ this.width = 0;
59
61
  this.timer = null;
60
62
  this.timerTimeout = null;
63
+ this.progressBar = null;
64
+ this.isPaused = false;
61
65
  this.isFullscreen = false;
62
66
  this.headerHeight = 0;
63
- this.$header = $('<div class="'+PLUGIN_NAME+'-header"><h2 class="'+PLUGIN_NAME+'-header-title">' + options.title + '</h2><p class="'+PLUGIN_NAME+'-header-subtitle">' + options.subtitle + '</p><a href="javascript:void(0)" class="'+PLUGIN_NAME+'-button '+PLUGIN_NAME+'-button-close" data-'+PLUGIN_NAME+'-close></a></div>');
67
+ this.modalHeight = 0;
64
68
  this.$overlay = $('<div class="'+PLUGIN_NAME+'-overlay" style="background-color:'+options.overlayColor+'"></div>');
69
+ this.$navigate = $('<div class="'+PLUGIN_NAME+'-navigate"><div class="'+PLUGIN_NAME+'-navigate-caption">Use</div><button class="'+PLUGIN_NAME+'-navigate-prev"></button><button class="'+PLUGIN_NAME+'-navigate-next"></button></div>');
70
+ this.group = {
71
+ name: this.$element.attr('data-'+PLUGIN_NAME+'-group'),
72
+ index: null,
73
+ ids: []
74
+ };
75
+ if(this.group.name === undefined && options.group !== ""){
76
+ this.group.name = options.group;
77
+ this.$element.attr('data-'+PLUGIN_NAME+'-group', options.group);
78
+ }
79
+ if(this.$element.attr('data-'+PLUGIN_NAME+'-title') !== undefined){
80
+ options.title = this.$element.attr('data-'+PLUGIN_NAME+'-title');
81
+ }
82
+ if(this.$element.attr('data-'+PLUGIN_NAME+'-subtitle') !== undefined){
83
+ options.subtitle = this.$element.attr('data-'+PLUGIN_NAME+'-subtitle');
84
+ }
85
+ if(this.$element.attr('data-'+PLUGIN_NAME+'-icon') !== undefined){
86
+ options.icon = this.$element.attr('data-'+PLUGIN_NAME+'-icon');
87
+ }
88
+ if(this.options.loop === true){
89
+ this.$element.attr('data-'+PLUGIN_NAME+'-loop', true);
90
+ }
65
91
 
92
+ this.$header = $('<div class="'+PLUGIN_NAME+'-header"><h2 class="'+PLUGIN_NAME+'-header-title">' + options.title + '</h2><p class="'+PLUGIN_NAME+'-header-subtitle">' + options.subtitle + '</p><a href="javascript:void(0)" class="'+PLUGIN_NAME+'-button '+PLUGIN_NAME+'-button-close" data-'+PLUGIN_NAME+'-close></a></div>');
93
+
66
94
  if (options.fullscreen === true) {
67
95
  this.$header.append('<a href="javascript:void(0)" class="'+PLUGIN_NAME+'-button '+PLUGIN_NAME+'-button-fullscreen" data-'+PLUGIN_NAME+'-fullscreen></a>');
68
96
  this.$header.css('padding-right', '76px');
69
97
  }
70
98
 
71
- if (options.timeoutProgressbar === true && !isNaN(options.timeout) && options.timeout !== false && options.timeout !== 0) {
99
+ if (options.timeoutProgressbar === true && !isNaN(parseInt(options.timeout)) && options.timeout !== false && options.timeout !== 0) {
72
100
  this.$header.prepend('<div class="'+PLUGIN_NAME+'-progressbar"><div style="background-color:'+options.timeoutProgressbarColor+'"></div></div>');
73
101
  }
74
102
 
75
- if (options.subtitle === '') {
76
- this.$header.addClass(PLUGIN_NAME+'-noSubtitle');
77
- }
78
-
79
103
  if (options.iframe === true) {
80
- this.$element.html('<div class="'+PLUGIN_NAME+'-wrap"><div class="'+PLUGIN_NAME+'-content '+PLUGIN_NAME+'-content-loader"><iframe class="'+PLUGIN_NAME+'-iframe"></iframe>' + this.$element.html() + "</div></div>");
104
+ this.$element.html('<div class="'+PLUGIN_NAME+'-wrap"><div class="'+PLUGIN_NAME+'-content"><iframe class="'+PLUGIN_NAME+'-iframe"></iframe>' + this.content + "</div></div>");
81
105
 
82
106
  if (options.iframeHeight !== null) {
83
107
  this.$element.find('.'+PLUGIN_NAME+'-iframe').css('height', options.iframeHeight);
84
108
  }
85
-
86
109
  } else {
87
- this.$element.html('<div class="'+PLUGIN_NAME+'-wrap"><div class="'+PLUGIN_NAME+'-content">' + this.$element.html() + '</div></div>');
110
+ this.$element.html('<div class="'+PLUGIN_NAME+'-wrap"><div class="'+PLUGIN_NAME+'-content">' + this.content + '</div></div>');
88
111
  }
89
-
90
- $(document.body).find('style[rel='+this.id+']').remove();
91
-
92
- if(typeof options.padding !== 'undefined' || options.padding !== 0)
93
- this.$element.find('.'+PLUGIN_NAME+'-content').css('padding', options.padding);
94
112
 
113
+ if (options.subtitle === '') {
114
+ this.$header.addClass(PLUGIN_NAME+'-noSubtitle');
115
+ }
95
116
 
96
117
  if (options.title !== "" || options.subtitle !== "") {
97
118
 
@@ -99,66 +120,105 @@
99
120
  this.$element.css('border-bottom', '3px solid ' + options.headerColor + '');
100
121
  this.$header.css('background', this.options.headerColor);
101
122
  }
102
- if (options.iconClass !== null) {
103
- this.$header.prepend('<i class="'+PLUGIN_NAME+'-header-icon ' + options.iconClass + '"></i>');
104
- this.$header.find("."+PLUGIN_NAME+'-header-icon').css('color', options.iconColor);
123
+ if (options.icon !== null) {
124
+ this.$header.prepend('<i class="'+PLUGIN_NAME+'-header-icon ' + options.icon + '"></i>');
125
+ this.$header.find('.'+PLUGIN_NAME+'-header-icon').css('color', options.iconColor);
105
126
  }
106
- this.$element.prepend(this.$header);
127
+ this.$element.css('overflow', 'hidden').prepend(this.$header);
107
128
  }
108
129
 
109
- var separators = /%|px|em|cm/,
110
- wClear = String(options.width).split(separators),
111
- w = String(options.width),
112
- medida = "px";
113
- wClear = String(wClear).split(",")[0];
114
-
115
- if(isNaN(options.width)){
116
- if( String(options.width).indexOf("%") != -1){
117
- medida = "%";
118
- } else {
119
- medida = w.slice("-2");
120
- }
130
+ if(options.zindex !== null && !isNaN(parseInt(options.zindex)) ){
131
+ this.$element.css('z-index', options.zindex);
132
+ this.$navigate.css('z-index', options.zindex-1);
133
+ this.$overlay.css('z-index', options.zindex-2);
121
134
  }
122
135
 
123
- this.$element.css({
124
- 'margin-left': -(wClear / 2) + medida,
125
- 'max-width': parseInt(wClear) + medida
126
- });
136
+ if(options.radius !== ""){
137
+ this.$element.css('border-radius', options.radius);
138
+ }
139
+
140
+ if(options.padding !== ""){
141
+ this.$element.find('.'+PLUGIN_NAME+'-content').css('padding', options.padding);
142
+ }
127
143
 
128
- this.mediaQueries = '<style rel="' + this.id + '">@media handheld, only screen and (max-width: ' + wClear + 'px) { #' + this.$element[0].id + '{ width: 100% !important; max-width: 100% !important; margin-left: 0 !important; left: 0 !important; } }</style>';
129
- $(document.body).append(this.mediaQueries);
144
+ if(options.theme !== ""){
145
+ this.$element.addClass(options.theme);
146
+ }
130
147
 
131
- this.$element.addClass(PLUGIN_NAME + " " + options.theme);
148
+ this.$element.addClass(PLUGIN_NAME);
132
149
 
133
150
  if(options.openFullscreen === true){
134
- that.isFullscreen = true;
135
- that.$element.addClass('isFullscreen');
151
+ this.isFullscreen = true;
152
+ this.$element.addClass('isFullscreen');
136
153
  }
137
154
 
138
- // Adjusting vertical positioning
139
- this.$element.css('margin-top', parseInt(-(this.$element.innerHeight() / 2)) + 'px');
155
+ if(options.attached === 'top' || this.$element.attr('data-'+PLUGIN_NAME+'-attached') == 'top' ){
156
+ this.$element.addClass('isAttachedTop');
157
+ }
140
158
 
141
- if(this.$element.find('.'+PLUGIN_NAME+'-header').length){
142
- this.$element.css('overflow', 'hidden');
143
- }
159
+ if(options.attached === 'bottom' || this.$element.attr('data-'+PLUGIN_NAME+'-attached') == 'bottom'){
160
+ this.$element.addClass('isAttachedBottom');
161
+ }
144
162
 
145
- // Close when button pressed
146
- this.$element.on('click', '[data-'+PLUGIN_NAME+'-close]', function (e) {
147
- e.preventDefault();
148
- that.close();
149
- });
163
+ (function setPositioning(){
150
164
 
151
- // Expand when button pressed
152
- this.$element.on('click', '[data-'+PLUGIN_NAME+'-fullscreen]', function (e) {
153
- e.preventDefault();
154
- if(that.isFullscreen === true){
155
- that.isFullscreen = false;
156
- that.$element.removeClass('isFullscreen');
157
- } else {
158
- that.isFullscreen = true;
159
- that.$element.addClass('isFullscreen');
160
- }
161
- });
165
+ $(document.body).find('style[rel='+that.id+']').remove();
166
+
167
+ var separators = /%|px|em|cm/,
168
+ wClear = String(options.width).split(separators),
169
+ w = String(options.width),
170
+ medida = "px";
171
+ wClear = String(wClear).split(",")[0];
172
+
173
+
174
+ if(isNaN(options.width)){
175
+
176
+ if( String(options.width).indexOf("%") != -1){
177
+ medida = "%";
178
+ } else {
179
+ medida = w.slice("-2");
180
+ }
181
+ }
182
+ that.$element.css({
183
+ 'margin-left': -(wClear / 2) + medida,
184
+ 'max-width': parseInt(wClear) + medida
185
+ });
186
+
187
+ that.width = that.$element.outerWidth();
188
+
189
+ that.mediaQueries = '<style rel="' + that.id + '">@media handheld, only screen and (max-width: ' + that.width + 'px) { #' + that.id + '{ width: 100% !important; max-width: 100% !important; margin-left: 0 !important; left: 0 !important; border-radius:0!important} #' + that.id + ' .'+PLUGIN_NAME+'-header{border-radius:0!important} }</style>';
190
+
191
+ $(document.body).append(that.mediaQueries);
192
+
193
+ // Adjusting vertical positioning
194
+ that.$element.css('margin-top', parseInt(-(that.$element.innerHeight() / 2)) + 'px');
195
+ })();
196
+ },
197
+
198
+ setGroup: function(groupName){
199
+
200
+ var that = this,
201
+ group = this.group.name || groupName;
202
+ this.group.ids = [];
203
+
204
+ if( groupName !== undefined && groupName !== this.group.name){
205
+ group = groupName;
206
+ this.group.name = group;
207
+ this.$element.attr('data-'+PLUGIN_NAME+'-group', group);
208
+ }
209
+ if(group !== undefined && group !== ""){
210
+
211
+ var count = 0;
212
+ $.each( $('.'+PLUGIN_NAME+'[data-'+PLUGIN_NAME+'-group='+group+']') , function(index, val) {
213
+
214
+ that.group.ids.push($(this).attr('id'));
215
+
216
+ if(that.id == $(this).attr('id')){
217
+ that.group.index = count;
218
+ }
219
+ count++;
220
+ });
221
+ }
162
222
  },
163
223
 
164
224
  toggle: function () {
@@ -176,154 +236,270 @@
176
236
 
177
237
  var that = this;
178
238
 
179
- if (param && typeof(param) === "function") {
180
- param(that);
181
- }
239
+ function opened(){
240
+
241
+ // console.info('[ '+PLUGIN_NAME+' | '+that.id+' ] Opened.');
182
242
 
183
- if(this.options.iframe === true){
243
+ that.$element.trigger(STATES.OPENED);
244
+ that.state = STATES.OPENED;
245
+ if (that.options.onOpened && typeof(that.options.onOpened) === "function") {
246
+ that.options.onOpened(that);
247
+ }
248
+ }
184
249
 
185
- var href = null;
186
- if(this.options.iframeURL !== null){
187
- href = this.options.iframeURL;
188
- } else {
250
+ function bindEvents(){
251
+
252
+ // Close when button pressed
253
+ that.$element.off('click', '[data-'+PLUGIN_NAME+'-close]').on('click', '[data-'+PLUGIN_NAME+'-close]', function (e) {
254
+ e.preventDefault();
255
+
256
+ var transition = $(e.currentTarget).attr('data-'+PLUGIN_NAME+'-transitionOut');
257
+
258
+ if(transition !== undefined){
259
+ that.close({transition:transition});
260
+ } else {
261
+ that.close();
262
+ }
263
+ });
264
+
265
+ // Expand when button pressed
266
+ that.$element.off('click', '[data-'+PLUGIN_NAME+'-fullscreen]').on('click', '[data-'+PLUGIN_NAME+'-fullscreen]', function (e) {
267
+ e.preventDefault();
268
+ if(that.isFullscreen === true){
269
+ that.isFullscreen = false;
270
+ that.$element.removeClass('isFullscreen');
271
+ } else {
272
+ that.isFullscreen = true;
273
+ that.$element.addClass('isFullscreen');
274
+ }
275
+ if (that.options.onFullscreen && typeof(that.options.onFullscreen) === "function") {
276
+ that.options.onFullscreen(that);
277
+ }
278
+ that.$element.trigger('fullscreen', that);
279
+ });
280
+
281
+ // Next modal
282
+ that.$navigate.off('click', '.'+PLUGIN_NAME+'-navigate-next').on('click', '.'+PLUGIN_NAME+'-navigate-next', function (e) {
283
+ that.next(e);
284
+ });
285
+ that.$element.off('click', '[data-'+PLUGIN_NAME+'-next]').on('click', '[data-'+PLUGIN_NAME+'-next]', function (e) {
286
+ that.next(e);
287
+ });
288
+
289
+ // Previous modal
290
+ that.$navigate.off('click', '.'+PLUGIN_NAME+'-navigate-prev').on('click', '.'+PLUGIN_NAME+'-navigate-prev', function (e) {
291
+ that.prev(e);
292
+ });
293
+ that.$element.off('click', '[data-'+PLUGIN_NAME+'-prev]').on('click', '[data-'+PLUGIN_NAME+'-prev]', function (e) {
294
+ that.prev(e);
295
+ });
296
+ }
297
+
298
+ if(this.state == STATES.CLOSED){
299
+
300
+ bindEvents();
301
+
302
+ this.$element.trigger(STATES.OPENING);
303
+ this.state = STATES.OPENING;
304
+ this.setGroup();
305
+
306
+ // console.info('[ '+PLUGIN_NAME+' | '+this.id+' ] Opening...');
307
+
308
+ if(this.options.iframe === true){
309
+
310
+ this.$element.find('.'+PLUGIN_NAME+'-content').addClass(PLUGIN_NAME+'-content-loader');
311
+
312
+ this.$element.find('.'+PLUGIN_NAME+'-iframe').on('load', function(){
313
+ $(this).parent().removeClass(PLUGIN_NAME+'-content-loader');
314
+ });
315
+
316
+ var href = null;
189
317
  try {
190
- href = param.target.href;
191
- if(href !== undefined){
192
- href = param.target.href;
193
- }
318
+ href = $(param.currentTarget).attr('href') !== "" ? $(param.currentTarget).attr('href') : null;
194
319
  } catch(e) {
195
320
  console.warn(e);
196
321
  }
322
+ if( (this.options.iframeURL !== null) && (href === null || href === undefined)){
323
+ href = this.options.iframeURL;
324
+ }
325
+ if(href === null || href === undefined){
326
+ alert("Failed to find iframe URL.");
327
+ }
328
+ this.$element.find('.'+PLUGIN_NAME+'-iframe').attr('src', href);
197
329
  }
198
- this.$element.find('.'+PLUGIN_NAME+'-iframe').attr('src', href);
199
- }
200
-
201
- this.$element.trigger(STATES.OPENING);
202
- this.state = STATES.OPENING;
203
330
 
204
- // console.info('[ '+PLUGIN_NAME+' | '+this.id+' ] Opening...');
331
+ if (this.options.bodyOverflow || isMobile){
332
+ $(document.body).css('overflow', 'hidden');
333
+ }
205
334
 
206
- if (this.options.bodyOverflow || isMobile){
207
- $(document.body).css('overflow', 'hidden');
208
- }
335
+ if (that.options.onOpening && typeof(that.options.onOpening) === "function") {
336
+ that.options.onOpening(this);
337
+ }
338
+ (function open(){
209
339
 
210
- if (that.options.onOpening && typeof(that.options.onOpening) === "function") {
211
- that.options.onOpening(this);
212
- }
340
+ if(that.group.ids.length > 1 ){
213
341
 
214
- function opened(){
215
- that.$element.trigger(STATES.OPENED);
216
- that.state = STATES.OPENED;
342
+ that.$navigate.appendTo('body');
343
+ that.$navigate.addClass(that.options.transitionInOverlay);
217
344
 
218
- // console.info('[ '+PLUGIN_NAME+' | '+that.id+' ] Opened.');
345
+ if(that.options.navigateCaption === true){
346
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-caption').show();
347
+ }
219
348
 
220
- if (that.options.onOpened && typeof(that.options.onOpened) === "function") {
221
- that.options.onOpened(that);
222
- }
223
- }
349
+ if(that.options.navigateArrows === true || that.options.navigateArrows === 'closeToModal'){
350
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-prev').css('margin-left', -((that.width/2)+84));
351
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-next').css('margin-right', -((that.width/2)+84));
352
+ } else {
353
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-prev').css('left', 0);
354
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-next').css('right', 0);
355
+ }
356
+
357
+ var loop;
358
+ if(that.group.index === 0){
224
359
 
225
- this.$overlay.appendTo('body');
360
+ loop = $('.'+PLUGIN_NAME+'[data-'+PLUGIN_NAME+'-group="'+that.group.name+'"][data-'+PLUGIN_NAME+'-loop]').length;
226
361
 
227
- if (this.options.transitionInOverlay) {
228
- this.$overlay.addClass(this.options.transitionInOverlay);
229
- }
362
+ if(loop === 0 && that.options.loop === false)
363
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-prev').hide();
364
+ }
365
+ if(that.group.index+1 === that.group.ids.length){
230
366
 
231
- if (this.options.transitionInModal !== '') {
367
+ loop = $('.'+PLUGIN_NAME+'[data-'+PLUGIN_NAME+'-group="'+that.group.name+'"][data-'+PLUGIN_NAME+'-loop]').length;
232
368
 
233
- this.$element.addClass(this.options.transitionInModal).show();
369
+ if(loop === 0 && that.options.loop === false)
370
+ that.$navigate.find('.'+PLUGIN_NAME+'-navigate-next').hide();
371
+ }
372
+ }
234
373
 
235
- this.$element.find('.'+PLUGIN_NAME+'-wrap').one(animationEvent, function () {
374
+ if(that.options.overlay === true){
375
+ that.$overlay.appendTo('body');
376
+ }
236
377
 
237
- that.$element.removeClass(that.options.transitionInModal);
238
- that.$overlay.removeClass(that.options.transitionInOverlay);
378
+ if (that.options.transitionInOverlay) {
379
+ that.$overlay.addClass(that.options.transitionInOverlay);
380
+ }
239
381
 
240
- opened();
241
- });
382
+ var transitionIn = that.options.transitionIn;
242
383
 
243
- } else {
244
- this.$element.show();
245
- opened();
246
- }
384
+ if( typeof param == 'object' ){
385
+ if(param.transition !== undefined || param.transitionIn !== undefined){
386
+ transitionIn = param.transition || param.transitionIn;
387
+ }
388
+ }
247
389
 
248
- if (this.options.timeout !== false && !isNaN(this.options.timeout) && this.options.timeout !== false && this.options.timeout !== 0) {
249
-
250
- if (this.options.timeoutProgressbar === true) {
251
-
252
- var progressBar = {
253
- hideEta: null,
254
- maxHideTime: null,
255
- el: this.$element.find('.'+PLUGIN_NAME+'-progressbar > div'),
256
- updateProgress: function()
257
- {
258
- var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;
259
- progressBar.el.width(percentage + '%');
260
- if(percentage < 0){
261
- that.close();
262
- }
263
- }
264
- };
265
- if (this.options.timeout > 0) {
266
- progressBar.maxHideTime = parseFloat(this.options.timeout);
267
- progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;
268
- this.timerTimeout = setInterval(progressBar.updateProgress, 10);
269
- }
390
+ if (transitionIn !== '') {
270
391
 
271
- } else {
392
+ that.$element.addClass("transitionIn "+transitionIn).show();
393
+ that.$element.find('.'+PLUGIN_NAME+'-wrap').one(animationEvent, function () {
272
394
 
273
- this.timerTimeout = setTimeout(function(){
274
- that.close();
275
- }, that.options.timeout);
276
- }
277
- }
395
+ that.$element.removeClass(transitionIn + " transitionIn");
396
+ that.$overlay.removeClass(that.options.transitionInOverlay);
397
+ that.$navigate.removeClass(that.options.transitionInOverlay);
278
398
 
279
- // Close on overlay click
280
- if (this.options.overlayClose && !this.$element.hasClass(this.options.transitionOutModal)) {
281
- that.$overlay.click(function () {
282
- that.close();
283
- });
284
- }
399
+ opened();
400
+ });
285
401
 
286
- if (this.options.focusInput){
287
- that.$element.find(':input:not(button):enabled:visible:first').focus(); // Focus on the first field
288
- }
289
-
290
- (function updateTimer(){
291
- that.recalculateLayout();
292
- that.timer = setTimeout(updateTimer, 200);
293
- })();
402
+ } else {
403
+ that.$element.show();
404
+ // ver se o overlay tbm será incluído!
405
+ opened();
406
+ }
294
407
 
295
- // Close when the Escape key is pressed
296
- $(document).keydown(function (e) {
297
- if (that.options.closeOnEscape && e.keyCode === 27) {
298
- that.close();
299
- }
300
- });
301
408
 
302
- },
409
+ if(that.options.pauseOnHover === true && that.options.pauseOnHover === true && that.options.timeout !== false && !isNaN(parseInt(that.options.timeout)) && that.options.timeout !== false && that.options.timeout !== 0){
303
410
 
304
- close: function (param) {
411
+ that.$element.off('mouseenter').on('mouseenter', function(event) {
412
+ event.preventDefault();
413
+ that.isPaused = true;
414
+ });
415
+ that.$element.off('mouseleave').on('mouseleave', function(event) {
416
+ event.preventDefault();
417
+ that.isPaused = false;
418
+ });
419
+ }
305
420
 
306
- var that = this;
421
+ })();
422
+
423
+
424
+ if (this.options.timeout !== false && !isNaN(parseInt(this.options.timeout)) && this.options.timeout !== false && this.options.timeout !== 0) {
425
+
426
+ if (this.options.timeoutProgressbar === true) {
427
+
428
+ this.progressBar = {
429
+ hideEta: null,
430
+ maxHideTime: null,
431
+ currentTime: new Date().getTime(),
432
+ el: this.$element.find('.'+PLUGIN_NAME+'-progressbar > div'),
433
+ updateProgress: function()
434
+ {
435
+ if(!that.isPaused){
436
+
437
+ that.progressBar.currentTime = that.progressBar.currentTime+10;
438
+
439
+ var percentage = ((that.progressBar.hideEta - (that.progressBar.currentTime)) / that.progressBar.maxHideTime) * 100;
440
+ that.progressBar.el.width(percentage + '%');
441
+ if(percentage < 0){
442
+ that.close();
443
+ }
444
+ }
445
+ }
446
+ };
447
+ if (this.options.timeout > 0) {
448
+
449
+ this.progressBar.maxHideTime = parseFloat(this.options.timeout);
450
+ this.progressBar.hideEta = new Date().getTime() + this.progressBar.maxHideTime;
451
+ this.timerTimeout = setInterval(this.progressBar.updateProgress, 10);
452
+ }
307
453
 
308
- if (param && typeof(param) === "function") {
309
- param(that);
310
- }
454
+ } else {
311
455
 
312
- $(document).off("keydown");
456
+ this.timerTimeout = setTimeout(function(){
457
+ that.close();
458
+ }, that.options.timeout);
459
+ }
460
+ }
313
461
 
314
- this.state = STATES.CLOSING;
315
- this.$element.trigger(STATES.CLOSING);
316
- // console.info('[ '+PLUGIN_NAME+' | '+this.id+' ] Closing...');
462
+ // Close on overlay click
463
+ if (this.options.overlayClose && !this.$element.hasClass(this.options.transitionOut)) {
464
+ this.$overlay.click(function () {
465
+ that.close();
466
+ });
467
+ }
317
468
 
318
- clearTimeout(this.timer);
319
- clearTimeout(this.timerTimeout);
469
+ if (this.options.focusInput){
470
+ this.$element.find(':input:not(button):enabled:visible:first').focus(); // Focus on the first field
471
+ }
472
+
473
+ (function updateTimer(){
474
+ that.recalculateLayout();
475
+ that.timer = setTimeout(updateTimer, 300);
476
+ })();
477
+
478
+ (function setUrlHash(){
479
+ if(that.options.history || isMobile){
480
+ var oldTitle = document.title;
481
+ document.title = oldTitle + " - " + that.options.title;
482
+ document.location.hash = that.id;
483
+ document.title = oldTitle;
484
+ //history.pushState({}, that.options.title, "#"+that.id);
485
+ }
486
+ })();
320
487
 
321
- if (that.options.onClosing && typeof(that.options.onClosing) === "function") {
322
- that.options.onClosing(this);
488
+ // Close when the Escape key is pressed
489
+ $document.keydown(function (e) {
490
+ if (that.options.closeOnEscape && e.keyCode === 27) {
491
+ that.close();
492
+ }
493
+ });
323
494
  }
324
495
 
325
- function closed(){
496
+ },
497
+
498
+ close: function (param) {
326
499
 
500
+ var that = this;
501
+
502
+ function closed(){
327
503
  if (that.options.iframe === true) {
328
504
  that.$element.find('.'+PLUGIN_NAME+'-iframe').attr('src', "");
329
505
  }
@@ -342,38 +518,153 @@
342
518
  if (that.options.onClosed && typeof(that.options.onClosed) === "function") {
343
519
  that.options.onClosed(that);
344
520
  }
521
+
522
+ if(that.options.restoreDefaultContent === true){
523
+ that.$element.find('.'+PLUGIN_NAME+'-content').html( that.content );
524
+ }
345
525
  }
346
526
 
347
- if (this.options.transitionOutModal !== '') {
527
+ if(this.state == STATES.OPENED || this.state == STATES.OPENING){
528
+
529
+ $document.off("keydown");
530
+
531
+ this.state = STATES.CLOSING;
532
+ this.$element.trigger(STATES.CLOSING);
533
+
534
+ // console.info('[ '+PLUGIN_NAME+' | '+this.id+' ] Closing...');
535
+
536
+ clearTimeout(this.timer);
537
+ clearTimeout(this.timerTimeout);
538
+
539
+ if (that.options.onClosing && typeof(that.options.onClosing) === "function") {
540
+ that.options.onClosing(this);
541
+ }
542
+
543
+ var transitionOut = this.options.transitionOut;
544
+
545
+ if( typeof param == 'object' ){
546
+ if(param.transition !== undefined || param.transitionOut !== undefined){
547
+ transitionOut = param.transition || param.transitionOut;
548
+ }
549
+ }
348
550
 
349
- this.$element.attr('class', PLUGIN_NAME + " " + this.options.transitionOutModal + " " + this.options.theme + " " + String((this.isFullscreen === true) ? 'isFullscreen' : ''));
350
- this.$overlay.attr('class', PLUGIN_NAME + "-overlay " + this.options.transitionOutOverlay);
551
+ if (transitionOut !== '') {
351
552
 
352
- this.$element.one(animationEvent, function () {
353
-
354
- if( that.$element.hasClass(that.options.transitionOutModal) ){
553
+ this.$element.attr('class', PLUGIN_NAME + " transitionOut " + transitionOut + " " + this.options.theme + " " + String((this.isFullscreen === true) ? 'isFullscreen' : '') + " " + String((this.options.attached === 'top') ? 'isAttachedTop' : '') + " " + String((this.options.attached === 'bottom') ? 'isAttachedBottom' : ''));
554
+ this.$overlay.attr('class', PLUGIN_NAME + "-overlay " + this.options.transitionOutOverlay);
555
+ this.$navigate.attr('class', PLUGIN_NAME + "-navigate " + this.options.transitionOutOverlay);
355
556
 
356
- that.$element.removeClass(that.options.transitionOutModal).hide();
557
+ this.$element.one(animationEvent, function () {
558
+
559
+ if( that.$element.hasClass(transitionOut) ){
560
+ that.$element.removeClass(transitionOut + " transitionOut").hide();
561
+ }
357
562
  that.$overlay.removeClass(that.options.transitionOutOverlay).remove();
358
-
563
+ that.$navigate.removeClass(that.options.transitionOutOverlay).remove();
359
564
  closed();
360
- }
361
- });
362
- }
363
- else {
364
- this.$element.hide();
365
- this.$overlay.remove();
366
-
367
- closed();
565
+ });
566
+ }
567
+ else {
568
+ this.$element.hide();
569
+ this.$overlay.remove();
570
+ this.$navigate.remove();
571
+ closed();
572
+ }
368
573
  }
369
574
  },
370
575
 
576
+ next: function (e){
577
+
578
+ var that = this;
579
+ var transitionIn = 'fadeInRight';
580
+ var transitionOut = 'fadeOutLeft';
581
+ var modal = $('.'+PLUGIN_NAME+':visible');
582
+ var modals = {};
583
+ modals.out = this;
584
+
585
+ if(e !== undefined && typeof e !== 'object'){
586
+ e.preventDefault();
587
+ modal = $(e.currentTarget);
588
+ transitionIn = modal.attr('data-'+PLUGIN_NAME+'-transitionIn');
589
+ transitionOut = modal.attr('data-'+PLUGIN_NAME+'-transitionOut');
590
+ } else if(e !== undefined){
591
+ if(e.transitionIn !== undefined){
592
+ transitionIn = e.transitionIn;
593
+ }
594
+ if(e.transitionOut !== undefined){
595
+ transitionOut = e.transitionOut;
596
+ }
597
+ }
598
+
599
+ this.close({transition:transitionOut});
600
+
601
+ setTimeout(function(){
602
+
603
+ var loop = $('.'+PLUGIN_NAME+'[data-'+PLUGIN_NAME+'-group="'+that.group.name+'"][data-'+PLUGIN_NAME+'-loop]').length;
604
+
605
+ if((loop > 0 || that.options.loop === true) && (that.group.index+1) === that.group.ids.length){
606
+
607
+ $("#"+that.group.ids[0]).iziModal('open', { transition: transitionIn });
608
+ modals.in = $("#"+that.group.ids[0]).data().iziModal;
609
+
610
+ } else if(that.group.index+1 < that.group.ids.length){
611
+
612
+ $("#"+that.group.ids[that.group.index+1]).iziModal('open', { transition: transitionIn });
613
+ modals.in = $("#"+that.group.ids[that.group.index+1]).data().iziModal;
614
+ }
615
+ }, 200);
616
+
617
+ $(document).trigger( PLUGIN_NAME + "-group-change", modals );
618
+ },
619
+
620
+ prev: function (e){
621
+ var that = this;
622
+ var transitionIn = 'fadeInLeft';
623
+ var transitionOut = 'fadeOutRight';
624
+ var modal = $('.'+PLUGIN_NAME+':visible');
625
+ var modals = {};
626
+ modals.out = this;
627
+
628
+ if(e !== undefined && typeof e !== 'object'){
629
+ e.preventDefault();
630
+ modal = $(e.currentTarget);
631
+ transitionIn = modal.attr('data-'+PLUGIN_NAME+'-transitionIn');
632
+ transitionOut = modal.attr('data-'+PLUGIN_NAME+'-transitionOut');
633
+ } else if(e !== undefined){
634
+ if(e.transitionIn !== undefined){
635
+ transitionIn = e.transitionIn;
636
+ }
637
+ if(e.transitionOut !== undefined){
638
+ transitionOut = e.transitionOut;
639
+ }
640
+ }
641
+
642
+ this.close({transition:transitionOut});
643
+
644
+ setTimeout(function(){
645
+ var loop = $('.'+PLUGIN_NAME+'[data-'+PLUGIN_NAME+'-group="'+that.group.name+'"][data-'+PLUGIN_NAME+'-loop]').length;
646
+
647
+ if( (loop > 0 || that.options.loop === true) && that.group.index === 0){
648
+
649
+ $("#"+that.group.ids[that.group.ids.length-1]).iziModal('open', { transition: transitionIn });
650
+ modals.in = $("#"+that.group.ids[that.group.ids.length-1]).data().iziModal;
651
+
652
+ } else if(that.group.index > 0){
653
+
654
+ $("#"+that.group.ids[that.group.index-1]).iziModal('open', { transition: transitionIn });
655
+ modals.in = $("#"+that.group.ids[that.group.index-1]).data().iziModal;
656
+ }
657
+ }, 200);
658
+
659
+ $(document).trigger( PLUGIN_NAME + "-group-change", modals );
660
+ },
661
+
371
662
  destroy: function () {
372
663
  var e = $.Event('destroy');
373
664
 
374
665
  this.$element.trigger(e);
375
666
 
376
- $(document).off("keydown");
667
+ $document.off("keydown");
377
668
 
378
669
  clearTimeout(this.timer);
379
670
  clearTimeout(this.timerTimeout);
@@ -383,9 +674,10 @@
383
674
  }
384
675
  this.$element.html(this.$element.find('.'+PLUGIN_NAME+'-content').html());
385
676
 
386
- $(document.body).find('style[rel='+this.id+']').remove();
677
+ $document.find('style[rel='+this.id+']').remove();
387
678
 
388
679
  this.$element.off('click', '[data-'+PLUGIN_NAME+'-close]');
680
+ this.$element.off('click', '[data-'+PLUGIN_NAME+'-fullscreen]');
389
681
 
390
682
  this.$element
391
683
  .off('.'+PLUGIN_NAME)
@@ -393,23 +685,25 @@
393
685
  .attr('style', '');
394
686
 
395
687
  this.$overlay.remove();
688
+ this.$navigate.remove();
396
689
  this.$element.trigger(STATES.DESTROYED);
397
690
  this.$element = null;
398
691
  },
399
692
 
400
693
  getState: function(){
401
694
 
402
- console.info(this.state);
403
-
404
695
  return this.state;
405
696
  },
406
697
 
698
+ getGroup: function(){
699
+
700
+ return this.group;
701
+ },
702
+
407
703
  setTitle: function(title){
408
704
 
409
705
  if (this.options.title !== null) {
410
-
411
706
  this.$header.find('.'+PLUGIN_NAME+'-header-title').html(title);
412
-
413
707
  this.options.title = title;
414
708
  }
415
709
  },
@@ -417,33 +711,46 @@
417
711
  setSubtitle: function(subtitle){
418
712
 
419
713
  if (this.options.subtitle !== null) {
420
-
421
714
  this.$header.find('.'+PLUGIN_NAME+'-header-subtitle').html(subtitle);
422
-
423
715
  this.options.subtitle = subtitle;
424
716
  }
425
717
  },
426
718
 
427
- setIconClass: function(iconClass){
428
-
429
- if (this.options.iconClass !== null) {
430
-
431
- this.$header.find('.'+PLUGIN_NAME+'-header-icon').attr('class', PLUGIN_NAME+'-header-icon ' + iconClass);
719
+ setIcon: function(icon){
432
720
 
433
- this.options.iconClass = iconClass;
721
+ if (this.options.icon !== null) {
722
+ this.$header.find('.'+PLUGIN_NAME+'-header-icon').attr('class', PLUGIN_NAME+'-header-icon ' + icon);
723
+ this.options.icon = icon;
434
724
  }
435
725
  },
436
726
 
437
727
  setHeaderColor: function(headerColor){
438
728
 
439
- if (this.options.headerColor !== null) {
440
- this.$element.css('border-bottom', '3px solid ' + headerColor + '');
441
- this.$header.css('background', headerColor);
729
+ this.$element.css('border-bottom', '3px solid ' + headerColor + '');
730
+ this.$header.css('background', headerColor);
731
+ this.options.headerColor = headerColor;
732
+ },
733
+
734
+ setZindex: function(zIndex){
442
735
 
443
- this.options.headerColor = headerColor;
736
+ if (!isNaN(parseInt(this.options.zindex))) {
737
+ this.options.zindex = zIndex;
738
+ this.$element.css('z-index', zIndex);
739
+ this.$navigate.css('z-index', zIndex-1);
740
+ this.$overlay.css('z-index', zIndex-2);
444
741
  }
445
742
  },
446
743
 
744
+ setTransitionIn: function(transition){
745
+
746
+ this.options.transitionIn = param.transition;
747
+ },
748
+
749
+ setTransitionOut: function(transition){
750
+
751
+ this.options.transitionOut = param.transition;
752
+ },
753
+
447
754
  startLoading: function(){
448
755
  if( !this.$element.find('.'+PLUGIN_NAME+'-loader').length ){
449
756
  this.$element.append('<div class="'+PLUGIN_NAME+'-loader '+this.options.transitionInOverlay+'"></div>');
@@ -465,10 +772,19 @@
465
772
  this.$element.css('overflow', 'hidden');
466
773
  }
467
774
 
468
- var windowHeight = $(window).height(),
775
+ var windowHeight = $window.height(),
776
+ modalHeight = this.$element.outerHeight(),
469
777
  contentHeight = this.$element.find('.'+PLUGIN_NAME+'-content')[0].scrollHeight,
470
778
  modalMargin = parseInt(-((this.$element.innerHeight() + 1) / 2)) + 'px';
471
779
 
780
+ if(modalHeight !== this.modalHeight){
781
+ this.modalHeight = modalHeight;
782
+
783
+ if (this.options.onResize && typeof(this.options.onResize) === "function") {
784
+ this.options.onResize(this);
785
+ }
786
+ }
787
+
472
788
  if(this.state == STATES.OPENED || this.state == STATES.OPENING){
473
789
 
474
790
  if (this.options.iframe === true) {
@@ -492,13 +808,18 @@
492
808
 
493
809
  } else {
494
810
 
495
- if (windowHeight > (contentHeight + this.headerHeight)) {
811
+ if (windowHeight > (contentHeight + this.headerHeight) && this.isFullscreen !== true) {
496
812
  $(document.body).removeClass(PLUGIN_NAME+'-attached');
497
813
  this.$element.find('.'+PLUGIN_NAME+'-wrap').css({'height': 'auto'});
498
814
  }
499
815
 
500
- if (this.$element.innerHeight() > windowHeight || this.$element.innerHeight() < contentHeight) {
501
- $(document.body).addClass(PLUGIN_NAME+'-attached');
816
+ // subistuido (contentHeight + this.headerHeight) por this.$element.innerHeight()
817
+ // Se o modal é maior que a altura da janela ou
818
+ if ((contentHeight + this.headerHeight) > windowHeight || this.$element.innerHeight() < contentHeight || this.isFullscreen === true) {
819
+
820
+ if( !$(document.body).hasClass(PLUGIN_NAME+'-attached') ){
821
+ $(document.body).addClass(PLUGIN_NAME+'-attached');
822
+ }
502
823
 
503
824
  this.$element.find('.'+PLUGIN_NAME+'-wrap').css({
504
825
  'height': parseInt(windowHeight - this.headerHeight) + 'px',
@@ -526,55 +847,165 @@
526
847
 
527
848
  };
528
849
 
529
- $.fn[PLUGIN_NAME] = function (option, args) {
530
- return this.each(function () {
531
- var $this = $(this),
532
- data = $this.data(PLUGIN_NAME),
533
- options = $.extend({}, $.fn.iziModal.defaults, $this.data(), typeof option == 'object' && option);
850
+ $window.off('hashchange load').on('hashchange load', function(e) {
851
+
852
+ if(autoOpenModal === 0){
853
+
854
+ if(document.location.hash !== ""){
855
+
856
+ $.each( $('.'+PLUGIN_NAME) , function(index, modal) {
857
+ var state = $(modal).iziModal('getState');
858
+ if(state == 'opened' || state == 'opening'){
859
+
860
+ if( "#" + $(modal).attr('id') !== document.location.hash){
861
+ $(modal).iziModal('close');
862
+ }
863
+ }
864
+ });
865
+
866
+ setTimeout(function(){
867
+ $(document.location.hash).iziModal("open");
868
+ },200);
869
+
870
+ } else {
871
+
872
+ $.each( $('.'+PLUGIN_NAME) , function(index, modal) {
873
+ var state = $(modal).iziModal('getState');
874
+ if(state == 'opened' || state == 'opening'){
875
+ $(modal).iziModal('close');
876
+ }
877
+ });
878
+
879
+ }
880
+ } else {
881
+ autoOpenModal = 0;
882
+ }
883
+ });
884
+
885
+ $document.off('click', '[data-'+PLUGIN_NAME+'-open]').on('click', '[data-'+PLUGIN_NAME+'-open]', function(e) {
886
+ e.preventDefault();
887
+
888
+ var modal = $('.'+PLUGIN_NAME+':visible').attr('id');
889
+ var openModal = $(e.currentTarget).attr('data-'+PLUGIN_NAME+'-open');
890
+ var transitionIn = $(e.currentTarget).attr('data-'+PLUGIN_NAME+'-transitionIn');
891
+ var transitionOut = $(e.currentTarget).attr('data-'+PLUGIN_NAME+'-transitionOut');
892
+
893
+ if(transitionOut !== undefined){
894
+ $("#"+modal).iziModal('close', {
895
+ transition: transitionOut
896
+ });
897
+ } else {
898
+ $("#"+modal).iziModal('close');
899
+ }
900
+
901
+ setTimeout(function(){
902
+ if(transitionIn !== undefined){
903
+ $("#"+openModal).iziModal('open', {
904
+ transition: transitionIn
905
+ });
906
+ } else {
907
+ $("#"+openModal).iziModal('open');
908
+ }
909
+ }, 200);
910
+ });
911
+
912
+ $document.off('keyup').on('keyup', function(event) {
913
+
914
+ var modal = $('.'+PLUGIN_NAME+':visible').attr('id'),
915
+ group = $("#"+modal).iziModal('getGroup'),
916
+ e = event || window.event,
917
+ target = e.target || e.srcElement,
918
+ modals = {};
919
+
920
+ if(modal !== undefined && group !== undefined && !e.ctrlKey && !e.metaKey && !e.altKey && target.tagName.toUpperCase() !== 'INPUT' && target.tagName.toUpperCase() != 'TEXTAREA'){ //&& $(e.target).is('body')
921
+
922
+ if(e.keyCode === 37) { // left
534
923
 
535
- if (!data && (!option || typeof option == 'object')){
536
- $this.data(PLUGIN_NAME, (data = new iziModal(this, options)));
924
+ $("#"+modal).iziModal('prev', e);
537
925
  }
538
- if (typeof option == 'string' && typeof data != 'undefined'){
539
- data[option].apply(data, [].concat(args));
926
+ else if(e.keyCode === 39 ) { // right
927
+
928
+ $("#"+modal).iziModal('next', e);
929
+
540
930
  }
541
- else if (options.autoOpen){ // Automatically open the modal if autoOpen setted true
931
+ }
932
+ });
933
+
934
+ $.fn[PLUGIN_NAME] = function(option, args) {
935
+
936
+ var $this = $(this),
937
+ data = $this.data(PLUGIN_NAME),
938
+ options = $.extend({}, $.fn.iziModal.defaults, $this.data(), typeof option == 'object' && option);
939
+
940
+ if (!data && (!option || typeof option == 'object')){
941
+
942
+ $this.data(PLUGIN_NAME, (data = new iziModal(this, options)));
943
+ }
944
+ else if (typeof option == 'string' && typeof data != 'undefined'){
945
+
946
+ return data[option].apply(data, [].concat(args));
947
+ }
948
+
949
+ if (options.autoOpen){ // Automatically open the modal if autoOpen setted true
950
+
951
+ if( !isNaN(parseInt(options.autoOpen)) ){
952
+
953
+ setTimeout(function(){
954
+ data.open();
955
+ }, options.autoOpen);
956
+
957
+ } else if(options.autoOpen === true ) {
542
958
  data.open();
543
959
  }
544
- });
545
- };
960
+ autoOpenModal++;
961
+ }
962
+ return this;
963
+ };
546
964
 
547
965
  $.fn[PLUGIN_NAME].defaults = {
548
966
  title: '',
549
967
  subtitle: '',
550
- theme: '',
551
968
  headerColor: '#88A0B9',
552
- overlayColor: 'rgba(0, 0, 0, 0.4)',
969
+ theme: '', // light
970
+ attached: '', // bottom, top
971
+ icon: '',
553
972
  iconColor: '',
554
- iconClass: null,
555
973
  width: 600,
556
974
  padding: 0,
975
+ radius: 3,
976
+ zindex: 999,
557
977
  iframe: false,
558
978
  iframeHeight: 400,
559
979
  iframeURL: null,
560
- overlayClose: true,
561
- closeOnEscape: true,
562
- bodyOverflow: false,
563
980
  focusInput: true,
564
- autoOpen: false,
981
+ group: '',
982
+ loop: false,
983
+ navigateCaption: true,
984
+ navigateArrows: true, // closeToModal, closeScreenEdge
985
+ history: true,
986
+ restoreDefaultContent: false,
987
+ autoOpen: 0, // Boolean, Number
988
+ bodyOverflow: false,
565
989
  fullscreen: false,
566
990
  openFullscreen: false,
991
+ closeOnEscape: true,
992
+ overlay: true,
993
+ overlayClose: true,
994
+ overlayColor: 'rgba(0, 0, 0, 0.4)',
567
995
  timeout: false,
568
996
  timeoutProgressbar: false,
997
+ pauseOnHover: false,
569
998
  timeoutProgressbarColor: 'rgba(255,255,255,0.5)',
570
- transitionInModal: 'transitionIn',
571
- transitionOutModal: 'transitionOut',
999
+ transitionIn: 'comingIn', // comingIn, bounceInDown, bounceInUp, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX
1000
+ transitionOut: 'comingOut', // comingOut, bounceOutDown, bounceOutUp, fadeOutDown, fadeOutUp, , fadeOutLeft, fadeOutRight, flipOutX
572
1001
  transitionInOverlay: 'fadeIn',
573
1002
  transitionOutOverlay: 'fadeOut',
574
- onOpening: function() {},
575
- onOpened: function() {},
576
- onClosing: function() {},
577
- onClosed: function() {}
1003
+ onFullscreen: function(){},
1004
+ onResize: function(){},
1005
+ onOpening: function(){},
1006
+ onOpened: function(){},
1007
+ onClosing: function(){},
1008
+ onClosed: function(){}
578
1009
  };
579
1010
 
580
1011
  $.fn[PLUGIN_NAME].Constructor = iziModal;