File tree 3 files changed +38
-47
lines changed 3 files changed +38
-47
lines changed Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ module ViewComponent
4
+ module ActionViewCompatibility
5
+ attr_accessor :top_level_parent
6
+
7
+ def children
8
+ @_children ||= [ ]
9
+ end
10
+
11
+ def set_output_buffer ( buf )
12
+ @output_buffer = buf
13
+ end
14
+
15
+ def output_buffer = ( buf )
16
+ if top_level_parent
17
+ top_level_parent . set_output_buffer_for_children ( buf )
18
+ else
19
+ set_output_buffer_for_children ( buf )
20
+ end
21
+ end
22
+
23
+ def set_output_buffer_for_children ( buf )
24
+ set_output_buffer ( buf )
25
+
26
+ children . each do |child |
27
+ child . set_output_buffer ( buf )
28
+ end
29
+ end
30
+ end
31
+ end
Original file line number Diff line number Diff line change 10
10
require "view_component/slotable_v2"
11
11
require "view_component/with_content_helper"
12
12
13
- class ActionView ::Base
14
- attr_reader :children
15
- attr_accessor :parent
16
-
17
- def _prepare_context
18
- @children = [ ]
19
- @parent = nil
20
-
21
- super
22
- end
23
-
24
- def set_output_buffer ( buf )
25
- @output_buffer = buf
26
- end
27
-
28
- def output_buffer = ( buf )
29
- if parent . nil?
30
- set_output_buffer_for_children ( buf )
31
- else
32
- top_level_parent . set_output_buffer_for_children ( buf )
33
- end
34
- end
35
-
36
- def top_level_parent
37
- return if parent . nil?
38
- return @_top_level_parent if defined? ( @_top_level_parent )
39
-
40
- @_top_level_parent = begin
41
- top_level = parent
42
-
43
- while top_level . parent
44
- top_level = top_level . parent
45
- end
46
-
47
- top_level
48
- end
49
- end
50
-
51
- def set_output_buffer_for_children ( buf )
52
- set_output_buffer ( buf )
53
-
54
- children . each do |child |
55
- child . set_output_buffer ( buf )
56
- end
57
- end
58
- end
59
-
60
13
module ViewComponent
61
14
class Base < ActionView ::Base
62
15
include ActiveSupport ::Configurable
Original file line number Diff line number Diff line change @@ -81,6 +81,13 @@ class Engine < Rails::Engine # :nodoc:
81
81
end
82
82
end
83
83
84
+ initializer "view_component.include_render_compatibility" do |app |
85
+ ActiveSupport . on_load ( :action_view ) do
86
+ require "view_component/action_view_compatibility"
87
+ ActionView ::Base . prepend ViewComponent ::ActionViewCompatibility
88
+ end
89
+ end
90
+
84
91
initializer "view_component.include_render_component" do |app |
85
92
next if Rails . version . to_f >= 6.1
86
93
You can’t perform that action at this time.
0 commit comments