voltron-flash 0.1.1 → 0.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
  SHA1:
3
- metadata.gz: 5def506009a6ae42bb7bbeb189e5262a8257bef7
4
- data.tar.gz: cb185dcedd211c8bfa1088cdc425d16e74f51861
3
+ metadata.gz: 0d659cb376f6d21612a62b40803e6abc7eaa21d6
4
+ data.tar.gz: f57c9abb3a446e306b8831d93d15fe54d80a9d01
5
5
  SHA512:
6
- metadata.gz: deb79607add7c0ba5a82a8557e78e1caf0bf55e33ecb6fbaa7c1fec41794b1714e03ba516aae13fd462778db1e6dced36bd5842382d069ebcf953e47bc85303b
7
- data.tar.gz: 73cacb5b7da4d052e92487995d11f8e94a384b4de2293ba6ae7996599e308856d3b0d688b973e72668c98f8276ced8109ce6c21dde15f280c168709831d92e0d
6
+ metadata.gz: 8a00c035cf0b05afe2429df810205743912893d281aa4f2ad0514b2b321048d16063e159de4c045034a13c6dcf085af553afaa0e0e82fbd83c1593f00a5965a2
7
+ data.tar.gz: 67c166c9edf0aa815e6503cfe9b3a4579cf7896a18d1b8f953760217dbecfe81f2b534c03b979229877f40aa1a71f4c0f4781a764010a0b1bf244cf15bda54b7
@@ -1,6 +1,8 @@
1
1
  //= require voltron
2
2
 
3
3
  Voltron.addModule('Flash', function(){
4
+ var _initialized = false;
5
+
4
6
  var _defaults = {
5
7
  class: '',
6
8
  bind: 'body',
@@ -18,9 +20,12 @@ Voltron.addModule('Flash', function(){
18
20
 
19
21
  return {
20
22
  initialize: function(){
21
- Voltron('Dispatch/addEventWatcher', 'click');
22
- this.on('click:close-alert', 'click:close-notice', 'click:close-warning', this.clear);
23
- this.addListener();
23
+ if(!_initialized){
24
+ _initialized = true;
25
+ Voltron('Dispatch/addEventWatcher', 'click');
26
+ this.on('click:close-alert', 'click:close-notice', 'click:close-warning', this.clear);
27
+ this.addListener();
28
+ }
24
29
  },
25
30
 
26
31
  setConfig: function(options){
@@ -1,16 +1,13 @@
1
1
  <% if flash.count > 0 %>
2
2
  <div id="flashes" class="<%= container_class %>">
3
3
  <% if Voltron.config.flash.group %>
4
-
5
4
  <% flash.each do |type,messages| %>
6
5
  <div class="flash <%= type %>">
7
6
  <p class="flash-message"><%= Array.wrap(messages).join("<br />").html_safe %></p>
8
7
  <button class="flash-close" type="button" id="close-<%= type %>" data-dispatch="click"></button>
9
8
  </div>
10
9
  <% end %>
11
-
12
10
  <% else %>
13
-
14
11
  <% flash.each do |type,messages| %>
15
12
  <% Array.wrap(messages).each do |message| %>
16
13
  <div class="flash <%= type %>">
@@ -19,7 +16,6 @@
19
16
  </div>
20
17
  <% end %>
21
18
  <% end %>
22
-
23
19
  <% end %>
24
20
  </div>
25
21
  <% end %>
@@ -1,16 +1,13 @@
1
1
  <% if flash.count > 0 %>
2
2
  <div id="flashes" class="<%= container_class %>">
3
3
  <% if Voltron.config.flash.group %>
4
-
5
4
  <% flash.each do |type,messages| %>
6
5
  <div class="flash <%= type %>">
7
6
  <p class="flash-message"><%= Array.wrap(messages).join("<br />").html_safe %></p>
8
7
  <button class="flash-close" type="button" id="close-<%= type %>" data-dispatch="click"></button>
9
8
  </div>
10
9
  <% end %>
11
-
12
10
  <% else %>
13
-
14
11
  <% flash.each do |type,messages| %>
15
12
  <% Array.wrap(messages).each do |message| %>
16
13
  <div class="flash <%= type %>">
@@ -19,7 +16,6 @@
19
16
  </div>
20
17
  <% end %>
21
18
  <% end %>
22
-
23
19
  <% end %>
24
20
  </div>
25
21
  <% end %>
data/lib/voltron/flash.rb CHANGED
@@ -17,7 +17,7 @@ module Voltron
17
17
  def flash!(**flashes)
18
18
  flashes.symbolize_keys.each do |type,messages|
19
19
  stored_flashes[type] ||= []
20
- stored_flashes[type] += Array.wrap(messages)
20
+ stored_flashes[type] << { ajax: flashes.delete(:ajax), messages: Array.wrap(messages) }
21
21
  end
22
22
  end
23
23
 
@@ -30,18 +30,16 @@ module Voltron
30
30
  # Before rendering, include any flash messages in flash.now,
31
31
  # so they will be available when the page is rendered
32
32
  def include_flash_now
33
- if !request.xhr?
34
- stored_flashes.each { |type,messages| flash.now[type] = messages }
35
- end
33
+ flash_hash(true).each { |type,messages| flash.now[type] = messages }
36
34
  end
37
35
 
38
36
  # If request is an ajax request, or we are redirecting, include flash messages
39
37
  # in the appropriate outlet, either response headers or `flash` itself
40
38
  def include_flash_later
41
- if request.xhr?
42
- response.headers[Voltron.config.flash.header] = stored_flashes.to_json
43
- elsif is_redirecting?
44
- stored_flashes.each { |type,messages| flash[type] = messages }
39
+ if is_redirecting?
40
+ flash_hash.each { |type,messages| flash[type] = messages }
41
+ elsif request.xhr?
42
+ response.headers[Voltron.config.flash.header] = flash_hash.to_json
45
43
  end
46
44
  end
47
45
 
@@ -49,6 +47,16 @@ module Voltron
49
47
  self.status == 302 || self.status == 301
50
48
  end
51
49
 
50
+ def flash_hash(rendering=false)
51
+ flashes = stored_flashes.map do |type,messages|
52
+ { type => messages.map do |f|
53
+ f[:messages] if !(f[:ajax] == false && request.xhr?) || (f[:ajax] == false && request.xhr? && rendering)
54
+ end.compact.flatten
55
+ }
56
+ end
57
+ flashes.reduce(Hash.new, :merge).reject { |k,v| v.blank? || k == :ajax }
58
+ end
59
+
52
60
  end
53
61
  end
54
62
 
@@ -1,5 +1,5 @@
1
1
  module Voltron
2
2
  module Flash
3
- VERSION = "0.1.1".freeze
3
+ VERSION = "0.1.2".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voltron-flash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Hainer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-12 00:00:00.000000000 Z
11
+ date: 2017-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -215,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
215
  version: '0'
216
216
  requirements: []
217
217
  rubyforge_project:
218
- rubygems_version: 2.5.1
218
+ rubygems_version: 2.6.6
219
219
  signing_key:
220
220
  specification_version: 4
221
221
  summary: Voltron library to more easily deal with flash messages