phlex-rails 2.0.0.rc2 → 2.0.0
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/README.md +2 -6
- data/lib/generators/phlex/component/component_generator.rb +7 -3
- data/lib/generators/phlex/install/install_generator.rb +5 -36
- data/lib/generators/phlex/view/view_generator.rb +6 -2
- data/lib/phlex/rails/buffered.rb +9 -12
- data/lib/phlex/rails/buffered_checkbox_builder.rb +0 -4
- data/lib/phlex/rails/buffered_form_builder.rb +0 -64
- data/lib/phlex/rails/buffered_label_builder.rb +0 -3
- data/lib/phlex/rails/buffered_radio_button_builder.rb +0 -4
- data/lib/phlex/rails/csv.rb +4 -6
- data/lib/phlex/rails/helper_macros.rb +7 -8
- data/lib/phlex/rails/helpers/asset_url.rb +0 -1
- data/lib/phlex/rails/helpers/audio_path.rb +3 -0
- data/lib/phlex/rails/helpers/audio_tag.rb +1 -0
- data/lib/phlex/rails/helpers/audio_url.rb +1 -0
- data/lib/phlex/rails/helpers/auto_discovery_link_tag.rb +1 -0
- data/lib/phlex/rails/helpers/build_tag_values.rb +1 -0
- data/lib/phlex/rails/helpers/button_tag.rb +1 -0
- data/lib/phlex/rails/helpers/button_to.rb +1 -0
- data/lib/phlex/rails/helpers/check_box.rb +1 -0
- data/lib/phlex/rails/helpers/check_box_tag.rb +1 -0
- data/lib/phlex/rails/helpers/class_names.rb +1 -0
- data/lib/phlex/rails/helpers/collection_check_boxes.rb +1 -0
- data/lib/phlex/rails/helpers/collection_radio_buttons.rb +1 -0
- data/lib/phlex/rails/helpers/collection_select.rb +1 -0
- data/lib/phlex/rails/helpers/color_field.rb +1 -0
- data/lib/phlex/rails/helpers/color_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/compute_asset_extname.rb +1 -0
- data/lib/phlex/rails/helpers/compute_asset_host.rb +1 -0
- data/lib/phlex/rails/helpers/compute_asset_path.rb +1 -0
- data/lib/phlex/rails/helpers/content_for.rb +4 -2
- data/lib/phlex/rails/helpers/content_tag.rb +1 -0
- data/lib/phlex/rails/helpers/controller_name.rb +1 -0
- data/lib/phlex/rails/helpers/controller_path.rb +1 -0
- data/lib/phlex/rails/helpers/csp_meta_tag.rb +1 -0
- data/lib/phlex/rails/helpers/csrf_meta_tags.rb +1 -0
- data/lib/phlex/rails/helpers/current_cycle.rb +1 -0
- data/lib/phlex/rails/helpers/current_page.rb +1 -0
- data/lib/phlex/rails/helpers/cycle.rb +1 -0
- data/lib/phlex/rails/helpers/date_field.rb +1 -0
- data/lib/phlex/rails/helpers/date_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/date_select.rb +1 -0
- data/lib/phlex/rails/helpers/datetime_field.rb +1 -0
- data/lib/phlex/rails/helpers/datetime_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/datetime_local_field.rb +1 -0
- data/lib/phlex/rails/helpers/datetime_local_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/datetime_select.rb +1 -0
- data/lib/phlex/rails/helpers/debug.rb +1 -0
- data/lib/phlex/rails/helpers/default_url_options.rb +1 -0
- data/lib/phlex/rails/helpers/distance_of_time_in_words.rb +1 -0
- data/lib/phlex/rails/helpers/distance_of_time_in_words_to_now.rb +1 -0
- data/lib/phlex/rails/helpers/dom_class.rb +1 -0
- data/lib/phlex/rails/helpers/dom_id.rb +1 -0
- data/lib/phlex/rails/helpers/email_field.rb +1 -0
- data/lib/phlex/rails/helpers/email_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/error_message.rb +1 -0
- data/lib/phlex/rails/helpers/error_wrapping.rb +1 -0
- data/lib/phlex/rails/helpers/escape_once.rb +1 -0
- data/lib/phlex/rails/helpers/excerpt.rb +1 -0
- data/lib/phlex/rails/helpers/favicon_link_tag.rb +1 -0
- data/lib/phlex/rails/helpers/field_id.rb +1 -0
- data/lib/phlex/rails/helpers/field_name.rb +1 -0
- data/lib/phlex/rails/helpers/field_set_tag.rb +1 -0
- data/lib/phlex/rails/helpers/fields.rb +1 -0
- data/lib/phlex/rails/helpers/fields_for.rb +1 -0
- data/lib/phlex/rails/helpers/file_field.rb +1 -0
- data/lib/phlex/rails/helpers/file_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/flash.rb +1 -0
- data/lib/phlex/rails/helpers/font_path.rb +1 -0
- data/lib/phlex/rails/helpers/font_url.rb +1 -0
- data/lib/phlex/rails/helpers/form_authenticity_token.rb +8 -0
- data/lib/phlex/rails/helpers/form_for.rb +1 -0
- data/lib/phlex/rails/helpers/form_tag.rb +1 -0
- data/lib/phlex/rails/helpers/form_with.rb +1 -0
- data/lib/phlex/rails/helpers/grouped_collection_select.rb +1 -0
- data/lib/phlex/rails/helpers/grouped_options_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/hidden_field.rb +1 -0
- data/lib/phlex/rails/helpers/hidden_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/highlight.rb +1 -0
- data/lib/phlex/rails/helpers/image_path.rb +1 -0
- data/lib/phlex/rails/helpers/image_submit_tag.rb +1 -0
- data/lib/phlex/rails/helpers/image_tag.rb +1 -0
- data/lib/phlex/rails/helpers/image_url.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_import_module_tag.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_importmap_tags.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_include_tag.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_path.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_tag.rb +1 -0
- data/lib/phlex/rails/helpers/javascript_url.rb +1 -0
- data/lib/phlex/rails/helpers/l.rb +1 -0
- data/lib/phlex/rails/helpers/label.rb +1 -0
- data/lib/phlex/rails/helpers/label_tag.rb +3 -0
- data/lib/phlex/rails/helpers/link_to.rb +1 -0
- data/lib/phlex/rails/helpers/link_to_if.rb +1 -0
- data/lib/phlex/rails/helpers/link_to_unless.rb +1 -0
- data/lib/phlex/rails/helpers/link_to_unless_current.rb +1 -0
- data/lib/phlex/rails/helpers/localize.rb +1 -0
- data/lib/phlex/rails/helpers/mail_to.rb +1 -0
- data/lib/phlex/rails/helpers/month_field.rb +1 -0
- data/lib/phlex/rails/helpers/month_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/notice.rb +1 -0
- data/lib/phlex/rails/helpers/number_field.rb +1 -0
- data/lib/phlex/rails/helpers/number_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/number_to_currency.rb +1 -0
- data/lib/phlex/rails/helpers/number_to_human.rb +1 -0
- data/lib/phlex/rails/helpers/number_to_human_size.rb +1 -0
- data/lib/phlex/rails/helpers/number_to_percentage.rb +1 -0
- data/lib/phlex/rails/helpers/number_to_phone.rb +1 -0
- data/lib/phlex/rails/helpers/number_with_delimiter.rb +1 -0
- data/lib/phlex/rails/helpers/number_with_precision.rb +1 -0
- data/lib/phlex/rails/helpers/object.rb +1 -0
- data/lib/phlex/rails/helpers/option_groups_from_collection_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/options_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/options_from_collection_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/password_field.rb +1 -0
- data/lib/phlex/rails/helpers/password_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_asset.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_audio.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_font.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_image.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_javascript.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_stylesheet.rb +1 -0
- data/lib/phlex/rails/helpers/path_to_video.rb +1 -0
- data/lib/phlex/rails/helpers/phone_field.rb +1 -0
- data/lib/phlex/rails/helpers/phone_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/phone_to.rb +1 -0
- data/lib/phlex/rails/helpers/pluralize.rb +1 -0
- data/lib/phlex/rails/helpers/preload_link_tag.rb +1 -0
- data/lib/phlex/rails/helpers/provide.rb +1 -0
- data/lib/phlex/rails/helpers/public_compute_asset_path.rb +1 -0
- data/lib/phlex/rails/helpers/radio_button.rb +1 -0
- data/lib/phlex/rails/helpers/radio_button_tag.rb +1 -0
- data/lib/phlex/rails/helpers/range_field.rb +1 -0
- data/lib/phlex/rails/helpers/range_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/request.rb +1 -0
- data/lib/phlex/rails/helpers/reset_cycle.rb +1 -0
- data/lib/phlex/rails/helpers/rich_text_area.rb +1 -0
- data/lib/phlex/rails/helpers/sanitize.rb +1 -0
- data/lib/phlex/rails/helpers/sanitize_css.rb +1 -0
- data/lib/phlex/rails/helpers/search_field.rb +1 -0
- data/lib/phlex/rails/helpers/search_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/select.rb +1 -0
- data/lib/phlex/rails/helpers/select_date.rb +1 -0
- data/lib/phlex/rails/helpers/select_datetime.rb +1 -0
- data/lib/phlex/rails/helpers/select_day.rb +1 -0
- data/lib/phlex/rails/helpers/select_hour.rb +1 -0
- data/lib/phlex/rails/helpers/select_minute.rb +1 -0
- data/lib/phlex/rails/helpers/select_month.rb +1 -0
- data/lib/phlex/rails/helpers/select_second.rb +1 -0
- data/lib/phlex/rails/helpers/select_tag.rb +1 -0
- data/lib/phlex/rails/helpers/select_time.rb +1 -0
- data/lib/phlex/rails/helpers/select_year.rb +1 -0
- data/lib/phlex/rails/helpers/simple_format.rb +1 -0
- data/lib/phlex/rails/helpers/sms_to.rb +1 -0
- data/lib/phlex/rails/helpers/strip_links.rb +1 -0
- data/lib/phlex/rails/helpers/strip_tags.rb +1 -0
- data/lib/phlex/rails/helpers/stylesheet_link_tag.rb +1 -0
- data/lib/phlex/rails/helpers/stylesheet_path.rb +1 -0
- data/lib/phlex/rails/helpers/stylesheet_url.rb +1 -0
- data/lib/phlex/rails/helpers/submit_tag.rb +1 -0
- data/lib/phlex/rails/helpers/tag.rb +3 -3
- data/lib/phlex/rails/helpers/telephone_field.rb +1 -0
- data/lib/phlex/rails/helpers/telephone_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/text_area.rb +1 -0
- data/lib/phlex/rails/helpers/text_area_tag.rb +1 -0
- data/lib/phlex/rails/helpers/text_field.rb +1 -0
- data/lib/phlex/rails/helpers/text_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/time_ago_in_words.rb +1 -0
- data/lib/phlex/rails/helpers/time_field.rb +1 -0
- data/lib/phlex/rails/helpers/time_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/time_select.rb +1 -0
- data/lib/phlex/rails/helpers/time_tag.rb +1 -0
- data/lib/phlex/rails/helpers/time_zone_options_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/time_zone_select.rb +1 -0
- data/lib/phlex/rails/helpers/token_list.rb +1 -0
- data/lib/phlex/rails/helpers/translate.rb +3 -1
- data/lib/phlex/rails/helpers/truncate.rb +2 -7
- data/lib/phlex/rails/helpers/turbo_frame_tag.rb +1 -0
- data/lib/phlex/rails/helpers/turbo_include_tags.rb +1 -0
- data/lib/phlex/rails/helpers/turbo_refresh_method_tag.rb +1 -0
- data/lib/phlex/rails/helpers/turbo_refresh_scroll_tag.rb +1 -0
- data/lib/phlex/rails/helpers/turbo_refreshes_with.rb +1 -0
- data/lib/phlex/rails/helpers/turbo_stream.rb +3 -2
- data/lib/phlex/rails/helpers/turbo_stream_from.rb +1 -0
- data/lib/phlex/rails/helpers/url_field.rb +1 -0
- data/lib/phlex/rails/helpers/url_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/url_for.rb +1 -0
- data/lib/phlex/rails/helpers/url_options.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_asset.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_audio.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_font.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_image.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_javascript.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_stylesheet.rb +1 -0
- data/lib/phlex/rails/helpers/url_to_video.rb +1 -0
- data/lib/phlex/rails/helpers/utf8_enforcer_tag.rb +1 -0
- data/lib/phlex/rails/helpers/video_path.rb +1 -0
- data/lib/phlex/rails/helpers/video_tag.rb +1 -0
- data/lib/phlex/rails/helpers/video_url.rb +1 -0
- data/lib/phlex/rails/helpers/week_field.rb +1 -0
- data/lib/phlex/rails/helpers/week_field_tag.rb +1 -0
- data/lib/phlex/rails/helpers/weekday_options_for_select.rb +1 -0
- data/lib/phlex/rails/helpers/weekday_select.rb +1 -0
- data/lib/phlex/rails/helpers/word_wrap.rb +1 -0
- data/lib/phlex/rails/helpers.rb +1 -0
- data/lib/phlex/rails/html.rb +7 -4
- data/lib/phlex/rails/layout.rb +5 -5
- data/lib/phlex/rails/sgml.rb +113 -72
- data/lib/phlex/rails/streaming.rb +2 -3
- data/lib/phlex/rails/svg.rb +12 -0
- data/lib/phlex/rails/unbuffered.rb +1 -2
- data/lib/phlex/rails/version.rb +1 -1
- data/lib/phlex/rails.rb +16 -14
- metadata +12 -11
- data/lib/phlex/rails/helper_finder.rb +0 -13
- data/lib/phlex/rails/testing.rb +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 99afebaac03dab652e1ebfa7b1037d2fa650ac46af545ac97a96c2ff1fcf36d9
|
|
4
|
+
data.tar.gz: a2fddfa82b2f9cdb3fcc4ee9c2e7f97e6925ee9a47ffe8eec3b5b40c1f81f127
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aa23e9efa3d071729eec9e6589971b5ade4644f13d98402b94f398cc045e9b6293c55069f605b7647b5b08ba05b9a44f3a7236530b0c8f3ddd618305cdc1f501
|
|
7
|
+
data.tar.gz: 5715fed7d4983d3411bde34ebc35f35a3c99f1314efa348f547c945a557b26dfd6b682dd34e3098c634a34150ff9454e434c2bf041f2c45634493d4f90e76830
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# Phlex Rails
|
|
2
2
|
|
|
3
3
|
Phlex is a framework that lets you compose web views in pure Ruby.
|
|
4
4
|
|
|
@@ -20,8 +20,4 @@ Maintaining a library is a lot of work. If your company benefits from this work
|
|
|
20
20
|
|
|
21
21
|
### Security 🚨
|
|
22
22
|
|
|
23
|
-
If you
|
|
24
|
-
|
|
25
|
-
### Thanks 🙏
|
|
26
|
-
|
|
27
|
-
Thanks [Logology](https://www.logology.co) for sponsoring our logo.
|
|
23
|
+
If you suspect you may have found a security vulnerability, please do not open a public issue or pull request. Instead, please [send us a private advisory](https://github.com/phlex-ruby/phlex/security/advisories/new).
|
|
@@ -4,9 +4,13 @@ module Phlex::Generators
|
|
|
4
4
|
class ComponentGenerator < ::Rails::Generators::NamedBase
|
|
5
5
|
source_root File.expand_path("templates", __dir__)
|
|
6
6
|
|
|
7
|
-
def
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
def create_component
|
|
8
|
+
template "component.rb.erb", File.join(
|
|
9
|
+
destination_root,
|
|
10
|
+
"app/components",
|
|
11
|
+
class_path,
|
|
12
|
+
"#{file_name}.rb"
|
|
13
|
+
)
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
end
|
|
@@ -4,47 +4,16 @@ module Phlex::Generators
|
|
|
4
4
|
class InstallGenerator < ::Rails::Generators::Base
|
|
5
5
|
source_root File.expand_path("templates", __dir__)
|
|
6
6
|
|
|
7
|
-
APPLICATION_CONFIGURATION_PATH = Rails.root.join("config/application.rb")
|
|
8
|
-
|
|
9
|
-
def configure_tailwind
|
|
10
|
-
if tailwind_configuration_path
|
|
11
|
-
insert_into_file tailwind_configuration_path, after: "content: [" do
|
|
12
|
-
"\n './app/views/**/*.rb', // Phlex views" \
|
|
13
|
-
"\n './app/components/**/*.rb', // Phlex components" \
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def create_application_component
|
|
19
|
-
template "base_component.rb.erb", Rails.root.join("app/components/base.rb")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def create_application_view
|
|
23
|
-
template "base_view.rb.erb", Rails.root.join("app/views/base.rb")
|
|
24
|
-
end
|
|
25
|
-
|
|
26
7
|
def create_initializer
|
|
27
|
-
template "phlex.rb.erb",
|
|
8
|
+
template "phlex.rb.erb", File.join(destination_root, "config/initializers/phlex.rb")
|
|
28
9
|
end
|
|
29
10
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def tailwind_configuration_path
|
|
33
|
-
if tailwind_configuration_files.any?
|
|
34
|
-
Pathname.new(
|
|
35
|
-
tailwind_configuration_files.first,
|
|
36
|
-
)
|
|
37
|
-
end
|
|
11
|
+
def create_base_component
|
|
12
|
+
template "base_component.rb.erb", File.join(destination_root, "app/components/base.rb")
|
|
38
13
|
end
|
|
39
14
|
|
|
40
|
-
def
|
|
41
|
-
|
|
42
|
-
[
|
|
43
|
-
"#{Rails.root}/tailwind.config.js",
|
|
44
|
-
"#{Rails.root}/app/**/tailwind.config.js",
|
|
45
|
-
"#{Rails.root}/config/**/tailwind.config.js",
|
|
46
|
-
],
|
|
47
|
-
)
|
|
15
|
+
def create_base_view
|
|
16
|
+
template "base_view.rb.erb", File.join(destination_root, "app/views/base.rb")
|
|
48
17
|
end
|
|
49
18
|
end
|
|
50
19
|
end
|
|
@@ -5,8 +5,12 @@ module Phlex::Generators
|
|
|
5
5
|
source_root File.expand_path("templates", __dir__)
|
|
6
6
|
|
|
7
7
|
def create_view
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
template "view.rb.erb", File.join(
|
|
9
|
+
destination_root,
|
|
10
|
+
"app/views",
|
|
11
|
+
class_path,
|
|
12
|
+
"#{file_name}.rb"
|
|
13
|
+
)
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
end
|
data/lib/phlex/rails/buffered.rb
CHANGED
|
@@ -3,12 +3,9 @@
|
|
|
3
3
|
require "forwardable"
|
|
4
4
|
|
|
5
5
|
module Phlex::Rails
|
|
6
|
-
# A decorator that buffers all missing method calls and captures the blocks passed to them.
|
|
7
|
-
# @api private
|
|
8
6
|
class Buffered < BasicObject
|
|
9
7
|
extend ::Forwardable
|
|
10
8
|
|
|
11
|
-
# @api private
|
|
12
9
|
def self.define_builder_yielding_method(method_name, builder)
|
|
13
10
|
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
|
14
11
|
# frozen_string_literal: true
|
|
@@ -16,10 +13,10 @@ module Phlex::Rails
|
|
|
16
13
|
def #{method_name}(*args, **kwargs, &block)
|
|
17
14
|
output = if block
|
|
18
15
|
@object.#{method_name}(*args, **kwargs) { |builder|
|
|
19
|
-
@
|
|
16
|
+
@component.capture do
|
|
20
17
|
yield(
|
|
21
18
|
::#{builder.name}.new(builder,
|
|
22
|
-
|
|
19
|
+
component: @component
|
|
23
20
|
)
|
|
24
21
|
)
|
|
25
22
|
end
|
|
@@ -30,7 +27,7 @@ module Phlex::Rails
|
|
|
30
27
|
|
|
31
28
|
case output
|
|
32
29
|
when ::ActiveSupport::SafeBuffer
|
|
33
|
-
@
|
|
30
|
+
@component.raw(output)
|
|
34
31
|
end
|
|
35
32
|
|
|
36
33
|
nil
|
|
@@ -38,10 +35,9 @@ module Phlex::Rails
|
|
|
38
35
|
RUBY
|
|
39
36
|
end
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
def initialize(object, view:)
|
|
38
|
+
def initialize(object, component:)
|
|
43
39
|
@object = object
|
|
44
|
-
@
|
|
40
|
+
@component = component
|
|
45
41
|
end
|
|
46
42
|
|
|
47
43
|
def respond_to_missing?(...)
|
|
@@ -50,13 +46,14 @@ module Phlex::Rails
|
|
|
50
46
|
|
|
51
47
|
def method_missing(*, **, &block)
|
|
52
48
|
output = if block
|
|
53
|
-
@object.public_send(*, **) { |*a| @
|
|
49
|
+
@object.public_send(*, **) { |*a| @component.capture(*a, &block) }
|
|
54
50
|
else
|
|
55
51
|
@object.public_send(*, **)
|
|
56
52
|
end
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
case output
|
|
55
|
+
when ::ActiveSupport::SafeBuffer
|
|
56
|
+
@component.raw(output)
|
|
60
57
|
end
|
|
61
58
|
|
|
62
59
|
nil
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Phlex::Rails
|
|
4
|
-
# @api private
|
|
5
4
|
class BufferedFormBuilder < Buffered
|
|
6
|
-
# @!method field_id(...)
|
|
7
|
-
# @!method field_name(...)
|
|
8
|
-
# @!method id(...)
|
|
9
|
-
# @!method multipart=(value)
|
|
10
|
-
# @!method to_model(...)
|
|
11
|
-
# @!method to_partial_path(...)
|
|
12
5
|
def_delegators :@object,
|
|
13
6
|
:to_model,
|
|
14
7
|
:to_partial_path,
|
|
@@ -33,67 +26,10 @@ module Phlex::Rails
|
|
|
33
26
|
:convert_to_model,
|
|
34
27
|
:model_name_from_record_or_class
|
|
35
28
|
|
|
36
|
-
# @!method button(...)
|
|
37
|
-
# @!method check_box(...)
|
|
38
|
-
# @!method collection_select(...)
|
|
39
|
-
# @!method color_field(...)
|
|
40
|
-
# @!method date_field(...)
|
|
41
|
-
# @!method date_select(...)
|
|
42
|
-
# @!method datetime_field(...)
|
|
43
|
-
# @!method datetime_local_field(...)
|
|
44
|
-
# @!method datetime_select(...)
|
|
45
|
-
# @!method email_field(...)
|
|
46
|
-
# @!method file_field(...)
|
|
47
|
-
# @!method grouped_collection_select(...)
|
|
48
|
-
# @!method hidden_field(...)
|
|
49
|
-
# @!method month_field(...)
|
|
50
|
-
# @!method number_field(...)
|
|
51
|
-
# @!method password_field(...)
|
|
52
|
-
# @!method phone_field(...)
|
|
53
|
-
# @!method radio_button(...)
|
|
54
|
-
# @!method range_field(...)
|
|
55
|
-
# @!method rich_text_area(...)
|
|
56
|
-
# @!method search_field(...)
|
|
57
|
-
# @!method select(...)
|
|
58
|
-
# @!method submit(...)
|
|
59
|
-
# @!method telephone_field(name, value = nil, **attributes)
|
|
60
|
-
# Outputs an input field of type <code>tel</code>.
|
|
61
|
-
# @param name [Symbol] the name of the field.
|
|
62
|
-
# @param value [String] the default value.
|
|
63
|
-
# @param attributes HTML attributes.
|
|
64
|
-
# @return [nil]
|
|
65
|
-
# @!method text_area(...)
|
|
66
|
-
# @!method text_field(...)
|
|
67
|
-
# @!method time_field(...)
|
|
68
|
-
# @!method time_select(...)
|
|
69
|
-
# @!method time_zone_select(...)
|
|
70
|
-
# @!method url_field(...)
|
|
71
|
-
# @!method week_field(...)
|
|
72
|
-
# @!method weekday_select(...)
|
|
73
|
-
|
|
74
|
-
# @!method label(...)
|
|
75
|
-
# @yield [builder]
|
|
76
|
-
# @yieldparam builder [Phlex::Rails::BufferedLabelBuilder]
|
|
77
29
|
define_builder_yielding_method :label, ::Phlex::Rails::BufferedLabelBuilder
|
|
78
|
-
|
|
79
|
-
# @!method fields(...)
|
|
80
|
-
# @yield [builder]
|
|
81
|
-
# @yieldparam builder [Phlex::Rails::BufferedFormBuilder]
|
|
82
30
|
define_builder_yielding_method :fields, ::Phlex::Rails::BufferedFormBuilder
|
|
83
|
-
|
|
84
|
-
# @!method fields_for(...)
|
|
85
|
-
# @yield [builder]
|
|
86
|
-
# @yieldparam builder [Phlex::Rails::BufferedFormBuilder]
|
|
87
31
|
define_builder_yielding_method :fields_for, ::Phlex::Rails::BufferedFormBuilder
|
|
88
|
-
|
|
89
|
-
# @!method collection_check_boxes(...)
|
|
90
|
-
# @yield [builder]
|
|
91
|
-
# @yieldparam builder [Phlex::Rails::BufferedCheckboxBuilder]
|
|
92
32
|
define_builder_yielding_method :collection_check_boxes, ::Phlex::Rails::BufferedCheckboxBuilder
|
|
93
|
-
|
|
94
|
-
# @!method collection_radio_buttons(...)
|
|
95
|
-
# @yield [builder]
|
|
96
|
-
# @yieldparam builder [Phlex::Rails::BufferedRadioButtonBuilder]
|
|
97
33
|
define_builder_yielding_method :collection_radio_buttons, ::Phlex::Rails::BufferedRadioButtonBuilder
|
|
98
34
|
end
|
|
99
35
|
end
|
data/lib/phlex/rails/csv.rb
CHANGED
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
module Phlex
|
|
4
4
|
module Rails
|
|
5
5
|
module CSV
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return super unless collection.arel.orders.empty?
|
|
6
|
+
def each_item(&)
|
|
7
|
+
return super unless ActiveRecord::Relation === collection
|
|
8
|
+
return super unless collection.arel.orders.empty?
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
end
|
|
10
|
+
collection.find_each(&)
|
|
13
11
|
end
|
|
14
12
|
end
|
|
15
13
|
end
|
|
@@ -8,9 +8,9 @@ module Phlex::Rails::HelperMacros
|
|
|
8
8
|
|
|
9
9
|
def #{method_name}(*args, **kwargs, &block)
|
|
10
10
|
output = if block
|
|
11
|
-
|
|
11
|
+
view_context.#{method_name}(*args, **kwargs) { capture(&block) }
|
|
12
12
|
else
|
|
13
|
-
|
|
13
|
+
view_context.#{method_name}(*args, **kwargs)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
raw(output)
|
|
@@ -25,32 +25,31 @@ module Phlex::Rails::HelperMacros
|
|
|
25
25
|
|
|
26
26
|
def #{method_name}(*args, **kwargs, &block)
|
|
27
27
|
if block
|
|
28
|
-
|
|
28
|
+
view_context.#{method_name}(*args, **kwargs) { capture(&block) }
|
|
29
29
|
else
|
|
30
|
-
|
|
30
|
+
view_context.#{method_name}(*args, **kwargs)
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
RUBY
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
# @api private
|
|
37
36
|
def register_builder_yielding_helper(method_name, builder)
|
|
38
37
|
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
|
39
38
|
# frozen_string_literal: true
|
|
40
39
|
|
|
41
40
|
def #{method_name}(*args, **kwargs)
|
|
42
41
|
output = if block_given?
|
|
43
|
-
|
|
42
|
+
view_context.#{method_name}(*args, **kwargs) { |form|
|
|
44
43
|
capture do
|
|
45
44
|
yield(
|
|
46
45
|
#{builder.name}.new(form,
|
|
47
|
-
|
|
46
|
+
component: self
|
|
48
47
|
)
|
|
49
48
|
)
|
|
50
49
|
end
|
|
51
50
|
}
|
|
52
51
|
else
|
|
53
|
-
|
|
52
|
+
view_context.#{method_name}(*args, **kwargs)
|
|
54
53
|
end
|
|
55
54
|
|
|
56
55
|
raw(output)
|
|
@@ -3,5 +3,8 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::AudioPath
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# Computes the path to an audio asset in the public audios directory.
|
|
7
|
+
#
|
|
8
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-audio_path)
|
|
6
9
|
register_value_helper def audio_path(...) = nil
|
|
7
10
|
end
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::AutoDiscoveryLinkTag
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-auto_discovery_link_tag)
|
|
6
7
|
register_output_helper def auto_discovery_link_tag(...) = nil
|
|
7
8
|
end
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::CollectionCheckBoxes
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_check_boxes)
|
|
6
7
|
register_builder_yielding_helper def collection_check_boxes(...) = nil, Phlex::Rails::BufferedCheckboxBuilder
|
|
7
8
|
end
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::CollectionRadioButtons
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_radio_buttons)
|
|
6
7
|
register_builder_yielding_helper def collection_radio_buttons(...) = nil, Phlex::Rails::BufferedRadioButtonBuilder
|
|
7
8
|
end
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::CollectionSelect
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select)
|
|
6
7
|
register_output_helper def collection_select(...) = nil
|
|
7
8
|
end
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::ComputeAssetExtname
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_extname)
|
|
6
7
|
register_value_helper def compute_asset_extname(...) = nil
|
|
7
8
|
end
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
module Phlex::Rails::Helpers::ContentFor
|
|
4
4
|
extend Phlex::Rails::HelperMacros
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for)
|
|
8
7
|
register_value_helper def content_for(...) = nil
|
|
8
|
+
|
|
9
|
+
# [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for-3F)
|
|
10
|
+
register_value_helper def content_for?(...) = nil
|
|
9
11
|
end
|