crazy_render 2.1.1 → 2.1.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 +4 -4
- data/README.md +17 -2
- data/app/views/render_async/_render_async.html.erb +2 -0
- data/app/views/render_async/_request_jquery.js.erb +5 -0
- data/app/views/render_async/_request_vanilla.js.erb +7 -1
- data/lib/render_async/version.rb +1 -1
- data/lib/render_async/view_helper.rb +2 -0
- data/render_async.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d655d3e927b0bf1200f8cc91a060cf3bda0c470f30499cf737902413effcb59
|
4
|
+
data.tar.gz: 92095b148900d51966c0a5efb5df8fc050b0c6fafee1c57cf6ad51979d409c07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc6a5d5f9437ac0dab17c72de0e0e9dad9b5733252694e85257f7006923f8d5dd65266d2121724b9a2674d75e7b36eae552e96a20edb22dabad9e5cfdd1d7af0
|
7
|
+
data.tar.gz: 23bec3c584ac61302764348de08d58c22c6fdafb492b58249c7f7dd28dc6c6edf6a4b5b48e477fa9632c9823b38244fa9d91417f28e46803c54451e59ae6b078
|
data/README.md
CHANGED
@@ -252,6 +252,21 @@ it will show an [error message](#handling-errors) which you need to specify.
|
|
252
252
|
This can show useful when you know your requests often fail, and you don't want
|
253
253
|
to refresh the whole page just to retry them.
|
254
254
|
|
255
|
+
### Toggle event
|
256
|
+
|
257
|
+
```erb
|
258
|
+
<a href='#' id='detail-button'>detail</a>
|
259
|
+
<%= render_async comments_path, toggle: { selector: '#detail-button', event: :click } %>
|
260
|
+
```
|
261
|
+
|
262
|
+
With toggle element in placeholder
|
263
|
+
|
264
|
+
```erb
|
265
|
+
<%= render_async comments_path, toggle: { selector: '#detail-button', event: :click } do %>
|
266
|
+
<a href='#' id='detail-button'>detail</a>
|
267
|
+
<% end %>
|
268
|
+
```
|
269
|
+
|
255
270
|
### Polling
|
256
271
|
|
257
272
|
You can call `render_async` with interval argument. This will make render_async
|
@@ -267,8 +282,8 @@ This can be handy if you want to enable polling for a specific URL.
|
|
267
282
|
|
268
283
|
NOTE: By passing interval to `render_async`, initial container element
|
269
284
|
will remain in HTML tree, it will not be replaced with request response.
|
270
|
-
You can handle how that container element is rendered and its style by
|
271
|
-
[passing in an HTML element name](#passing-in-an-html-element-name) and
|
285
|
+
You can handle how that container element is rendered and its style by
|
286
|
+
[passing in an HTML element name](#passing-in-an-html-element-name) and
|
272
287
|
[HTML element class](#passing-in-a-container-class-name).
|
273
288
|
|
274
289
|
### Handling errors
|
@@ -15,6 +15,7 @@
|
|
15
15
|
method: method,
|
16
16
|
data: data,
|
17
17
|
event_name: event_name,
|
18
|
+
toggle: toggle,
|
18
19
|
headers: headers,
|
19
20
|
error_message: error_message,
|
20
21
|
error_event_name: error_event_name,
|
@@ -29,6 +30,7 @@
|
|
29
30
|
method: method,
|
30
31
|
data: data,
|
31
32
|
event_name: event_name,
|
33
|
+
toggle: toggle,
|
32
34
|
headers: headers,
|
33
35
|
error_message: error_message,
|
34
36
|
error_event_name: error_event_name,
|
@@ -81,6 +81,11 @@ if (window.jQuery) {
|
|
81
81
|
setInterval(_listener, <%= interval %>);
|
82
82
|
}
|
83
83
|
$(document).ready(_intervalFunction);
|
84
|
+
<% elsif toggle %>
|
85
|
+
$(document).on('<%= toggle[:event] %>', '<%= toggle[:selector]%>', function(event) {
|
86
|
+
event.preventDefault();
|
87
|
+
_listener();
|
88
|
+
});
|
84
89
|
<% else %>
|
85
90
|
$(document).ready(_listener);
|
86
91
|
<% end %>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
return;
|
5
5
|
}
|
6
6
|
<% end %>
|
7
|
-
|
7
|
+
|
8
8
|
var _listener = function(currentRetryCount) {
|
9
9
|
var request = new XMLHttpRequest();
|
10
10
|
var asyncRequest = true;
|
@@ -97,6 +97,12 @@
|
|
97
97
|
setInterval(_listener, <%= interval %>);
|
98
98
|
}
|
99
99
|
document.addEventListener("DOMContentLoaded", _intervalFunction);
|
100
|
+
<% elsif toggle %>
|
101
|
+
var selectors = document.querySelectorAll('<%= toggle[:selector] %>');
|
102
|
+
selectors.forEach(selector => selector.addEventListener('<%= toggle[:event] %>', function(event) {
|
103
|
+
event.preventDefault();
|
104
|
+
_listener();
|
105
|
+
}));
|
100
106
|
<% else %>
|
101
107
|
document.addEventListener("DOMContentLoaded", _listener);
|
102
108
|
<% end %>
|
data/lib/render_async/version.rb
CHANGED
@@ -22,6 +22,7 @@ module RenderAsync
|
|
22
22
|
container_id = options.delete(:container_id) || generate_container_id
|
23
23
|
container_class = options.delete(:container_class)
|
24
24
|
event_name = options.delete(:event_name)
|
25
|
+
toggle = options.delete(:toggle)
|
25
26
|
placeholder = capture(&placeholder) if block_given?
|
26
27
|
method = options.delete(:method) || 'GET'
|
27
28
|
data = options.delete(:data)
|
@@ -37,6 +38,7 @@ module RenderAsync
|
|
37
38
|
path: path,
|
38
39
|
html_options: options,
|
39
40
|
event_name: event_name,
|
41
|
+
toggle: toggle,
|
40
42
|
placeholder: placeholder,
|
41
43
|
method: method,
|
42
44
|
data: data,
|
data/render_async.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "crazy_render"
|
8
8
|
spec.version = RenderAsync::VERSION
|
9
9
|
spec.authors = ["ThanhKhoaIT", "Kasper Grubbe", "nikolalsvk"]
|
10
|
-
spec.email = ["
|
10
|
+
spec.email = ["ThanhKhoaIT@gmail.com"]
|
11
11
|
|
12
12
|
spec.summary = "Render parts of the page asynchronously with AJAX"
|
13
13
|
spec.description = "Load parts of your page through simple JavaScript and Rails pipeline"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crazy_render
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ThanhKhoaIT
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
version: 1.0.8
|
57
57
|
description: Load parts of your page through simple JavaScript and Rails pipeline
|
58
58
|
email:
|
59
|
-
-
|
59
|
+
- ThanhKhoaIT@gmail.com
|
60
60
|
executables: []
|
61
61
|
extensions: []
|
62
62
|
extra_rdoc_files: []
|