jquery-modal-rails-assets 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aee86331f582edecdab486c2c248c99f7a8392d5
|
4
|
+
data.tar.gz: 3a2d4b93aa9c4986a12a09df40eaad7dc1418c32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46cdc0b4d24fd162bc2bae448dfdb1f2888e0d4ab38db47848c0c833feb0f1bb12db2f1bdb5cd35a227574f7ca9b8d4262801466e7a7bbcb72d0216b8ffe8a70
|
7
|
+
data.tar.gz: fdbb251e4ac70cba55a92fb9adfb05c0b3cb38605a1b6b6ff602ea8da70eed1003ab018ab0d504de1ecfd006f2fe04d71ee2c1cd2d452aa0aa09acb3eac92a0e
|
@@ -1,17 +1,34 @@
|
|
1
1
|
/*
|
2
2
|
A simple jQuery modal (http://github.com/kylefox/jquery-modal)
|
3
|
-
Version 0.
|
3
|
+
Version 0.7.0
|
4
4
|
*/
|
5
5
|
(function($) {
|
6
6
|
|
7
|
-
var
|
7
|
+
var modals = [],
|
8
|
+
getCurrent = function() {
|
9
|
+
return modals.length ? modals[modals.length - 1] : null;
|
10
|
+
},
|
11
|
+
selectCurrent = function() {
|
12
|
+
var i,
|
13
|
+
selected = false;
|
14
|
+
for (i=modals.length-1; i>=0; i--) {
|
15
|
+
if (modals[i].$blocker) {
|
16
|
+
modals[i].$blocker.toggleClass('current',!selected).toggleClass('behind',selected);
|
17
|
+
selected = true;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
};
|
8
21
|
|
9
22
|
$.modal = function(el, options) {
|
10
|
-
$.modal.close(); // Close any open modals.
|
11
23
|
var remove, target;
|
12
24
|
this.$body = $('body');
|
13
25
|
this.options = $.extend({}, $.modal.defaults, options);
|
14
26
|
this.options.doFade = !isNaN(parseInt(this.options.fadeDuration, 10));
|
27
|
+
this.$blocker = null;
|
28
|
+
if (this.options.closeExisting)
|
29
|
+
while ($.modal.isActive())
|
30
|
+
$.modal.close(); // Close any open modals.
|
31
|
+
modals.push(this);
|
15
32
|
if (el.is('a')) {
|
16
33
|
target = el.attr('href');
|
17
34
|
//Select element by id from href
|
@@ -28,15 +45,18 @@
|
|
28
45
|
this.showSpinner();
|
29
46
|
el.trigger($.modal.AJAX_SEND);
|
30
47
|
$.get(target).done(function(html) {
|
31
|
-
if (
|
48
|
+
if (!$.modal.isActive()) return;
|
32
49
|
el.trigger($.modal.AJAX_SUCCESS);
|
50
|
+
var current = getCurrent();
|
33
51
|
current.$elm.empty().append(html).on($.modal.CLOSE, remove);
|
34
52
|
current.hideSpinner();
|
35
53
|
current.open();
|
36
54
|
el.trigger($.modal.AJAX_COMPLETE);
|
37
55
|
}).fail(function() {
|
38
56
|
el.trigger($.modal.AJAX_FAIL);
|
57
|
+
var current = getCurrent();
|
39
58
|
current.hideSpinner();
|
59
|
+
modals.pop(); // remove expected modal from the list
|
40
60
|
el.trigger($.modal.AJAX_COMPLETE);
|
41
61
|
});
|
42
62
|
}
|
@@ -52,55 +72,54 @@
|
|
52
72
|
|
53
73
|
open: function() {
|
54
74
|
var m = this;
|
75
|
+
this.block();
|
55
76
|
if(this.options.doFade) {
|
56
|
-
this.block();
|
57
77
|
setTimeout(function() {
|
58
78
|
m.show();
|
59
79
|
}, this.options.fadeDuration * this.options.fadeDelay);
|
60
80
|
} else {
|
61
|
-
this.block();
|
62
81
|
this.show();
|
63
82
|
}
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
});
|
68
|
-
}
|
69
|
-
if (this.options.clickClose) this.blocker.click(function(e){
|
70
|
-
if (e.target==this)
|
71
|
-
$.modal.close();
|
83
|
+
$(document).off('keydown.modal').on('keydown.modal', function(event) {
|
84
|
+
var current = getCurrent();
|
85
|
+
if (event.which == 27 && current.options.escapeClose) current.close();
|
72
86
|
});
|
87
|
+
if (this.options.clickClose)
|
88
|
+
this.$blocker.click(function(e) {
|
89
|
+
if (e.target==this)
|
90
|
+
$.modal.close();
|
91
|
+
});
|
73
92
|
},
|
74
93
|
|
75
94
|
close: function() {
|
95
|
+
modals.pop();
|
76
96
|
this.unblock();
|
77
97
|
this.hide();
|
78
|
-
|
98
|
+
if (!$.modal.isActive())
|
99
|
+
$(document).off('keydown.modal');
|
79
100
|
},
|
80
101
|
|
81
102
|
block: function() {
|
82
103
|
this.$elm.trigger($.modal.BEFORE_BLOCK, [this._ctx()]);
|
83
|
-
this.blocker = $('<div class="jquery-modal blocker"></div>');
|
84
104
|
this.$body.css('overflow','hidden');
|
85
|
-
this.$
|
105
|
+
this.$blocker = $('<div class="jquery-modal blocker current"></div>').appendTo(this.$body);
|
106
|
+
selectCurrent();
|
86
107
|
if(this.options.doFade) {
|
87
|
-
this
|
108
|
+
this.$blocker.css('opacity',0).animate({opacity: 1}, this.options.fadeDuration);
|
88
109
|
}
|
89
110
|
this.$elm.trigger($.modal.BLOCK, [this._ctx()]);
|
90
111
|
},
|
91
112
|
|
92
|
-
unblock: function() {
|
93
|
-
if(this.options.doFade)
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
this.blocker.remove();
|
103
|
-
this.$body.css('overflow','');
|
113
|
+
unblock: function(now) {
|
114
|
+
if (!now && this.options.doFade)
|
115
|
+
this.$blocker.fadeOut(this.options.fadeDuration, this.unblock.bind(this,true));
|
116
|
+
else {
|
117
|
+
this.$blocker.children().appendTo(this.$body);
|
118
|
+
this.$blocker.remove();
|
119
|
+
this.$blocker = null;
|
120
|
+
selectCurrent();
|
121
|
+
if (!$.modal.isActive())
|
122
|
+
this.$body.css('overflow','');
|
104
123
|
}
|
105
124
|
},
|
106
125
|
|
@@ -110,8 +129,7 @@
|
|
110
129
|
this.closeButton = $('<a href="#close-modal" rel="modal:close" class="close-modal ' + this.options.closeClass + '">' + this.options.closeText + '</a>');
|
111
130
|
this.$elm.append(this.closeButton);
|
112
131
|
}
|
113
|
-
this.$elm.addClass(this.options.modalClass
|
114
|
-
this.$elm.appendTo(this.blocker);
|
132
|
+
this.$elm.addClass(this.options.modalClass).appendTo(this.$blocker);
|
115
133
|
if(this.options.doFade) {
|
116
134
|
this.$elm.css('opacity',0).show().animate({opacity: 1}, this.options.fadeDuration);
|
117
135
|
} else {
|
@@ -123,8 +141,6 @@
|
|
123
141
|
hide: function() {
|
124
142
|
this.$elm.trigger($.modal.BEFORE_CLOSE, [this._ctx()]);
|
125
143
|
if (this.closeButton) this.closeButton.remove();
|
126
|
-
this.$elm.removeClass('current');
|
127
|
-
|
128
144
|
var _this = this;
|
129
145
|
if(this.options.doFade) {
|
130
146
|
this.$elm.fadeOut(this.options.fadeDuration, function () {
|
@@ -152,25 +168,25 @@
|
|
152
168
|
|
153
169
|
//Return context for custom events
|
154
170
|
_ctx: function() {
|
155
|
-
return { elm: this.$elm, blocker: this
|
171
|
+
return { elm: this.$elm, $blocker: this.$blocker, options: this.options };
|
156
172
|
}
|
157
173
|
};
|
158
174
|
|
159
175
|
$.modal.close = function(event) {
|
160
|
-
if (
|
176
|
+
if (!$.modal.isActive()) return;
|
161
177
|
if (event) event.preventDefault();
|
178
|
+
var current = getCurrent();
|
162
179
|
current.close();
|
163
|
-
|
164
|
-
current = null;
|
165
|
-
return that;
|
180
|
+
return current.$elm;
|
166
181
|
};
|
167
182
|
|
168
183
|
// Returns if there currently is an active modal
|
169
184
|
$.modal.isActive = function () {
|
170
|
-
return
|
185
|
+
return modals.length > 0;
|
171
186
|
}
|
172
187
|
|
173
188
|
$.modal.defaults = {
|
189
|
+
closeExisting: true,
|
174
190
|
escapeClose: true,
|
175
191
|
clickClose: true,
|
176
192
|
closeText: 'Close',
|
@@ -198,7 +214,7 @@
|
|
198
214
|
|
199
215
|
$.fn.modal = function(options){
|
200
216
|
if (this.length === 1) {
|
201
|
-
|
217
|
+
new $.modal(this, options);
|
202
218
|
}
|
203
219
|
return this;
|
204
220
|
};
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-modal-rails-assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RogerE
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01
|
11
|
+
date: 2016-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|