view_component_reflex 2.3.8 → 2.3.14

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: 54cdc12281c11a0b058eefe438c7b672e338997ffca8e5f6220a24c6da88e583
4
- data.tar.gz: f896c75ef8915be19a001fd9a176e44dc4f3124745cc31dc3813427de9326cb5
3
+ metadata.gz: 3ad19988c11a33e1cc66d09f768f2d74218db3c04e16c8625c4624ce5a223c9f
4
+ data.tar.gz: b994c4d403c7d24be9152f543f9b5e257f11405e8fd6d671921e28f3aaa61d2f
5
5
  SHA512:
6
- metadata.gz: 765f82d92616ae01862554996225495f8d629ede123422d4b3ca28a2cc3f048d0d57a0de79626b7cb737cce89bc037f91b9e8972ae7fa8b5e447fa8f243c3f45
7
- data.tar.gz: 93c25d2aeff681f0742a2eef636918a0a91574f6d8498274e05176b4906e87c8e2a3682effbb691d9bea679896d068725c72b3df4cd9a5f868054ea821b7c4f3
6
+ metadata.gz: b4bd5cf4fd21a5dad48247bc6bdc4cd3d149ae67851298a4ed43d747f80ebeb3447589711e16648b8d00fa823e43d18a378caea4d658d35673ac84bebb6a6050
7
+ data.tar.gz: 1d5c9965e17767d5c44f6f6b8034569232179008780a0a3f870bf848c81572c70ec747f6acc50579da86a9c16f80eba2d22cfb01037462626cc93d8f04fc5770
data/README.md CHANGED
@@ -245,8 +245,8 @@ end
245
245
 
246
246
  ## State
247
247
 
248
- By default, view_component_reflex stores component state in memory. You can optionally set the state adapter
249
- to use the session by changing `config.state_adapter` to `ViewComponentReflex::StateAdapter::Session`
248
+ By default (since version `2.3.2`), view_component_reflex stores component state in session. You can optionally set the state adapter
249
+ to use the memory by changing `config.state_adapter` to `ViewComponentReflex::StateAdapter::Memory`.
250
250
 
251
251
  ## Custom State Adapters
252
252
 
@@ -139,6 +139,10 @@ module ViewComponentReflex
139
139
  []
140
140
  end
141
141
 
142
+ # def receive_params(old_state, params)
143
+ # # no op
144
+ # end
145
+
142
146
  def key
143
147
  # initialize session state
144
148
  if !stimulus_reflex? || ViewComponentReflex::Engine.state_adapter.state(request, @key).empty?
@@ -147,8 +151,12 @@ module ViewComponentReflex
147
151
 
148
152
  ViewComponentReflex::Engine.state_adapter.store_state(request, @key, new_state)
149
153
  ViewComponentReflex::Engine.state_adapter.store_state(request, "#{@key}_initial", new_state)
150
- else
154
+ elsif !@initialized_state
151
155
  initial_state = ViewComponentReflex::Engine.state_adapter.state(request, "#{@key}_initial")
156
+
157
+ # incoming_params = safe_instance_variables.each_with_object({}) { |var, obj| obj[var] = instance_variable_get(var) }
158
+ # receive_params(ViewComponentReflex::Engine.state_adapter.state(request, @key), incoming_params)
159
+
152
160
  ViewComponentReflex::Engine.state_adapter.state(request, @key).each do |k, v|
153
161
  instance_value = instance_variable_get(k)
154
162
  if permit_parameter?(initial_state[k], instance_value)
@@ -158,6 +166,7 @@ module ViewComponentReflex
158
166
  instance_variable_set(k, v)
159
167
  end
160
168
  end
169
+ @initialized_state = true
161
170
  end
162
171
  @key
163
172
  end
@@ -172,7 +181,7 @@ module ViewComponentReflex
172
181
  [
173
182
  :@view_context, :@lookup_context, :@view_renderer, :@view_flow,
174
183
  :@virtual_path, :@variant, :@current_template, :@output_buffer, :@key,
175
- :@helpers, :@controller, :@request, :@tag_builder
184
+ :@helpers, :@controller, :@request, :@tag_builder, :@initialized_state
176
185
  ]
177
186
  end
178
187
 
@@ -20,12 +20,18 @@ module ViewComponentReflex
20
20
  [primary_selector, *rest].each do |s|
21
21
  html = document.css(s)
22
22
  if html.present?
23
- morph(s, html.to_html)
23
+ cable_ready[channel.stream_name].morph(
24
+ selector: s,
25
+ html: html.inner_html,
26
+ children_only: true,
27
+ permanent_attribute_name: "data-reflex-permanent"
28
+ )
24
29
  end
25
30
  end
26
31
  else
27
32
  refresh_component!
28
33
  end
34
+ cable_ready.broadcast
29
35
  end
30
36
 
31
37
  def refresh_component!
@@ -35,7 +41,12 @@ module ViewComponentReflex
35
41
  end
36
42
  end
37
43
  document = Nokogiri::HTML(controller.render_component_to_string(component))
38
- morph selector, document.css(selector).inner_html
44
+ cable_ready[channel.stream_name].morph(
45
+ selector: selector,
46
+ children_only: true,
47
+ html: document.css(selector).inner_html,
48
+ permanent_attribute_name: "data-reflex-permanent"
49
+ )
39
50
  end
40
51
 
41
52
  def refresh_all!
@@ -57,7 +68,19 @@ module ViewComponentReflex
57
68
  !!name.to_proc
58
69
  end
59
70
 
71
+ # this is copied out of stimulus_reflex/reflex.rb and modified
72
+ def morph(selectors, html = "")
73
+ case selectors
74
+ when :nothing
75
+ @broadcaster = StimulusReflex::NothingBroadcaster.new(self)
76
+ else
77
+ @broadcaster = StimulusReflex::SelectorBroadcaster.new(self) unless broadcaster.selector?
78
+ broadcaster.morphs << [selectors, html]
79
+ end
80
+ end
81
+
60
82
  def method_missing(name, *args)
83
+ morph :nothing
61
84
  super unless respond_to_missing?(name)
62
85
  state.each do |k, v|
63
86
  component.instance_variable_set(k, v)
@@ -96,7 +119,7 @@ module ViewComponentReflex
96
119
  return @component if @component
97
120
  @component = component_class.allocate
98
121
  reflex = self
99
- exposed_methods = [:params, :request, :element, :refresh!, :refresh_all!, :stimulus_controller, :session, :prevent_refresh!, :selector, :stimulate]
122
+ exposed_methods = [:params, :request, :connection, :element, :refresh!, :refresh_all!, :stimulus_controller, :session, :prevent_refresh!, :selector, :stimulate]
100
123
  exposed_methods.each do |meth|
101
124
  @component.define_singleton_method(meth) do |*a|
102
125
  reflex.send(meth, *a)
@@ -1,3 +1,3 @@
1
1
  module ViewComponentReflex
2
- VERSION = '2.3.8'
2
+ VERSION = '2.3.14'
3
3
  end
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: view_component_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.8
4
+ version: 2.3.14
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-10-02 00:00:00.000000000 Z
11
+ date: 2020-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 6.0.3
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
- version: 6.0.3.1
19
+ version: '5.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: 6.0.3
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
- version: 6.0.3.1
29
+ version: '5.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: stimulus_reflex
35
35
  requirement: !ruby/object:Gem::Requirement