view_component_reflex 3.1.9 → 3.1.13.pre1

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: 8df0782e33267ea91ff1e99610107ee004cdec87947087750227907af88a3674
4
- data.tar.gz: 5f488b266c6ade0cc81317da9ed0cb3d08cb8680654aef045348b3809997c9f4
3
+ metadata.gz: f1a30942491401f78a741641c3b44ed305ea65c83a66f3579e38ffade53c298e
4
+ data.tar.gz: dfe5b05f7410074bd5510a0bf162a8afd24e7cbae059337131156bd057886411
5
5
  SHA512:
6
- metadata.gz: 281166ac7c1e2589d9b97733ad3edca6986720c87b239dd779c55529644bff5f8fad352a46abd43dc53c2e46947525d3517335a0621c8fa6478ad23767ef2b31
7
- data.tar.gz: dece5fcacf66ee99a5fb539b42bb37cd71904435851ac71e8804b5ed75f0d67b8473b4a7e25e288dfbf81299a9c9f1834c418241b3a3055042136d2308f3f4ff
6
+ metadata.gz: 5b93d76545cd97ecd8e2a4cfa7e2accdfddb44aaa54ff178dd9296fe33706ebc3c72833d7b8fe2fafc9a061550514ab054b46d4e2e0c02e50675400985a28cda
7
+ data.tar.gz: 7b03a1e65f5a436b0f6c2450228d80050ceaae24d942880ded1faf43468e47996bf6b6a3a252eb287016e5b1e4eb458693f8e1d96e192ec2292e0e88b316b8f4
data/README.md CHANGED
@@ -55,6 +55,22 @@ end
55
55
  <%= render(TodoComponent.with_collection(Todo.all)) %>
56
56
  ```
57
57
 
58
+ In case you're rendering a collection of empty models, use a UUID of some sort to address the correct component instance on your page:
59
+
60
+ ```ruby
61
+ class TodoComponent < ViewComponentReflex::Component
62
+ def initialize(todo:)
63
+ @todo = todo
64
+ end
65
+
66
+ def collection_key
67
+ @todo.id || SecureRandom.hex(16)
68
+ end
69
+ end
70
+ #
71
+ <%= render(TodoComponent.with_collection((0..5).map { Todo.new })) %>
72
+ ```
73
+
58
74
  ## API
59
75
 
60
76
  ### permit_parameter?(initial_param, new_params)
@@ -385,6 +401,31 @@ end
385
401
  ```
386
402
  Please use a different name to be able to save them to the session.
387
403
 
404
+ ## Foo Can't Be Dumped
405
+
406
+ If you are getting errors that e.g. MatchData, Singleton etc. can't be dumped, ensure that you do not set any instance variables in your components (or any class you inject into them, for that matter) that cannot be marshaled.
407
+
408
+ This can be easily remedied though, by providing a list of unmarshalable instance variables and overwriting `marshal_dump` and `marshal_load` (from [https://stackoverflow.com/a/32877159/4341756](https://stackoverflow.com/a/32877159/4341756)):
409
+
410
+ ```rb
411
+ class MarshalTest
412
+ UNMARSHALED_VARIABLES = [:@foo, :@bar]
413
+
414
+ def marshal_dump
415
+ instance_variables.reject{|m| UNMARSHALED_VARIABLES.include? m}.inject({}) do |vars, attr|
416
+ vars[attr] = instance_variable_get(attr)
417
+ vars
418
+ end
419
+ end
420
+
421
+ def marshal_load(vars)
422
+ vars.each do |attr, value|
423
+ instance_variable_set(attr, value) unless UNMARSHALED_VARIABLES.include?(attr)
424
+ end
425
+ end
426
+ end
427
+ ```
428
+
388
429
  ## Anycable
389
430
 
390
431
  @sebyx07 provided a solution to use anycable (https://github.com/joshleblanc/view_component_reflex/issues/23#issue-721786338)
@@ -22,7 +22,7 @@ module ViewComponentReflex
22
22
  if component&.respond_to?(:init_stimulus_reflex)
23
23
  component.init_stimulus_reflex
24
24
  else
25
- p "Tried to initialize view_component_reflex on #{component_name}, but it's not a view_component_reflex"
25
+ Rails.logger.info "Tried to initialize view_component_reflex on #{component_name}, but it's not a view_component_reflex"
26
26
  end
27
27
  receive_original(data)
28
28
  end
@@ -20,15 +20,17 @@ module ViewComponentReflex
20
20
  end
21
21
  if primary_selector
22
22
  prevent_refresh!
23
-
23
+
24
+ document = controller_document
24
25
  [primary_selector, *rest].each do |s|
25
- html = controller_document.css(s)
26
+ html = document.css(s)
26
27
  if html.present?
27
28
  CableReady::Channels.instance[stream].morph(
28
29
  selector: s,
29
30
  html: html.inner_html,
30
31
  children_only: true,
31
32
  permanent_attribute_name: "data-reflex-permanent",
33
+ reflex_id: reflex_id
32
34
  )
33
35
  end
34
36
  end
@@ -62,6 +64,7 @@ module ViewComponentReflex
62
64
  children_only: true,
63
65
  html: component_document.css(selector).inner_html,
64
66
  permanent_attribute_name: "data-reflex-permanent",
67
+ reflex_id: reflex_id
65
68
  )
66
69
  end
67
70
 
@@ -9,7 +9,6 @@ module ViewComponentReflex
9
9
  new_state.each do |k, v|
10
10
  state(request, key)[k] = v
11
11
  end
12
- p new_state
13
12
  store = request.session.instance_variable_get("@by")
14
13
  store.commit_session request, controller.response
15
14
  end
@@ -19,7 +18,6 @@ module ViewComponentReflex
19
18
  new_state.each do |k, v|
20
19
  request.session[key][k] = v
21
20
  end
22
- p new_state
23
21
  end
24
22
 
25
23
  def self.wrap_write_async
@@ -1,3 +1,3 @@
1
1
  module ViewComponentReflex
2
- VERSION = '3.1.9'
2
+ VERSION = '3.1.13.pre1'
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: 3.1.9
4
+ version: 3.1.13.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua LeBlanc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-29 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 3.4.1
39
+ version: 3.5.0.pre1
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.4.1
46
+ version: 3.5.0.pre1
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: view_component
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -108,11 +108,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - ">"
112
112
  - !ruby/object:Gem::Version
113
- version: '0'
113
+ version: 1.3.1
114
114
  requirements: []
115
- rubygems_version: 3.1.4
115
+ rubygems_version: 3.2.3
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: Allow stimulus reflexes in a view component