crazy_render 2.1.1 → 2.1.2

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
  SHA256:
3
- metadata.gz: '026829f89b13f1a4116afe26535f64173d1ececc30d9ffe2e9b01aa2996a902f'
4
- data.tar.gz: a78d31cf4c7f341b5b8579f8d6f68c3ac20ac9cdf72c1c9928f871fd13e75dae
3
+ metadata.gz: 8d655d3e927b0bf1200f8cc91a060cf3bda0c470f30499cf737902413effcb59
4
+ data.tar.gz: 92095b148900d51966c0a5efb5df8fc050b0c6fafee1c57cf6ad51979d409c07
5
5
  SHA512:
6
- metadata.gz: ad766fe22533ce4ff4e317079ceb45f67314ac38b19be97fd2b280920701d61bf9ef876ea9ab2522b074a47db90df09744c74d8608506856d63bba700712f5e2
7
- data.tar.gz: 978b6e6534e5f4105fb734121d2c9de5ae406f76921417478f9920db9a1ac063bfedbec86c83428988b2204fb42b508d3f83738d2f1839bb4d4f5b0149146e3d
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 %>
@@ -1,3 +1,3 @@
1
1
  module RenderAsync
2
- VERSION = "2.1.1".freeze
2
+ VERSION = "2.1.2".freeze
3
3
  end
@@ -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 = ["thanhkhoait@gmail.com"]
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.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
- - thanhkhoait@gmail.com
59
+ - ThanhKhoaIT@gmail.com
60
60
  executables: []
61
61
  extensions: []
62
62
  extra_rdoc_files: []