view_component_reflex 1.7.1 → 1.7.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 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