lazybox 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +59 -34
- data/app/assets/javascripts/lazybox.js.coffee +15 -29
- data/app/assets/javascripts/lazybox.js.js +96 -0
- data/app/assets/stylesheets/lazybox.css.scss +51 -35
- data/lib/lazybox.rb +19 -0
- data/lib/lazybox/version.rb +1 -1
- metadata +13 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 14ba4ad8d9f02ddba95764fc533c30d8fad8d2da
|
4
|
+
data.tar.gz: 3df0f542f3d540f5143bc602aa4d84d16b856350
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4e79db94d9770028368d53b3533a3b58866da7c52b99f0cdf3f4215760b7aede668bfc2ebe9ed189864d67bd34de00f2afee46d8caa13b9973e8df184dbd92cc
|
7
|
+
data.tar.gz: 9f6fa44ffb06c4c6b77a124f080667572862198a62427c1ed8fcab842a775ce2a1734fc849526df74cdb8e6e8098012bc258eb61e11d101ab7f2a3574d4ccc99
|
data/README.md
CHANGED
@@ -12,6 +12,11 @@ LazyBox implemented using only css and jquery without images.
|
|
12
12
|
This is high perfomance modal dialogs. All unpacked files take only 5 kb.
|
13
13
|
This is simplest solution for popup windows and custom confirmation dialogs.
|
14
14
|
|
15
|
+
Upgrade to 1.1.0
|
16
|
+
-
|
17
|
+
|
18
|
+
After you upgrate the lazybox to 1.1.0 version you should add `render_lazybox` helper to your layout.
|
19
|
+
|
15
20
|
Installing
|
16
21
|
----------
|
17
22
|
|
@@ -23,10 +28,46 @@ gem 'lazybox'
|
|
23
28
|
|
24
29
|
Then run `bundle install` to update your application's bundle.
|
25
30
|
|
31
|
+
Add to your layout helper `render_lazybox`:
|
32
|
+
|
33
|
+
```slim
|
34
|
+
...
|
35
|
+
render_lazybox
|
36
|
+
body
|
37
|
+
html
|
38
|
+
```
|
39
|
+
|
26
40
|
Include in your `application.css`:
|
27
41
|
|
28
|
-
```
|
29
|
-
|
42
|
+
```scss
|
43
|
+
@include 'lazybox';
|
44
|
+
```
|
45
|
+
|
46
|
+
There are a lot of variables you can customise:
|
47
|
+
|
48
|
+
```scss
|
49
|
+
$lazy-transition: .3s;
|
50
|
+
$lazy-z-index: 1000;
|
51
|
+
$lazy-overlay: rgba(black, .7);
|
52
|
+
$lazy-bg: white;
|
53
|
+
$lazy-border: 1px solid #ccc;
|
54
|
+
$lazy-shadow: 0 1px 5px #333;
|
55
|
+
$lazy-padding: 20px;
|
56
|
+
$lazy-start: scale(.7);
|
57
|
+
$lazy-end: scale(1);
|
58
|
+
$lazy-close: '×';
|
59
|
+
```
|
60
|
+
|
61
|
+
Use `$lazy-start` and `$lazy-end` to contol the animation, `$lazy-close` to set close image.
|
62
|
+
|
63
|
+
You should set the variable before you include the `lazybox`
|
64
|
+
|
65
|
+
```scss
|
66
|
+
$lazy-start: rotate(180);
|
67
|
+
$lazy-end: rotate(0);
|
68
|
+
$lazy-close: url(url-to-image);
|
69
|
+
|
70
|
+
@include 'lazybox';
|
30
71
|
```
|
31
72
|
|
32
73
|
And in `application.js`:
|
@@ -90,7 +131,7 @@ $.lazybox.settings = {cancelClass: "button gray", submitClass: 'button gray', ov
|
|
90
131
|
or instance settings
|
91
132
|
|
92
133
|
```javascript
|
93
|
-
$.lazybox("<div>It works!</div>",{
|
134
|
+
$.lazybox("<div>It works!</div>",{modal: true, close: false})
|
94
135
|
```
|
95
136
|
|
96
137
|
###Images
|
@@ -104,7 +145,7 @@ Include in your `app/assets/javascripts/application.js`:
|
|
104
145
|
$(document).ready(function() {
|
105
146
|
$('a[rel*=lazybox]').lazybox();
|
106
147
|
// or with options
|
107
|
-
$('a[rel*=lazybox]').lazybox({
|
148
|
+
$('a[rel*=lazybox]').lazybox({esc: true, close: true, modal: true, klass: 'class'});
|
108
149
|
});
|
109
150
|
```
|
110
151
|
|
@@ -117,33 +158,6 @@ If there are more than one link to image you can click on image in the lazybox t
|
|
117
158
|
= image_tag image2.url, height: 100
|
118
159
|
```
|
119
160
|
|
120
|
-
Custom close image
|
121
|
-
------------------
|
122
|
-
|
123
|
-
Set 'closeImg' option to true.
|
124
|
-
|
125
|
-
`application.js`:
|
126
|
-
|
127
|
-
```javascript
|
128
|
-
$(document).ready(function() {
|
129
|
-
$('.images a').lazybox({closeImg: true});
|
130
|
-
});
|
131
|
-
```
|
132
|
-
|
133
|
-
Style your close:
|
134
|
-
|
135
|
-
`application.css`
|
136
|
-
|
137
|
-
```css
|
138
|
-
#lazybox_close.img {
|
139
|
-
background: url('close.png') no-repeat;
|
140
|
-
width: 32px;
|
141
|
-
height: 32px;
|
142
|
-
top: -17px;
|
143
|
-
right: -17px;
|
144
|
-
}
|
145
|
-
```
|
146
|
-
|
147
161
|
We can use lazybox with `turbolinks` to show page loading spinner:
|
148
162
|
|
149
163
|
```coffeescript
|
@@ -174,14 +188,25 @@ Turbolinks spinner
|
|
174
188
|
}
|
175
189
|
```
|
176
190
|
|
191
|
+
Display on page load
|
192
|
+
-
|
193
|
+
|
194
|
+
You can show lazybox with some content on page load. To do this you should `content_for` helper:
|
195
|
+
|
196
|
+
`index.haml`
|
197
|
+
|
198
|
+
```haml
|
199
|
+
content_for :lazybox do
|
200
|
+
This text appears on page load
|
201
|
+
```
|
202
|
+
|
203
|
+
|
177
204
|
Options
|
178
205
|
-------
|
179
206
|
|
180
207
|
esc: true|false //default true. Close lazybox on esc press
|
181
208
|
close: true|false //default true. Show close lazybox button
|
182
209
|
modal: true|false //default true. Close lazybox on overlay click
|
183
|
-
closeImg: true|false //default false. Use image for close link
|
184
|
-
onTop: true|false //default false. Show lazybox on top instead of on center. It will use slide animation instead of fade.
|
185
210
|
klass: 'class' Set class for lazybox. <div id='lazybox' class='class'>...</div>
|
186
211
|
//confirmation options
|
187
212
|
cancelText: //default 'Cancel'. Cancel button text
|
@@ -198,7 +223,7 @@ Events
|
|
198
223
|
Browser Compatibility
|
199
224
|
---------------------
|
200
225
|
|
201
|
-
|
226
|
+
IE9 +
|
202
227
|
Chrome
|
203
228
|
Firefox
|
204
229
|
Opera
|
@@ -3,15 +3,12 @@
|
|
3
3
|
esc: true
|
4
4
|
close: true
|
5
5
|
modal: false
|
6
|
-
|
6
|
+
klass: ''
|
7
7
|
cancelText: 'Cancel'
|
8
8
|
cancelClass: 'btn'
|
9
9
|
submitText: 'Ok'
|
10
10
|
submitClass: 'btn'
|
11
11
|
|
12
|
-
html = "<div id='lazy_overlay'><div id='lazybox'><a id='lazy_close' href=''></a><div id='lazy_body'></div></div></div>"
|
13
|
-
box = overlay = close = null
|
14
|
-
|
15
12
|
$.lazybox = (html, options) -> $.lazybox.show(html, options)
|
16
13
|
|
17
14
|
$.extend $.lazybox,
|
@@ -20,23 +17,22 @@
|
|
20
17
|
show: (content, options) ->
|
21
18
|
options = init(options)
|
22
19
|
$('#lazy_body').html(content)
|
23
|
-
|
24
|
-
close.addClass('visible') if options.close && !box.hasClass('visible')
|
20
|
+
$('#lazy_overlay').addClass('active')
|
25
21
|
|
26
|
-
close: ->
|
22
|
+
close: -> $('#lazy_overlay').removeClass()
|
27
23
|
|
28
24
|
confirm: (element) ->
|
29
25
|
options = $.extend defaults, $.lazybox.settings
|
30
26
|
message = element.data('confirm')
|
31
|
-
return true
|
27
|
+
return true unless message
|
32
28
|
$.lazybox.show('<p>'+message+'</p><div class="lazy_buttons"></div>', { klass: 'confirm' })
|
33
29
|
element.clone().attr('class', options.submitClass).removeAttr('data-confirm').text(options.submitText).appendTo('.lazy_buttons')
|
34
30
|
$('.lazy_buttons').append(' ')
|
35
|
-
$('<
|
31
|
+
$('<button>', { text: options.cancelText, 'class': 'cancel ' + options.cancelClass }).appendTo('.lazy_buttons')
|
36
32
|
return false
|
37
33
|
|
38
34
|
$.fn.lazybox = (options) ->
|
39
|
-
$(document).on 'click',
|
35
|
+
$(document).on 'click', @.selector, (e) ->
|
40
36
|
a = $(e.currentTarget)
|
41
37
|
href = a.attr('href')
|
42
38
|
imagesRegexp = new RegExp('\\.(png|jpg|jpeg|gif)(\\?.*)?$', 'i')
|
@@ -53,25 +49,15 @@
|
|
53
49
|
|
54
50
|
init = (options) ->
|
55
51
|
options = $.extend {}, defaults, $.lazybox.settings, options
|
56
|
-
$('
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
if options.closeImg then close.addClass('img') else close.removeClass('img')
|
64
|
-
else
|
65
|
-
close.removeClass()
|
66
|
-
if options.modal
|
67
|
-
overlay.unbind()
|
68
|
-
else
|
69
|
-
overlay.bind 'click', (e) ->
|
70
|
-
$.lazybox.close() if e.target == @
|
71
|
-
$(document).keyup (e) -> $.lazybox.close() if e.keyCode == 27 and options.esc
|
72
|
-
box.on 'click', '#lazy_close, .lazy_buttons a.cancel', (e) ->
|
73
|
-
$.lazybox.close()
|
74
|
-
e.preventDefault()
|
52
|
+
$('#lazybox').attr('class', options.klass)
|
53
|
+
$('#lazy_close').toggleClass('visible', options.close)
|
54
|
+
$('#lazy_overlay').one 'click', $.lazybox.close unless options.modal
|
55
|
+
$(document).on 'keyup.lazy', (e) ->
|
56
|
+
if e.keyCode == 27 and options.esc
|
57
|
+
$.lazybox.close()
|
58
|
+
$(document).off('keyup.lazy')
|
75
59
|
return options
|
76
60
|
|
77
61
|
) jQuery
|
62
|
+
|
63
|
+
$(document).on 'click', '#lazy_close, .lazy_buttons .cancel', $.lazybox.close
|
@@ -0,0 +1,96 @@
|
|
1
|
+
// Generated by CoffeeScript 1.4.0
|
2
|
+
(function() {
|
3
|
+
|
4
|
+
(function($) {
|
5
|
+
var defaults, init;
|
6
|
+
defaults = {
|
7
|
+
esc: true,
|
8
|
+
close: true,
|
9
|
+
modal: false,
|
10
|
+
klass: '',
|
11
|
+
cancelText: 'Cancel',
|
12
|
+
cancelClass: 'btn',
|
13
|
+
submitText: 'Ok',
|
14
|
+
submitClass: 'btn'
|
15
|
+
};
|
16
|
+
$.lazybox = function(html, options) {
|
17
|
+
return $.lazybox.show(html, options);
|
18
|
+
};
|
19
|
+
$.extend($.lazybox, {
|
20
|
+
settings: $.extend({}, defaults),
|
21
|
+
show: function(content, options) {
|
22
|
+
options = init(options);
|
23
|
+
$('#lazy_body').html(content);
|
24
|
+
return $('#lazy_overlay').addClass('active');
|
25
|
+
},
|
26
|
+
close: function() {
|
27
|
+
return $('#lazy_overlay').removeClass();
|
28
|
+
},
|
29
|
+
confirm: function(element) {
|
30
|
+
var message, options;
|
31
|
+
options = $.extend(defaults, $.lazybox.settings);
|
32
|
+
message = element.data('confirm');
|
33
|
+
if (!message) {
|
34
|
+
return true;
|
35
|
+
}
|
36
|
+
$.lazybox.show('<p>' + message + '</p><div class="lazy_buttons"></div>', {
|
37
|
+
klass: 'confirm'
|
38
|
+
});
|
39
|
+
element.clone().attr('class', options.submitClass).removeAttr('data-confirm').text(options.submitText).appendTo('.lazy_buttons');
|
40
|
+
$('.lazy_buttons').append(' ');
|
41
|
+
$('<button>', {
|
42
|
+
text: options.cancelText,
|
43
|
+
'class': 'cancel ' + options.cancelClass
|
44
|
+
}).appendTo('.lazy_buttons');
|
45
|
+
return false;
|
46
|
+
}
|
47
|
+
});
|
48
|
+
$.fn.lazybox = function(options) {
|
49
|
+
return $(document).on('click', this.selector, function(e) {
|
50
|
+
var a, href, imagesRegexp, img;
|
51
|
+
a = $(e.currentTarget);
|
52
|
+
href = a.attr('href');
|
53
|
+
imagesRegexp = new RegExp('\\.(png|jpg|jpeg|gif)(\\?.*)?$', 'i');
|
54
|
+
e.preventDefault();
|
55
|
+
if (href.match(imagesRegexp)) {
|
56
|
+
img = new Image();
|
57
|
+
img.onload = function(element) {
|
58
|
+
return $.lazybox.show(img, options);
|
59
|
+
};
|
60
|
+
return $(img).attr({
|
61
|
+
'class': 'lazy-img',
|
62
|
+
src: href
|
63
|
+
});
|
64
|
+
} else {
|
65
|
+
return $.ajax({
|
66
|
+
url: href,
|
67
|
+
success: function(data) {
|
68
|
+
return $.lazybox.show(data, options);
|
69
|
+
},
|
70
|
+
error: function() {
|
71
|
+
return $.lazybox.close();
|
72
|
+
}
|
73
|
+
});
|
74
|
+
}
|
75
|
+
});
|
76
|
+
};
|
77
|
+
return init = function(options) {
|
78
|
+
options = $.extend({}, defaults, $.lazybox.settings, options);
|
79
|
+
$('#lazybox').attr('class', options.klass);
|
80
|
+
$('#lazy_close').toggleClass('visible', options.close);
|
81
|
+
if (!options.modal) {
|
82
|
+
$('#lazy_overlay').one('click', $.lazybox.close);
|
83
|
+
}
|
84
|
+
$(document).on('keyup.lazy', function(e) {
|
85
|
+
if (e.keyCode === 27 && options.esc) {
|
86
|
+
$.lazybox.close();
|
87
|
+
return $(document).off('keyup.lazy');
|
88
|
+
}
|
89
|
+
});
|
90
|
+
return options;
|
91
|
+
};
|
92
|
+
})(jQuery);
|
93
|
+
|
94
|
+
$(document).on('click', '#lazy_close, .lazy_buttons .cancel', $.lazybox.close);
|
95
|
+
|
96
|
+
}).call(this);
|
@@ -1,61 +1,77 @@
|
|
1
|
-
$
|
2
|
-
$
|
3
|
-
$lazy-
|
1
|
+
$lazy-transition: .3s !default;
|
2
|
+
$lazy-z-index: 1000 !default;
|
3
|
+
$lazy-overlay: rgba(black, .7) !default;
|
4
|
+
$lazy-bg: white !default;
|
5
|
+
$lazy-border: 1px solid #ccc !default;
|
6
|
+
$lazy-shadow: 0 1px 5px #333 !default;
|
7
|
+
$lazy-padding: 20px !default;
|
8
|
+
$lazy-start: scale(.7) !default;
|
9
|
+
$lazy-end: scale(1) !default;
|
10
|
+
$lazy-close: '×' !default;
|
4
11
|
|
5
12
|
#lazy_overlay {
|
6
13
|
visibility: hidden;
|
7
14
|
z-index: $lazy-z-index;
|
8
|
-
background:
|
9
|
-
bottom:
|
10
|
-
left:
|
15
|
+
background: $lazy-overlay;
|
16
|
+
bottom: 0;
|
17
|
+
left: 0;
|
11
18
|
position: fixed;
|
12
|
-
right:
|
13
|
-
top:
|
19
|
+
right: 0;
|
20
|
+
top: 0;
|
14
21
|
opacity: 0;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
justify-content: center;
|
25
|
-
&.top { align-items: flex-start; }
|
26
|
-
&.top #lazybox {
|
27
|
-
border-top-right-radius: 0;
|
28
|
-
border-top-left-radius: 0;
|
22
|
+
transition: opacity $lazy-transition, visibility $lazy-transition;
|
23
|
+
&.active {
|
24
|
+
visibility: visible;
|
25
|
+
opacity: 1;
|
26
|
+
+ #lazybox {
|
27
|
+
visibility: visible;
|
28
|
+
transform: translate(-50%, -50%) $lazy-end;
|
29
|
+
opacity: 1;
|
30
|
+
}
|
29
31
|
}
|
30
32
|
}
|
31
33
|
|
32
34
|
#lazybox {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
visibility: hidden;
|
36
|
+
opacity: 0;
|
37
|
+
top: 50%;
|
38
|
+
left: 50%;
|
39
|
+
transform: translate(-50%, -50%) $lazy-start;
|
40
|
+
background-color: $lazy-bg;
|
41
|
+
border: $lazy-border;
|
42
|
+
box-shadow: $lazy-shadow;
|
43
|
+
padding: $lazy-padding;
|
44
|
+
position: fixed;
|
45
|
+
box-sizing: border-box;
|
46
|
+
z-index: $lazy-z-index + 1;
|
47
|
+
overflow: auto;
|
48
|
+
max-height: 100vh;
|
49
|
+
max-width: 100vw;
|
50
|
+
transition: opacity $lazy-transition ease-in-out, transform $lazy-transition ease-in-out, visibility $lazy-transition;
|
39
51
|
&.confirm { max-width: 300px; }
|
40
52
|
.lazy_buttons { margin-top: 15px; text-align: right; }
|
41
53
|
.lazy-img { display: block; }
|
42
|
-
#
|
54
|
+
#lazy_body {
|
55
|
+
position: relative;
|
56
|
+
}
|
43
57
|
}
|
44
58
|
|
45
|
-
|
59
|
+
#lazy_close {
|
60
|
+
border: none;
|
46
61
|
background: transparent;
|
47
62
|
color: gray;
|
48
63
|
cursor: pointer;
|
49
64
|
display: none;
|
50
65
|
font: bold 26px/100% Arial, Helvetica, sans-serif;
|
51
|
-
height: 25px;
|
52
66
|
position: absolute;
|
53
|
-
right:
|
67
|
+
right: 5px;
|
54
68
|
text-align: center;
|
55
69
|
top: 0;
|
56
|
-
|
57
|
-
|
58
|
-
|
70
|
+
padding: 0;
|
71
|
+
margin: 0;
|
72
|
+
transition: color .3s;
|
73
|
+
&:after { content: $lazy-close; }
|
59
74
|
&:hover { color: black; }
|
60
75
|
&.visible { display: block; }
|
76
|
+
&:focus { outline: none; }
|
61
77
|
}
|
data/lib/lazybox.rb
CHANGED
@@ -1,4 +1,23 @@
|
|
1
1
|
module Lazybox
|
2
|
+
|
2
3
|
class Engine < Rails::Engine
|
3
4
|
end
|
5
|
+
|
6
|
+
module Helper
|
7
|
+
|
8
|
+
def render_lazybox
|
9
|
+
content_tag(:div, '', id: :lazy_overlay, class: ('active' if content_for(:lazybox))) +
|
10
|
+
content_tag(:div, id: :lazybox) do
|
11
|
+
button_tag('', id: :lazy_close, class: :visible) +
|
12
|
+
content_tag(:div, id: :lazy_body) do
|
13
|
+
content_for(:lazybox)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
ActiveSupport.on_load(:action_view) do
|
22
|
+
include Lazybox::Helper
|
4
23
|
end
|
data/lib/lazybox/version.rb
CHANGED
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazybox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alex Galushka
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-12-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: jquery-rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
description: Lazybox is a jQuery-based, lightbox that can display entire remote pages,
|
@@ -37,33 +34,32 @@ extensions: []
|
|
37
34
|
extra_rdoc_files: []
|
38
35
|
files:
|
39
36
|
- README.md
|
40
|
-
- lib/lazybox/version.rb
|
41
|
-
- lib/lazybox.rb
|
42
|
-
- app/assets/stylesheets/lazybox.css.scss
|
43
37
|
- app/assets/javascripts/lazybox.js.coffee
|
38
|
+
- app/assets/javascripts/lazybox.js.js
|
39
|
+
- app/assets/stylesheets/lazybox.css.scss
|
40
|
+
- lib/lazybox.rb
|
41
|
+
- lib/lazybox/version.rb
|
44
42
|
homepage: https://github.com/galulex/lazybox
|
45
43
|
licenses: []
|
44
|
+
metadata: {}
|
46
45
|
post_install_message:
|
47
46
|
rdoc_options: []
|
48
47
|
require_paths:
|
49
48
|
- lib
|
50
49
|
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
50
|
requirements:
|
53
|
-
- -
|
51
|
+
- - ">="
|
54
52
|
- !ruby/object:Gem::Version
|
55
53
|
version: '0'
|
56
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
55
|
requirements:
|
59
|
-
- -
|
56
|
+
- - ">="
|
60
57
|
- !ruby/object:Gem::Version
|
61
58
|
version: '0'
|
62
59
|
requirements: []
|
63
60
|
rubyforge_project:
|
64
|
-
rubygems_version:
|
61
|
+
rubygems_version: 2.2.2
|
65
62
|
signing_key:
|
66
|
-
specification_version:
|
63
|
+
specification_version: 4
|
67
64
|
summary: Use LazyBox for popup windows with Rails
|
68
65
|
test_files: []
|
69
|
-
has_rdoc:
|