view_component_reflex 1.7.1 → 1.7.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: c34425ccfef14458d218da7f297859dee0d17e5b922c9cefc82059e13fa5af99
4
- data.tar.gz: 6f201ab4b1a8a84e08a840a3de07e117d4c4dc1095dbe8decaf2c6b70bed971f
3
+ metadata.gz: 7e5577d7e345a14f59567739802588506a300b2caa96bba74bd4f12a93752a04
4
+ data.tar.gz: be4d877d89d50555bde7f1ba929ef4fd5b1e60c72f2e7e921e33e2623574bfa7
5
5
  SHA512:
6
- metadata.gz: d4ee24cfffed38e1e6f72c33c6aaffb3d8573328759da2be6175d85bb1d2fa1973c5314aa79ec5ed94be73655f4c42929674cff964bcc7ee0bb600db331d08bf
7
- data.tar.gz: f89ab463f3aaf436da93442ac9c212b3552367ef6a10815180142a83022944a0188c2993cfe678bd3d579b8a5d334d3bb302a44bf29e480399daa6393b0159c3
6
+ metadata.gz: 60530d55c39126bd6be3d5be688f08cbe4e84e0b16e444334e438d99ec1a6b05a1f08c102407bea04b9c73ca5ace4bbb4ec013529810bc5363c6bd09e4224d70
7
+ data.tar.gz: ceebff13ff2407be15ad1d3e851f78130a7bec2d00cdd260bd3ed78d32ebfce596f1763d6608b822d628f0ce91b164a53c47ee2296755733ddac01888ae1bf8c
@@ -4,53 +4,21 @@ module ViewComponentReflex
4
4
  def init_stimulus_reflex
5
5
  klass = self
6
6
  @stimulus_reflex ||= Object.const_set(name + "Reflex", Class.new(StimulusReflex::Reflex) {
7
- def refresh!(*selectors)
7
+ def refresh!(primary_selector = "[data-controller~=\"#{stimulus_controller}\"][data-key=\"#{element.dataset[:key]}\"]", *selectors)
8
8
  save_state
9
-
10
- # If the component has instance variables omitted from state,
11
- # we can't render it to string from here because those instance
12
- # variables will be missing. In that case, set the selectors to the
13
- # default selector and manually morph the page
14
- if selectors.empty? && !component.can_render_to_string?
15
- selectors.push selector
16
- end
17
-
18
- # If we're just updating the component itself, we can
19
- # directly render it instead of rendering the entire page again
20
- if selectors.empty?
21
- refresh_component!
22
- else
23
- @channel.send :render_page_and_broadcast_morph, self, selectors, {
24
- "dataset" => element.dataset.to_h,
25
- "args" => [],
26
- "attrs" => element.attributes.to_h,
27
- "selectors" => ["body"],
28
- "target" => "#{self.class.name}##{method_name}",
29
- "url" => request.url,
30
- "permanent_attribute_name" => permanent_attribute_name
31
- }
32
- end
33
- end
34
-
35
- def refresh_component!
36
- # The component can't figure out the key when we render from here
37
- # Luckily we already know the key, so we can manually override it
38
- component.tap do |k|
39
- k.define_singleton_method(:key) do
40
- element.dataset[:key]
41
- end
42
- end
43
- html = controller.render_component_to_string(component)
44
- document = Nokogiri::HTML(html)
45
- morph selector, document.css("#{selector} > *").to_s
46
- end
47
-
48
- def selector
49
- "[data-controller~=\"#{stimulus_controller}\"][data-key=\"#{element.dataset[:key]}\"]"
9
+ @channel.send :render_page_and_broadcast_morph, self, [primary_selector, *selectors], {
10
+ "dataset" => element.dataset.to_h,
11
+ "args" => [],
12
+ "attrs" => element.attributes.to_h,
13
+ "selectors" => ["body"],
14
+ "target" => "#{self.class.name}##{method_name}",
15
+ "url" => request.url,
16
+ "permanent_attribute_name" => "data-reflex-permanent"
17
+ }
50
18
  end
51
19
 
52
20
  def refresh_all!
53
- morph :body, render_page(self)
21
+ refresh!("body")
54
22
  end
55
23
 
56
24
  # SR's delegate_call_to_reflex in channel.rb
@@ -64,6 +32,11 @@ module ViewComponentReflex
64
32
  !!name.to_proc
65
33
  end
66
34
 
35
+ before_reflex do |a|
36
+ a.send a.method_name
37
+ throw :abort
38
+ end
39
+
67
40
  def method_missing(name, *args)
68
41
  super unless respond_to_missing?(name)
69
42
  state.each do |k, v|
@@ -129,10 +102,6 @@ module ViewComponentReflex
129
102
  helpers.controller.instance_variable_get(:@stimulus_reflex)
130
103
  end
131
104
 
132
- def can_render_to_string?
133
- omitted_from_state.empty?
134
- end
135
-
136
105
  def component_controller(opts_or_tag = :div, opts = {}, &blk)
137
106
  self.class.init_stimulus_reflex
138
107
  init_key
@@ -1,3 +1,3 @@
1
1
  module ViewComponentReflex
2
- VERSION = '1.7.1'
2
+ VERSION = '1.7.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: view_component_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua LeBlanc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-05 00:00:00.000000000 Z
11
+ date: 2020-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,28 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 3.3.0.pre0
39
+ version: '0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 3.3.0.pre0
46
+ version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: view_component
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 2.13.0
53
+ version: '0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 2.13.0
60
+ version: '0'
61
61
  description: Allow stimulus reflexes in a view component
62
62
  email:
63
63
  - joshleblanc94@gmail.com