render_turbo_stream 4.0.2 → 4.0.3
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: b7a06cc371f6543af918f87ee1d80f4c3e4c9640f10bc69b540d98ee1e5e7e20
|
4
|
+
data.tar.gz: 69112643c6597fc51fd669d48b467bebcf100bb690f3028775cd661b72ce1568
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8790ae754ac41af06d4d375fd205eae8316c0b05551eace0c3aabe56572f7e91cd505aa40d9671d6856339468342319564bd1feea1815011cc3c097af499838
|
7
|
+
data.tar.gz: 671730ab4d5df1918b05bd4a768336878f9d93a3cc0c43610359dd3847f85e7fd141cb6fbf99cfe6edae934afa247fa9fbb3db3d18106a02639b2a8b64478573
|
data/README.md
CHANGED
@@ -8,8 +8,6 @@ Defining templates like `(create|update).turbo_stream.haml` is a heavy mix of lo
|
|
8
8
|
|
9
9
|
For `:replace` actions, responses must be wrapped inside a `turbo_frame_tag` with a matching `target_id`. The gem will regex the content and wrap it by a `turbo_frame_tag` if necessary but not present. This way the matching `target_id` is only defined in one place. This check only happens on the first call after restarting the application in production and on every call if precompile assets is set to true in configs.
|
10
10
|
|
11
|
-
If the turbo stream action is `:replace' and the content is not wrapped by `turbo_frame_tag', the gem will wrap it. So the partial content is checked by regex. This check only happens on the first call after restarting the application in production and on every call if precompile assets is set to true in configs.
|
12
|
-
|
13
11
|
There are many different ways to handle **redirects** since turbo. Some details are handled here.
|
14
12
|
|
15
13
|
Execute [turbo_power](https://github.com/marcoroth/turbo_power) commands such as adding a css class to an html element, can be sent directly from the controller.
|
@@ -13,13 +13,16 @@
|
|
13
13
|
|
14
14
|
<% else %>
|
15
15
|
<% ctl = { partial: args[:partial], target_id: args[:target_id], action: args[:action] } %>
|
16
|
+
|
17
|
+
<% target_id = RenderTurboStream::Libs.target_to_target_id(args[:target]) %>
|
18
|
+
|
16
19
|
<% info = { target_id: args[:target_id], partial: args[:partial], locals: args[:locals] } %>
|
17
20
|
|
18
21
|
|
19
22
|
|
20
23
|
<% if args[:action].present? %>
|
21
24
|
<% Rails.logger.debug(" • render-turbo-stream #{args[:action].upcase} => #{info}") %>
|
22
|
-
<%= turbo_stream.send args[:action].to_sym,
|
25
|
+
<%= turbo_stream.send args[:action].to_sym, target_id do %>
|
23
26
|
<% if RenderTurboStream::CheckTemplate.new(partial: args[:partial], action: args[:action]).add_turbo_frame_tag? %>
|
24
27
|
<%= turbo_frame_tag RenderTurboStream::Libs.target_to_target_id(args[:target]) do %>
|
25
28
|
<%= render args[:partial], locals: args[:locals]&.symbolize_keys %>
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module RenderTurboStream
|
2
2
|
class CheckTemplate
|
3
3
|
|
4
|
-
AUTO_ADD_TURBO_FRAME_TAG_ON_ACTION = [:replace]
|
5
|
-
|
6
4
|
def initialize(partial: nil, template: nil, available_instance_variables: nil, action: nil)
|
7
5
|
if !partial && !template
|
8
6
|
raise 'missing attribute partial xor template'
|
@@ -69,7 +67,8 @@ module RenderTurboStream
|
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
72
|
-
|
70
|
+
conf = Rails.configuration.x.render_turbo_stream.auto_wrap_for_actions
|
71
|
+
if stack_level == 1 && conf.present? && conf.include?(@action.to_sym)
|
73
72
|
unless _code.match(/(turbo_frame_tag|turbo-frame)/)
|
74
73
|
@result[:add_turbo_frame_tag] = true
|
75
74
|
end
|
@@ -55,7 +55,7 @@ module RenderTurboStream
|
|
55
55
|
if_error_alerts,
|
56
56
|
add_notices,
|
57
57
|
add_alerts,
|
58
|
-
|
58
|
+
)
|
59
59
|
streams += flashes[:turbo_actions]
|
60
60
|
|
61
61
|
streams += libs.additional_actions(
|
@@ -124,7 +124,11 @@ module RenderTurboStream
|
|
124
124
|
elsif pr.is_a?(Hash)
|
125
125
|
props = pr.symbolize_keys
|
126
126
|
r = props
|
127
|
-
|
127
|
+
if props[:target_id].present?
|
128
|
+
r[:target] = RenderTurboStream::Libs.target_id_to_target(props[:target_id])
|
129
|
+
else
|
130
|
+
r[:target] = props[:target]
|
131
|
+
end
|
128
132
|
raise "Missing attribute :target in #{props}" if !props[:target].present?
|
129
133
|
r.delete(:target_id)
|
130
134
|
r[:action] = (props[:action].present? ? props[:action] : :replace)
|
@@ -150,7 +154,7 @@ module RenderTurboStream
|
|
150
154
|
|
151
155
|
# renders a partial to turbo_stream
|
152
156
|
|
153
|
-
def stream_partial(
|
157
|
+
def stream_partial(target_id, partial: nil, action: :replace, locals: {})
|
154
158
|
render_turbo_stream(
|
155
159
|
[
|
156
160
|
{
|