phlex-rails 2.0.2 → 2.1.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/generators/phlex/install/templates/phlex.rb.erb +2 -2
- data/lib/phlex/rails/buffered.rb +7 -43
- data/lib/phlex/rails/checkbox_builder.rb +10 -0
- data/lib/phlex/rails/decorator.rb +26 -0
- data/lib/phlex/rails/form_builder.rb +123 -0
- data/lib/phlex/rails/helper_macros.rb +4 -10
- data/lib/phlex/rails/helpers/collection_check_boxes.rb +1 -1
- data/lib/phlex/rails/helpers/collection_radio_buttons.rb +1 -1
- data/lib/phlex/rails/helpers/fields.rb +1 -1
- data/lib/phlex/rails/helpers/fields_for.rb +1 -1
- data/lib/phlex/rails/helpers/form_for.rb +1 -1
- data/lib/phlex/rails/helpers/form_with.rb +1 -1
- data/lib/phlex/rails/helpers/label.rb +1 -1
- data/lib/phlex/rails/label_builder.rb +6 -0
- data/lib/phlex/rails/radio_button_builder.rb +10 -0
- data/lib/phlex/rails/sgml/state.rb +20 -0
- data/lib/phlex/rails/sgml.rb +36 -31
- data/lib/phlex/rails/version.rb +1 -1
- data/lib/phlex/rails.rb +11 -9
- metadata +9 -11
- data/lib/phlex/rails/buffered_checkbox_builder.rb +0 -10
- data/lib/phlex/rails/buffered_form_builder.rb +0 -35
- data/lib/phlex/rails/buffered_label_builder.rb +0 -9
- data/lib/phlex/rails/buffered_radio_button_builder.rb +0 -10
- data/lib/phlex/rails/unbuffered.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10a23e91480332f073f0878f2ac0f0f2fa4ed528efd0d4ff23801e1ec707255c
|
4
|
+
data.tar.gz: 7858023562afee3a06e5c3ec902d3796c702b1217ed29a6b8b692ce838136489
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cbd67ad440ba398f12c6c4581e1b7edf0abf53697e7d1cf8a5511ef09524d837161ef49604e5476b385ac55d850aa56db3cd5e3cd4d77168b51439ac0ac8f6b
|
7
|
+
data.tar.gz: d067dc252a8c3474d2125e72e25fd619874067391d9924a5a6b71296825079ebcb94003df14261b5b4df356830ad56da1781ce18f11beeb2d7e46dea277a4e09
|
@@ -8,9 +8,9 @@ module Components
|
|
8
8
|
end
|
9
9
|
|
10
10
|
Rails.autoloaders.main.push_dir(
|
11
|
-
|
11
|
+
Rails.root.join("app/views"), namespace: Views
|
12
12
|
)
|
13
13
|
|
14
14
|
Rails.autoloaders.main.push_dir(
|
15
|
-
|
15
|
+
Rails.root.join("app/components"), namespace: Components
|
16
16
|
)
|
data/lib/phlex/rails/buffered.rb
CHANGED
@@ -1,40 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "forwardable"
|
4
|
-
|
5
3
|
module Phlex::Rails
|
6
4
|
class Buffered < BasicObject
|
7
|
-
extend ::Forwardable
|
8
|
-
|
9
|
-
def self.define_builder_yielding_method(method_name, builder)
|
10
|
-
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
11
|
-
# frozen_string_literal: true
|
12
|
-
|
13
|
-
def #{method_name}(*args, **kwargs, &block)
|
14
|
-
output = if block
|
15
|
-
@object.#{method_name}(*args, **kwargs) { |builder|
|
16
|
-
@component.capture do
|
17
|
-
yield(
|
18
|
-
::#{builder.name}.new(builder,
|
19
|
-
component: @component
|
20
|
-
)
|
21
|
-
)
|
22
|
-
end
|
23
|
-
}
|
24
|
-
else
|
25
|
-
@object.#{method_name}(*args, **kwargs)
|
26
|
-
end
|
27
|
-
|
28
|
-
case output
|
29
|
-
when ::ActiveSupport::SafeBuffer
|
30
|
-
@component.raw(output)
|
31
|
-
end
|
32
|
-
|
33
|
-
nil
|
34
|
-
end
|
35
|
-
RUBY
|
36
|
-
end
|
37
|
-
|
38
5
|
def initialize(object, component:)
|
39
6
|
@object = object
|
40
7
|
@component = component
|
@@ -45,18 +12,15 @@ module Phlex::Rails
|
|
45
12
|
end
|
46
13
|
|
47
14
|
def method_missing(*, **, &block)
|
48
|
-
|
49
|
-
@
|
15
|
+
if block
|
16
|
+
@component.raw(
|
17
|
+
@object.public_send(*, **) { |*a| @component.capture(*a, &block) }
|
18
|
+
)
|
50
19
|
else
|
51
|
-
@
|
20
|
+
@component.raw(
|
21
|
+
@object.public_send(*, **)
|
22
|
+
)
|
52
23
|
end
|
53
|
-
|
54
|
-
case output
|
55
|
-
when ::ActiveSupport::SafeBuffer
|
56
|
-
@component.raw(output)
|
57
|
-
end
|
58
|
-
|
59
|
-
nil
|
60
24
|
end
|
61
25
|
end
|
62
26
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Phlex::Rails::CheckboxBuilder < Phlex::Rails::Decorator
|
4
|
+
def text(...) = @object.text(...)
|
5
|
+
def value(...) = @object.value(...)
|
6
|
+
def object(...) = @object.object(...)
|
7
|
+
|
8
|
+
output def label(...) = nil
|
9
|
+
output def checkbox(...) = nil
|
10
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Phlex::Rails::Decorator < BasicObject
|
4
|
+
def self.output(method_name)
|
5
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
6
|
+
def #{method_name}(...)
|
7
|
+
@component.raw(
|
8
|
+
@object.#{method_name}(...)
|
9
|
+
)
|
10
|
+
end
|
11
|
+
RUBY
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(object, component:)
|
15
|
+
@object = object
|
16
|
+
@component = component
|
17
|
+
end
|
18
|
+
|
19
|
+
def respond_to_missing?(method_name, include_private = false)
|
20
|
+
@object.respond_to?(method_name, include_private)
|
21
|
+
end
|
22
|
+
|
23
|
+
def method_missing(...)
|
24
|
+
@object.public_send(...)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Phlex::Rails::FormBuilder < Phlex::Rails::Decorator
|
4
|
+
define_method :__caller_locations__, ::Object.instance_method(:caller_locations)
|
5
|
+
|
6
|
+
def id(...) = @object.id(...)
|
7
|
+
def to_model(...) = @object.to_model(...)
|
8
|
+
def field_id(...) = @object.field_id(...)
|
9
|
+
def field_name(...) = @object.field_name(...)
|
10
|
+
def to_partial_path(...) = @object.to_partial_path(...)
|
11
|
+
|
12
|
+
def multipart=(value)
|
13
|
+
@object.multipart = value
|
14
|
+
end
|
15
|
+
|
16
|
+
output def button(...) = nil
|
17
|
+
output def check_box(...) = nil
|
18
|
+
output def checkbox(...) = nil
|
19
|
+
output def collection_select(...) = nil
|
20
|
+
output def color_field(...) = nil
|
21
|
+
output def date_field(...) = nil
|
22
|
+
output def date_select(...) = nil
|
23
|
+
output def datetime_field(...) = nil
|
24
|
+
output def datetime_local_field(...) = nil
|
25
|
+
output def datetime_select(...) = nil
|
26
|
+
output def email_field(...) = nil
|
27
|
+
output def file_field(...) = nil
|
28
|
+
output def grouped_collection_select(...) = nil
|
29
|
+
output def hidden_field(...) = nil
|
30
|
+
output def month_field(...) = nil
|
31
|
+
output def number_field(...) = nil
|
32
|
+
output def password_field(...) = nil
|
33
|
+
output def phone_field(...) = nil
|
34
|
+
output def radio_button(...) = nil
|
35
|
+
output def range_field(...) = nil
|
36
|
+
output def rich_text_area(...) = nil
|
37
|
+
output def rich_textarea(...) = nil
|
38
|
+
output def search_field(...) = nil
|
39
|
+
output def select(...) = nil
|
40
|
+
output def submit(...) = nil
|
41
|
+
output def telephone_field(...) = nil
|
42
|
+
output def text_area(...) = nil
|
43
|
+
output def text_field(...) = nil
|
44
|
+
output def textarea(...) = nil
|
45
|
+
output def time_field(...) = nil
|
46
|
+
output def time_select(...) = nil
|
47
|
+
output def time_zone_select(...) = nil
|
48
|
+
output def url_field(...) = nil
|
49
|
+
output def week_field(...) = nil
|
50
|
+
output def weekday_select(...) = nil
|
51
|
+
|
52
|
+
def collection_check_boxes(*, **, &block)
|
53
|
+
output = if block
|
54
|
+
@object.collection_check_boxes(*, **) do |builder|
|
55
|
+
yield ::Phlex::Rails::CheckboxBuilder.new(builder, component: @component)
|
56
|
+
end
|
57
|
+
else
|
58
|
+
@object.collection_check_boxes(*, **)
|
59
|
+
end
|
60
|
+
|
61
|
+
@component.raw(output)
|
62
|
+
end
|
63
|
+
|
64
|
+
def collection_checkboxes(*, **, &block)
|
65
|
+
output = if block
|
66
|
+
@object.collection_checkboxes(*, **) do |builder|
|
67
|
+
yield ::Phlex::Rails::CheckboxBuilder.new(builder, component: @component)
|
68
|
+
end
|
69
|
+
else
|
70
|
+
@object.collection_checkboxes(*, **)
|
71
|
+
end
|
72
|
+
|
73
|
+
@component.raw(output)
|
74
|
+
end
|
75
|
+
|
76
|
+
def collection_radio_buttons(*, **, &block)
|
77
|
+
output = if block
|
78
|
+
@object.collection_radio_buttons(*, **) do |builder|
|
79
|
+
yield ::Phlex::Rails::RadioButtonBuilder.new(builder, component: @component)
|
80
|
+
end
|
81
|
+
else
|
82
|
+
@object.collection_radio_buttons(*, **)
|
83
|
+
end
|
84
|
+
|
85
|
+
@component.raw(output)
|
86
|
+
end
|
87
|
+
|
88
|
+
def fields(*, **, &block)
|
89
|
+
output = if block
|
90
|
+
@object.fields(*, **) do |builder|
|
91
|
+
yield ::Phlex::Rails::FormBuilder.new(builder, component: @component)
|
92
|
+
end
|
93
|
+
else
|
94
|
+
@object.fields(*, **)
|
95
|
+
end
|
96
|
+
|
97
|
+
@component.raw(output)
|
98
|
+
end
|
99
|
+
|
100
|
+
def fields_for(*, **, &block)
|
101
|
+
output = if block
|
102
|
+
@object.fields_for(*, **) do |builder|
|
103
|
+
yield ::Phlex::Rails::FormBuilder.new(builder, component: @component)
|
104
|
+
end
|
105
|
+
else
|
106
|
+
@object.fields_for(*, **)
|
107
|
+
end
|
108
|
+
|
109
|
+
@component.raw(output)
|
110
|
+
end
|
111
|
+
|
112
|
+
def label(*, **, &block)
|
113
|
+
output = if block
|
114
|
+
@object.label(*, **) do |builder|
|
115
|
+
yield ::Phlex::Rails::LabelBuilder.new(builder, component: @component)
|
116
|
+
end
|
117
|
+
else
|
118
|
+
@object.label(*, **)
|
119
|
+
end
|
120
|
+
|
121
|
+
@component.raw(output)
|
122
|
+
end
|
123
|
+
end
|
@@ -8,7 +8,7 @@ module Phlex::Rails::HelperMacros
|
|
8
8
|
|
9
9
|
def #{method_name}(*args, **kwargs, &block)
|
10
10
|
output = if block
|
11
|
-
view_context.#{method_name}(*args, **kwargs) { capture(&block) }
|
11
|
+
view_context.#{method_name}(*args, **kwargs) { |*args| capture(*args, &block) }
|
12
12
|
else
|
13
13
|
view_context.#{method_name}(*args, **kwargs)
|
14
14
|
end
|
@@ -25,7 +25,7 @@ module Phlex::Rails::HelperMacros
|
|
25
25
|
|
26
26
|
def #{method_name}(*args, **kwargs, &block)
|
27
27
|
if block
|
28
|
-
view_context.#{method_name}(*args, **kwargs) { capture(&block) }
|
28
|
+
view_context.#{method_name}(*args, **kwargs) { |*args| capture(*args, &block) }
|
29
29
|
else
|
30
30
|
view_context.#{method_name}(*args, **kwargs)
|
31
31
|
end
|
@@ -39,14 +39,8 @@ module Phlex::Rails::HelperMacros
|
|
39
39
|
|
40
40
|
def #{method_name}(*args, **kwargs)
|
41
41
|
output = if block_given?
|
42
|
-
view_context.#{method_name}(*args, **kwargs) { |
|
43
|
-
|
44
|
-
yield(
|
45
|
-
#{builder.name}.new(form,
|
46
|
-
component: self
|
47
|
-
)
|
48
|
-
)
|
49
|
-
end
|
42
|
+
view_context.#{method_name}(*args, **kwargs) { |builder|
|
43
|
+
yield #{builder.name}.new(builder, component: self)
|
50
44
|
}
|
51
45
|
else
|
52
46
|
view_context.#{method_name}(*args, **kwargs)
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::CollectionCheckBoxes
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_check_boxes)
|
7
|
-
register_builder_yielding_helper def collection_check_boxes(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def collection_check_boxes(...) = nil, Phlex::Rails::CheckboxBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::CollectionRadioButtons
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_radio_buttons)
|
7
|
-
register_builder_yielding_helper def collection_radio_buttons(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def collection_radio_buttons(...) = nil, Phlex::Rails::RadioButtonBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::Fields
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields)
|
7
|
-
register_builder_yielding_helper def fields(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def fields(...) = nil, Phlex::Rails::FormBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::FieldsFor
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for)
|
7
|
-
register_builder_yielding_helper def fields_for(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def fields_for(...) = nil, Phlex::Rails::FormBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::FormFor
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for)
|
7
|
-
register_builder_yielding_helper def form_for(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def form_for(...) = nil, Phlex::Rails::FormBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::FormWith
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_with)
|
7
|
-
register_builder_yielding_helper def form_with(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def form_with(...) = nil, Phlex::Rails::FormBuilder
|
8
8
|
end
|
@@ -4,5 +4,5 @@ module Phlex::Rails::Helpers::Label
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
5
5
|
|
6
6
|
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label)
|
7
|
-
register_builder_yielding_helper def label(...) = nil, Phlex::Rails::
|
7
|
+
register_builder_yielding_helper def label(...) = nil, Phlex::Rails::LabelBuilder
|
8
8
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Phlex::Rails::RadioButtonBuilder < Phlex::Rails::Decorator
|
4
|
+
def text(...) = @object.text(...)
|
5
|
+
def value(...) = @object.value(...)
|
6
|
+
def object(...) = @object.object(...)
|
7
|
+
|
8
|
+
output def label(...) = nil
|
9
|
+
output def radio_button(...) = nil
|
10
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Phlex::Rails::SGML::State
|
4
|
+
def buffer
|
5
|
+
@user_context[:capture_context]&.output_buffer&.raw_buffer || super
|
6
|
+
end
|
7
|
+
|
8
|
+
def around_capture
|
9
|
+
original_capturing = @capturing
|
10
|
+
original_fragments = @fragments
|
11
|
+
|
12
|
+
begin
|
13
|
+
@capturing = true
|
14
|
+
yield
|
15
|
+
ensure
|
16
|
+
@capturing = original_capturing
|
17
|
+
@fragments = original_fragments
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/phlex/rails/sgml.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Phlex::Rails::SGML
|
4
|
+
autoload :State, "phlex/rails/sgml/state"
|
5
|
+
|
4
6
|
def self.included(base)
|
5
7
|
base.extend ClassMethods
|
6
8
|
base.extend Phlex::Rails::HelperMacros
|
@@ -76,7 +78,7 @@ module Phlex::Rails::SGML
|
|
76
78
|
|
77
79
|
# If we’re rendered from view_component, we need to capture on the view_component context.
|
78
80
|
def capture_context
|
79
|
-
context[:
|
81
|
+
context[:capture_context]
|
80
82
|
end
|
81
83
|
|
82
84
|
def render(renderable = nil, &block)
|
@@ -86,25 +88,17 @@ module Phlex::Rails::SGML
|
|
86
88
|
when Class
|
87
89
|
return super if renderable < Phlex::SGML
|
88
90
|
when Enumerable
|
89
|
-
return super unless ActiveRecord::Relation === renderable
|
91
|
+
return super unless defined?(ActiveRecord::Relation) && ActiveRecord::Relation === renderable
|
90
92
|
when nil
|
91
93
|
return super
|
92
94
|
end
|
93
95
|
|
94
96
|
if renderable.respond_to?(:render_in) || renderable.respond_to?(:to_partial_path)
|
95
|
-
|
96
|
-
|
97
|
-
if yielded_args.length == 1 && defined?(ViewComponent::Base) && ViewComponent::Base === yielded_args[0]
|
98
|
-
capture(Phlex::Rails::Buffered.new(yielded_args[0], component: self), &block)
|
99
|
-
else
|
100
|
-
capture(*yielded_args, &block)
|
101
|
-
end
|
102
|
-
end
|
97
|
+
if block
|
98
|
+
raw capture_context.render(renderable) { |*a| capture(*a, &block) }
|
103
99
|
else
|
104
|
-
|
100
|
+
raw capture_context.render(renderable)
|
105
101
|
end
|
106
|
-
|
107
|
-
raw(output)
|
108
102
|
else
|
109
103
|
super
|
110
104
|
end
|
@@ -113,29 +107,28 @@ module Phlex::Rails::SGML
|
|
113
107
|
def render_in(view_context, &erb)
|
114
108
|
case view_context
|
115
109
|
when defined?(ViewComponent::Base) && ViewComponent::Base
|
116
|
-
|
117
|
-
|
118
|
-
view_component_context: view_context,
|
119
|
-
}
|
110
|
+
rails_view_context = view_context.helpers
|
111
|
+
capture_context = view_context
|
120
112
|
else
|
121
|
-
|
113
|
+
rails_view_context = view_context
|
114
|
+
capture_context = view_context
|
122
115
|
end
|
123
116
|
|
117
|
+
context = {
|
118
|
+
rails_view_context:,
|
119
|
+
capture_context:,
|
120
|
+
}
|
121
|
+
|
124
122
|
fragments = if (request = context[:rails_view_context].request) && (fragment_header = request.headers["X-Fragments"])
|
125
123
|
fragment_header.split(",").map(&:strip).presence
|
126
124
|
end
|
127
125
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
raw(view_context.capture(*args, &erb))
|
135
|
-
end
|
136
|
-
}.html_safe
|
137
|
-
else
|
138
|
-
call(context:, fragments:).html_safe
|
126
|
+
capture_context.capture do
|
127
|
+
if erb
|
128
|
+
call(context:, fragments:, &erb).html_safe
|
129
|
+
else
|
130
|
+
call(context:, fragments:).html_safe
|
131
|
+
end
|
139
132
|
end
|
140
133
|
end
|
141
134
|
|
@@ -143,8 +136,20 @@ module Phlex::Rails::SGML
|
|
143
136
|
# no-op (see https://github.com/ViewComponent/view_component/issues/2207)
|
144
137
|
end
|
145
138
|
|
146
|
-
def capture(
|
147
|
-
|
139
|
+
def capture(*args, &block)
|
140
|
+
if capture_context
|
141
|
+
return "" unless block
|
142
|
+
|
143
|
+
@_state.around_capture do
|
144
|
+
if args.length == 0
|
145
|
+
capture_context.capture { __yield_content__(&block) }
|
146
|
+
else
|
147
|
+
capture_context.capture(*args) { __yield_content_with_args__(*args, &block) }
|
148
|
+
end
|
149
|
+
end
|
150
|
+
else
|
151
|
+
super
|
152
|
+
end
|
148
153
|
end
|
149
154
|
|
150
155
|
def enable_cache_reloading?
|
data/lib/phlex/rails/version.rb
CHANGED
data/lib/phlex/rails.rb
CHANGED
@@ -7,19 +7,19 @@ module Phlex
|
|
7
7
|
class HelpersCalledBeforeRenderError < StandardError; end
|
8
8
|
|
9
9
|
autoload :Buffered, "phlex/rails/buffered"
|
10
|
-
autoload :
|
10
|
+
autoload :Decorator, "phlex/rails/decorator"
|
11
11
|
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
|
17
|
-
autoload :SGML, "phlex/rails/sgml"
|
18
|
-
autoload :HTML, "phlex/rails/html"
|
19
|
-
autoload :SVG, "phlex/rails/svg"
|
12
|
+
autoload :FormBuilder, "phlex/rails/form_builder"
|
13
|
+
autoload :LabelBuilder, "phlex/rails/label_builder"
|
14
|
+
autoload :CheckboxBuilder, "phlex/rails/checkbox_builder"
|
15
|
+
autoload :RadioButtonBuilder, "phlex/rails/radio_button_builder"
|
20
16
|
|
21
17
|
autoload :CSV, "phlex/rails/csv"
|
22
18
|
|
19
|
+
autoload :SVG, "phlex/rails/svg"
|
20
|
+
autoload :HTML, "phlex/rails/html"
|
21
|
+
autoload :SGML, "phlex/rails/sgml"
|
22
|
+
|
23
23
|
autoload :Helpers, "phlex/rails/helpers"
|
24
24
|
autoload :HelperMacros, "phlex/rails/helper_macros"
|
25
25
|
|
@@ -34,5 +34,7 @@ module Phlex
|
|
34
34
|
HTML.include(Phlex::Rails::HTML)
|
35
35
|
SVG.include(Phlex::Rails::SVG)
|
36
36
|
|
37
|
+
SGML::State.prepend(Phlex::Rails::SGML::State)
|
38
|
+
|
37
39
|
ActiveSupport::SafeBuffer.include(Phlex::SGML::SafeObject)
|
38
40
|
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phlex-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.1.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Drapper
|
8
8
|
- Will Cosgrove
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: phlex
|
@@ -68,11 +67,10 @@ files:
|
|
68
67
|
- lib/phlex-rails.rb
|
69
68
|
- lib/phlex/rails.rb
|
70
69
|
- lib/phlex/rails/buffered.rb
|
71
|
-
- lib/phlex/rails/
|
72
|
-
- lib/phlex/rails/buffered_form_builder.rb
|
73
|
-
- lib/phlex/rails/buffered_label_builder.rb
|
74
|
-
- lib/phlex/rails/buffered_radio_button_builder.rb
|
70
|
+
- lib/phlex/rails/checkbox_builder.rb
|
75
71
|
- lib/phlex/rails/csv.rb
|
72
|
+
- lib/phlex/rails/decorator.rb
|
73
|
+
- lib/phlex/rails/form_builder.rb
|
76
74
|
- lib/phlex/rails/helper_macros.rb
|
77
75
|
- lib/phlex/rails/helpers.rb
|
78
76
|
- lib/phlex/rails/helpers/action_cable_meta_tag.rb
|
@@ -275,12 +273,14 @@ files:
|
|
275
273
|
- lib/phlex/rails/helpers/with_output_buffer.rb
|
276
274
|
- lib/phlex/rails/helpers/word_wrap.rb
|
277
275
|
- lib/phlex/rails/html.rb
|
276
|
+
- lib/phlex/rails/label_builder.rb
|
278
277
|
- lib/phlex/rails/layout.rb
|
279
278
|
- lib/phlex/rails/partial.rb
|
279
|
+
- lib/phlex/rails/radio_button_builder.rb
|
280
280
|
- lib/phlex/rails/sgml.rb
|
281
|
+
- lib/phlex/rails/sgml/state.rb
|
281
282
|
- lib/phlex/rails/streaming.rb
|
282
283
|
- lib/phlex/rails/svg.rb
|
283
|
-
- lib/phlex/rails/unbuffered.rb
|
284
284
|
- lib/phlex/rails/version.rb
|
285
285
|
homepage: https://www.phlex.fun
|
286
286
|
licenses:
|
@@ -291,7 +291,6 @@ metadata:
|
|
291
291
|
changelog_uri: https://github.com/phlex-ruby/phlex-rails/releases
|
292
292
|
funding_uri: https://github.com/sponsors/joeldrapper
|
293
293
|
rubygems_mfa_required: 'true'
|
294
|
-
post_install_message:
|
295
294
|
rdoc_options: []
|
296
295
|
require_paths:
|
297
296
|
- lib
|
@@ -306,8 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
305
|
- !ruby/object:Gem::Version
|
307
306
|
version: '0'
|
308
307
|
requirements: []
|
309
|
-
rubygems_version: 3.
|
310
|
-
signing_key:
|
308
|
+
rubygems_version: 3.6.2
|
311
309
|
specification_version: 4
|
312
310
|
summary: A Phlex adapter for Rails
|
313
311
|
test_files: []
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Phlex::Rails
|
4
|
-
class BufferedFormBuilder < Buffered
|
5
|
-
def_delegators :@object,
|
6
|
-
:to_model,
|
7
|
-
:to_partial_path,
|
8
|
-
:options,
|
9
|
-
:id,
|
10
|
-
:is_a?,
|
11
|
-
:field_helpers,
|
12
|
-
:multipart=,
|
13
|
-
:field_name,
|
14
|
-
:index,
|
15
|
-
:multipart,
|
16
|
-
:multipart?,
|
17
|
-
:emitted_hidden_id?,
|
18
|
-
:field_id,
|
19
|
-
:options=,
|
20
|
-
:object=,
|
21
|
-
:object_name,
|
22
|
-
:field_helpers=,
|
23
|
-
:field_helpers?,
|
24
|
-
:object_name=,
|
25
|
-
:object,
|
26
|
-
:convert_to_model,
|
27
|
-
:model_name_from_record_or_class
|
28
|
-
|
29
|
-
define_builder_yielding_method :label, ::Phlex::Rails::BufferedLabelBuilder
|
30
|
-
define_builder_yielding_method :fields, ::Phlex::Rails::BufferedFormBuilder
|
31
|
-
define_builder_yielding_method :fields_for, ::Phlex::Rails::BufferedFormBuilder
|
32
|
-
define_builder_yielding_method :collection_check_boxes, ::Phlex::Rails::BufferedCheckboxBuilder
|
33
|
-
define_builder_yielding_method :collection_radio_buttons, ::Phlex::Rails::BufferedRadioButtonBuilder
|
34
|
-
end
|
35
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Phlex::Rails::Unbuffered
|
4
|
-
def initialize(component)
|
5
|
-
@component = component
|
6
|
-
end
|
7
|
-
|
8
|
-
def inspect
|
9
|
-
"Unbuffered(#{@component.inspect})"
|
10
|
-
end
|
11
|
-
|
12
|
-
def public_send(...)
|
13
|
-
@component.public_send(...)
|
14
|
-
end
|
15
|
-
|
16
|
-
def respond_to_missing?(...)
|
17
|
-
@component.respond_to?(...)
|
18
|
-
end
|
19
|
-
|
20
|
-
def method_missing(method_name, *, **, &erb)
|
21
|
-
component = @component
|
22
|
-
|
23
|
-
if component.respond_to?(method_name)
|
24
|
-
output = component.capture do
|
25
|
-
if erb
|
26
|
-
component.public_send(method_name, *, **) do |*a, **kw|
|
27
|
-
component.raw(
|
28
|
-
component.capture_context.capture(
|
29
|
-
*a,
|
30
|
-
**kw,
|
31
|
-
&erb
|
32
|
-
),
|
33
|
-
)
|
34
|
-
end
|
35
|
-
else # no erb block
|
36
|
-
component.public_send(method_name, *, **)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
else
|
40
|
-
super
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|