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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1a30942491401f78a741641c3b44ed305ea65c83a66f3579e38ffade53c298e
|
4
|
+
data.tar.gz: dfe5b05f7410074bd5510a0bf162a8afd24e7cbae059337131156bd057886411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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 =
|
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
|
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.
|
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-
|
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.
|
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.
|
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:
|
113
|
+
version: 1.3.1
|
114
114
|
requirements: []
|
115
|
-
rubygems_version: 3.
|
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
|