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.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -6
  3. data/lib/generators/phlex/component/component_generator.rb +7 -3
  4. data/lib/generators/phlex/install/install_generator.rb +5 -36
  5. data/lib/generators/phlex/view/view_generator.rb +6 -2
  6. data/lib/phlex/rails/buffered.rb +9 -12
  7. data/lib/phlex/rails/buffered_checkbox_builder.rb +0 -4
  8. data/lib/phlex/rails/buffered_form_builder.rb +0 -64
  9. data/lib/phlex/rails/buffered_label_builder.rb +0 -3
  10. data/lib/phlex/rails/buffered_radio_button_builder.rb +0 -4
  11. data/lib/phlex/rails/csv.rb +4 -6
  12. data/lib/phlex/rails/helper_macros.rb +7 -8
  13. data/lib/phlex/rails/helpers/asset_url.rb +0 -1
  14. data/lib/phlex/rails/helpers/audio_path.rb +3 -0
  15. data/lib/phlex/rails/helpers/audio_tag.rb +1 -0
  16. data/lib/phlex/rails/helpers/audio_url.rb +1 -0
  17. data/lib/phlex/rails/helpers/auto_discovery_link_tag.rb +1 -0
  18. data/lib/phlex/rails/helpers/build_tag_values.rb +1 -0
  19. data/lib/phlex/rails/helpers/button_tag.rb +1 -0
  20. data/lib/phlex/rails/helpers/button_to.rb +1 -0
  21. data/lib/phlex/rails/helpers/check_box.rb +1 -0
  22. data/lib/phlex/rails/helpers/check_box_tag.rb +1 -0
  23. data/lib/phlex/rails/helpers/class_names.rb +1 -0
  24. data/lib/phlex/rails/helpers/collection_check_boxes.rb +1 -0
  25. data/lib/phlex/rails/helpers/collection_radio_buttons.rb +1 -0
  26. data/lib/phlex/rails/helpers/collection_select.rb +1 -0
  27. data/lib/phlex/rails/helpers/color_field.rb +1 -0
  28. data/lib/phlex/rails/helpers/color_field_tag.rb +1 -0
  29. data/lib/phlex/rails/helpers/compute_asset_extname.rb +1 -0
  30. data/lib/phlex/rails/helpers/compute_asset_host.rb +1 -0
  31. data/lib/phlex/rails/helpers/compute_asset_path.rb +1 -0
  32. data/lib/phlex/rails/helpers/content_for.rb +4 -2
  33. data/lib/phlex/rails/helpers/content_tag.rb +1 -0
  34. data/lib/phlex/rails/helpers/controller_name.rb +1 -0
  35. data/lib/phlex/rails/helpers/controller_path.rb +1 -0
  36. data/lib/phlex/rails/helpers/csp_meta_tag.rb +1 -0
  37. data/lib/phlex/rails/helpers/csrf_meta_tags.rb +1 -0
  38. data/lib/phlex/rails/helpers/current_cycle.rb +1 -0
  39. data/lib/phlex/rails/helpers/current_page.rb +1 -0
  40. data/lib/phlex/rails/helpers/cycle.rb +1 -0
  41. data/lib/phlex/rails/helpers/date_field.rb +1 -0
  42. data/lib/phlex/rails/helpers/date_field_tag.rb +1 -0
  43. data/lib/phlex/rails/helpers/date_select.rb +1 -0
  44. data/lib/phlex/rails/helpers/datetime_field.rb +1 -0
  45. data/lib/phlex/rails/helpers/datetime_field_tag.rb +1 -0
  46. data/lib/phlex/rails/helpers/datetime_local_field.rb +1 -0
  47. data/lib/phlex/rails/helpers/datetime_local_field_tag.rb +1 -0
  48. data/lib/phlex/rails/helpers/datetime_select.rb +1 -0
  49. data/lib/phlex/rails/helpers/debug.rb +1 -0
  50. data/lib/phlex/rails/helpers/default_url_options.rb +1 -0
  51. data/lib/phlex/rails/helpers/distance_of_time_in_words.rb +1 -0
  52. data/lib/phlex/rails/helpers/distance_of_time_in_words_to_now.rb +1 -0
  53. data/lib/phlex/rails/helpers/dom_class.rb +1 -0
  54. data/lib/phlex/rails/helpers/dom_id.rb +1 -0
  55. data/lib/phlex/rails/helpers/email_field.rb +1 -0
  56. data/lib/phlex/rails/helpers/email_field_tag.rb +1 -0
  57. data/lib/phlex/rails/helpers/error_message.rb +1 -0
  58. data/lib/phlex/rails/helpers/error_wrapping.rb +1 -0
  59. data/lib/phlex/rails/helpers/escape_once.rb +1 -0
  60. data/lib/phlex/rails/helpers/excerpt.rb +1 -0
  61. data/lib/phlex/rails/helpers/favicon_link_tag.rb +1 -0
  62. data/lib/phlex/rails/helpers/field_id.rb +1 -0
  63. data/lib/phlex/rails/helpers/field_name.rb +1 -0
  64. data/lib/phlex/rails/helpers/field_set_tag.rb +1 -0
  65. data/lib/phlex/rails/helpers/fields.rb +1 -0
  66. data/lib/phlex/rails/helpers/fields_for.rb +1 -0
  67. data/lib/phlex/rails/helpers/file_field.rb +1 -0
  68. data/lib/phlex/rails/helpers/file_field_tag.rb +1 -0
  69. data/lib/phlex/rails/helpers/flash.rb +1 -0
  70. data/lib/phlex/rails/helpers/font_path.rb +1 -0
  71. data/lib/phlex/rails/helpers/font_url.rb +1 -0
  72. data/lib/phlex/rails/helpers/form_authenticity_token.rb +8 -0
  73. data/lib/phlex/rails/helpers/form_for.rb +1 -0
  74. data/lib/phlex/rails/helpers/form_tag.rb +1 -0
  75. data/lib/phlex/rails/helpers/form_with.rb +1 -0
  76. data/lib/phlex/rails/helpers/grouped_collection_select.rb +1 -0
  77. data/lib/phlex/rails/helpers/grouped_options_for_select.rb +1 -0
  78. data/lib/phlex/rails/helpers/hidden_field.rb +1 -0
  79. data/lib/phlex/rails/helpers/hidden_field_tag.rb +1 -0
  80. data/lib/phlex/rails/helpers/highlight.rb +1 -0
  81. data/lib/phlex/rails/helpers/image_path.rb +1 -0
  82. data/lib/phlex/rails/helpers/image_submit_tag.rb +1 -0
  83. data/lib/phlex/rails/helpers/image_tag.rb +1 -0
  84. data/lib/phlex/rails/helpers/image_url.rb +1 -0
  85. data/lib/phlex/rails/helpers/javascript_import_module_tag.rb +1 -0
  86. data/lib/phlex/rails/helpers/javascript_importmap_tags.rb +1 -0
  87. data/lib/phlex/rails/helpers/javascript_include_tag.rb +1 -0
  88. data/lib/phlex/rails/helpers/javascript_path.rb +1 -0
  89. data/lib/phlex/rails/helpers/javascript_tag.rb +1 -0
  90. data/lib/phlex/rails/helpers/javascript_url.rb +1 -0
  91. data/lib/phlex/rails/helpers/l.rb +1 -0
  92. data/lib/phlex/rails/helpers/label.rb +1 -0
  93. data/lib/phlex/rails/helpers/label_tag.rb +3 -0
  94. data/lib/phlex/rails/helpers/link_to.rb +1 -0
  95. data/lib/phlex/rails/helpers/link_to_if.rb +1 -0
  96. data/lib/phlex/rails/helpers/link_to_unless.rb +1 -0
  97. data/lib/phlex/rails/helpers/link_to_unless_current.rb +1 -0
  98. data/lib/phlex/rails/helpers/localize.rb +1 -0
  99. data/lib/phlex/rails/helpers/mail_to.rb +1 -0
  100. data/lib/phlex/rails/helpers/month_field.rb +1 -0
  101. data/lib/phlex/rails/helpers/month_field_tag.rb +1 -0
  102. data/lib/phlex/rails/helpers/notice.rb +1 -0
  103. data/lib/phlex/rails/helpers/number_field.rb +1 -0
  104. data/lib/phlex/rails/helpers/number_field_tag.rb +1 -0
  105. data/lib/phlex/rails/helpers/number_to_currency.rb +1 -0
  106. data/lib/phlex/rails/helpers/number_to_human.rb +1 -0
  107. data/lib/phlex/rails/helpers/number_to_human_size.rb +1 -0
  108. data/lib/phlex/rails/helpers/number_to_percentage.rb +1 -0
  109. data/lib/phlex/rails/helpers/number_to_phone.rb +1 -0
  110. data/lib/phlex/rails/helpers/number_with_delimiter.rb +1 -0
  111. data/lib/phlex/rails/helpers/number_with_precision.rb +1 -0
  112. data/lib/phlex/rails/helpers/object.rb +1 -0
  113. data/lib/phlex/rails/helpers/option_groups_from_collection_for_select.rb +1 -0
  114. data/lib/phlex/rails/helpers/options_for_select.rb +1 -0
  115. data/lib/phlex/rails/helpers/options_from_collection_for_select.rb +1 -0
  116. data/lib/phlex/rails/helpers/password_field.rb +1 -0
  117. data/lib/phlex/rails/helpers/password_field_tag.rb +1 -0
  118. data/lib/phlex/rails/helpers/path_to_asset.rb +1 -0
  119. data/lib/phlex/rails/helpers/path_to_audio.rb +1 -0
  120. data/lib/phlex/rails/helpers/path_to_font.rb +1 -0
  121. data/lib/phlex/rails/helpers/path_to_image.rb +1 -0
  122. data/lib/phlex/rails/helpers/path_to_javascript.rb +1 -0
  123. data/lib/phlex/rails/helpers/path_to_stylesheet.rb +1 -0
  124. data/lib/phlex/rails/helpers/path_to_video.rb +1 -0
  125. data/lib/phlex/rails/helpers/phone_field.rb +1 -0
  126. data/lib/phlex/rails/helpers/phone_field_tag.rb +1 -0
  127. data/lib/phlex/rails/helpers/phone_to.rb +1 -0
  128. data/lib/phlex/rails/helpers/pluralize.rb +1 -0
  129. data/lib/phlex/rails/helpers/preload_link_tag.rb +1 -0
  130. data/lib/phlex/rails/helpers/provide.rb +1 -0
  131. data/lib/phlex/rails/helpers/public_compute_asset_path.rb +1 -0
  132. data/lib/phlex/rails/helpers/radio_button.rb +1 -0
  133. data/lib/phlex/rails/helpers/radio_button_tag.rb +1 -0
  134. data/lib/phlex/rails/helpers/range_field.rb +1 -0
  135. data/lib/phlex/rails/helpers/range_field_tag.rb +1 -0
  136. data/lib/phlex/rails/helpers/request.rb +1 -0
  137. data/lib/phlex/rails/helpers/reset_cycle.rb +1 -0
  138. data/lib/phlex/rails/helpers/rich_text_area.rb +1 -0
  139. data/lib/phlex/rails/helpers/sanitize.rb +1 -0
  140. data/lib/phlex/rails/helpers/sanitize_css.rb +1 -0
  141. data/lib/phlex/rails/helpers/search_field.rb +1 -0
  142. data/lib/phlex/rails/helpers/search_field_tag.rb +1 -0
  143. data/lib/phlex/rails/helpers/select.rb +1 -0
  144. data/lib/phlex/rails/helpers/select_date.rb +1 -0
  145. data/lib/phlex/rails/helpers/select_datetime.rb +1 -0
  146. data/lib/phlex/rails/helpers/select_day.rb +1 -0
  147. data/lib/phlex/rails/helpers/select_hour.rb +1 -0
  148. data/lib/phlex/rails/helpers/select_minute.rb +1 -0
  149. data/lib/phlex/rails/helpers/select_month.rb +1 -0
  150. data/lib/phlex/rails/helpers/select_second.rb +1 -0
  151. data/lib/phlex/rails/helpers/select_tag.rb +1 -0
  152. data/lib/phlex/rails/helpers/select_time.rb +1 -0
  153. data/lib/phlex/rails/helpers/select_year.rb +1 -0
  154. data/lib/phlex/rails/helpers/simple_format.rb +1 -0
  155. data/lib/phlex/rails/helpers/sms_to.rb +1 -0
  156. data/lib/phlex/rails/helpers/strip_links.rb +1 -0
  157. data/lib/phlex/rails/helpers/strip_tags.rb +1 -0
  158. data/lib/phlex/rails/helpers/stylesheet_link_tag.rb +1 -0
  159. data/lib/phlex/rails/helpers/stylesheet_path.rb +1 -0
  160. data/lib/phlex/rails/helpers/stylesheet_url.rb +1 -0
  161. data/lib/phlex/rails/helpers/submit_tag.rb +1 -0
  162. data/lib/phlex/rails/helpers/tag.rb +3 -3
  163. data/lib/phlex/rails/helpers/telephone_field.rb +1 -0
  164. data/lib/phlex/rails/helpers/telephone_field_tag.rb +1 -0
  165. data/lib/phlex/rails/helpers/text_area.rb +1 -0
  166. data/lib/phlex/rails/helpers/text_area_tag.rb +1 -0
  167. data/lib/phlex/rails/helpers/text_field.rb +1 -0
  168. data/lib/phlex/rails/helpers/text_field_tag.rb +1 -0
  169. data/lib/phlex/rails/helpers/time_ago_in_words.rb +1 -0
  170. data/lib/phlex/rails/helpers/time_field.rb +1 -0
  171. data/lib/phlex/rails/helpers/time_field_tag.rb +1 -0
  172. data/lib/phlex/rails/helpers/time_select.rb +1 -0
  173. data/lib/phlex/rails/helpers/time_tag.rb +1 -0
  174. data/lib/phlex/rails/helpers/time_zone_options_for_select.rb +1 -0
  175. data/lib/phlex/rails/helpers/time_zone_select.rb +1 -0
  176. data/lib/phlex/rails/helpers/token_list.rb +1 -0
  177. data/lib/phlex/rails/helpers/translate.rb +3 -1
  178. data/lib/phlex/rails/helpers/truncate.rb +2 -7
  179. data/lib/phlex/rails/helpers/turbo_frame_tag.rb +1 -0
  180. data/lib/phlex/rails/helpers/turbo_include_tags.rb +1 -0
  181. data/lib/phlex/rails/helpers/turbo_refresh_method_tag.rb +1 -0
  182. data/lib/phlex/rails/helpers/turbo_refresh_scroll_tag.rb +1 -0
  183. data/lib/phlex/rails/helpers/turbo_refreshes_with.rb +1 -0
  184. data/lib/phlex/rails/helpers/turbo_stream.rb +3 -2
  185. data/lib/phlex/rails/helpers/turbo_stream_from.rb +1 -0
  186. data/lib/phlex/rails/helpers/url_field.rb +1 -0
  187. data/lib/phlex/rails/helpers/url_field_tag.rb +1 -0
  188. data/lib/phlex/rails/helpers/url_for.rb +1 -0
  189. data/lib/phlex/rails/helpers/url_options.rb +1 -0
  190. data/lib/phlex/rails/helpers/url_to_asset.rb +1 -0
  191. data/lib/phlex/rails/helpers/url_to_audio.rb +1 -0
  192. data/lib/phlex/rails/helpers/url_to_font.rb +1 -0
  193. data/lib/phlex/rails/helpers/url_to_image.rb +1 -0
  194. data/lib/phlex/rails/helpers/url_to_javascript.rb +1 -0
  195. data/lib/phlex/rails/helpers/url_to_stylesheet.rb +1 -0
  196. data/lib/phlex/rails/helpers/url_to_video.rb +1 -0
  197. data/lib/phlex/rails/helpers/utf8_enforcer_tag.rb +1 -0
  198. data/lib/phlex/rails/helpers/video_path.rb +1 -0
  199. data/lib/phlex/rails/helpers/video_tag.rb +1 -0
  200. data/lib/phlex/rails/helpers/video_url.rb +1 -0
  201. data/lib/phlex/rails/helpers/week_field.rb +1 -0
  202. data/lib/phlex/rails/helpers/week_field_tag.rb +1 -0
  203. data/lib/phlex/rails/helpers/weekday_options_for_select.rb +1 -0
  204. data/lib/phlex/rails/helpers/weekday_select.rb +1 -0
  205. data/lib/phlex/rails/helpers/word_wrap.rb +1 -0
  206. data/lib/phlex/rails/helpers.rb +1 -0
  207. data/lib/phlex/rails/html.rb +7 -4
  208. data/lib/phlex/rails/layout.rb +5 -5
  209. data/lib/phlex/rails/sgml.rb +113 -72
  210. data/lib/phlex/rails/streaming.rb +2 -3
  211. data/lib/phlex/rails/svg.rb +12 -0
  212. data/lib/phlex/rails/unbuffered.rb +1 -2
  213. data/lib/phlex/rails/version.rb +1 -1
  214. data/lib/phlex/rails.rb +16 -14
  215. metadata +12 -11
  216. data/lib/phlex/rails/helper_finder.rb +0 -13
  217. data/lib/phlex/rails/testing.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd7b1aa1e624cdf0709339f34892cfb6bc45b3db90389dd59b9b05ecb3b41daf
4
- data.tar.gz: 1cd2c18c87b9f2d781171e3c2e2fbf3a25ee45dae4cd2b51f0afb5ece7008cd1
3
+ metadata.gz: 99afebaac03dab652e1ebfa7b1037d2fa650ac46af545ac97a96c2ff1fcf36d9
4
+ data.tar.gz: a2fddfa82b2f9cdb3fcc4ee9c2e7f97e6925ee9a47ffe8eec3b5b40c1f81f127
5
5
  SHA512:
6
- metadata.gz: 22500c89646a9c600a5ed2fc1e5f2eb75b65accee2502f084faad220183b17bcb13a300530c0f8fef0aee76b985aafd4e4fcbf421b5f27614b8a978805f24966
7
- data.tar.gz: 1f67e3bfad44afb1d539182e0962a5a2550a3a67b29f6400eaa4323dbf4e1538c7341e3aa7c5be667c24315567283149754bcd7ab23cd38c5edfa0357e3db947
6
+ metadata.gz: aa23e9efa3d071729eec9e6589971b5ade4644f13d98402b94f398cc045e9b6293c55069f605b7647b5b08ba05b9a44f3a7236530b0c8f3ddd618305cdc1f501
7
+ data.tar.gz: 5715fed7d4983d3411bde34ebc35f35a3c99f1314efa348f547c945a557b26dfd6b682dd34e3098c634a34150ff9454e434c2bf041f2c45634493d4f90e76830
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <a href="https://www.phlex.fun"><img alt="Phlex logo" src="phlex_logo.png" width="180" /></a>
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’ve found a potential security issue, please email [security@phlex.fun](mailto:security@phlex.fun).
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 create_view
8
- @path = File.join("app/components", class_path, "#{file_name}.rb")
9
- template "component.rb.erb", @path
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", Rails.root.join("config/initializers/phlex.rb")
8
+ template "phlex.rb.erb", File.join(destination_root, "config/initializers/phlex.rb")
28
9
  end
29
10
 
30
- private
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 tailwind_configuration_files
41
- Dir.glob(
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
- @path = File.join("app/views", class_path, "#{file_name}.rb")
9
- template "view.rb.erb", @path
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
@@ -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
- @view.capture do
16
+ @component.capture do
20
17
  yield(
21
18
  ::#{builder.name}.new(builder,
22
- view: @view
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
- @view.instance_variable_get(:@_state).buffer << output
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
- # @api private
42
- def initialize(object, view:)
38
+ def initialize(object, component:)
43
39
  @object = object
44
- @view = view
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| @view.capture(*a, &block) }
49
+ @object.public_send(*, **) { |*a| @component.capture(*a, &block) }
54
50
  else
55
51
  @object.public_send(*, **)
56
52
  end
57
53
 
58
- if ::ActiveSupport::SafeBuffer === output
59
- @view.instance_variable_get(:@_state).buffer << output
54
+ case output
55
+ when ::ActiveSupport::SafeBuffer
56
+ @component.raw(output)
60
57
  end
61
58
 
62
59
  nil
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedCheckboxBuilder < Buffered
6
- # @!method object(...)
7
- # @!method text(...)
8
- # @!method value(...)
9
5
  def_delegators :@object,
10
6
  :object,
11
7
  :text,
@@ -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
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedLabelBuilder < Buffered
6
- # @!method object(...)
7
- # @!method translation(...)
8
5
  def_delegators :@object,
9
6
  :object,
10
7
  :translation
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Phlex::Rails
4
- # @api private
5
4
  class BufferedRadioButtonBuilder < Buffered
6
- # @!method object(...)
7
- # @!method text(...)
8
- # @!method value(...)
9
5
  def_delegators :@object,
10
6
  :object,
11
7
  :text,
@@ -3,13 +3,11 @@
3
3
  module Phlex
4
4
  module Rails
5
5
  module CSV
6
- module Overrides
7
- def each_item(&)
8
- return super unless ActiveRecord::Relation === collection
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
- collection.find_each(&)
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
- helpers.#{method_name}(*args, **kwargs) { capture(&block) }
11
+ view_context.#{method_name}(*args, **kwargs) { capture(&block) }
12
12
  else
13
- helpers.#{method_name}(*args, **kwargs)
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
- helpers.#{method_name}(*args, **kwargs) { capture(&block) }
28
+ view_context.#{method_name}(*args, **kwargs) { capture(&block) }
29
29
  else
30
- helpers.#{method_name}(*args, **kwargs)
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
- helpers.#{method_name}(*args, **kwargs) { |form|
42
+ view_context.#{method_name}(*args, **kwargs) { |form|
44
43
  capture do
45
44
  yield(
46
45
  #{builder.name}.new(form,
47
- view: self
46
+ component: self
48
47
  )
49
48
  )
50
49
  end
51
50
  }
52
51
  else
53
- helpers.#{method_name}(*args, **kwargs)
52
+ view_context.#{method_name}(*args, **kwargs)
54
53
  end
55
54
 
56
55
  raw(output)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Phlex adapter for the [`asset_url`](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-asset_url) Rails helper.
4
3
  module Phlex::Rails::Helpers::AssetURL
5
4
  extend Phlex::Rails::HelperMacros
6
5
 
@@ -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::AudioTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-audio_tag)
6
7
  register_output_helper def audio_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::AudioURL
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-audio_url)
6
7
  register_value_helper def audio_url(...) = nil
7
8
  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::BuildTagValues
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-c-build_tag_values)
6
7
  register_value_helper def build_tag_values(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ButtonTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-button_tag)
6
7
  register_output_helper def button_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ButtonTo
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to)
6
7
  register_output_helper def button_to(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CheckBox
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box)
6
7
  register_output_helper def check_box(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CheckBoxTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag)
6
7
  register_output_helper def check_box_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ClassNames
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-class_names)
6
7
  register_value_helper def class_names(...) = 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::ColorField
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-color_field)
6
7
  register_output_helper def color_field(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ColorFieldTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-color_field_tag)
6
7
  register_output_helper def color_field_tag(...) = 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,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ComputeAssetHost
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_host)
6
7
  register_value_helper def compute_asset_host(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ComputeAssetPath
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-compute_asset_path)
6
7
  register_value_helper def compute_asset_path(...) = nil
7
8
  end
@@ -3,7 +3,9 @@
3
3
  module Phlex::Rails::Helpers::ContentFor
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
- register_value_helper def content_for?(...) = nil
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
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ContentTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag)
6
7
  register_output_helper def content_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ControllerName
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionController/Metal.html#method-i-controller_name)
6
7
  register_value_helper def controller_name(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::ControllerPath
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/AbstractController/Base.html#method-i-controller_path)
6
7
  register_value_helper def controller_path(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CSPMetaTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CspHelper.html#method-i-csp_meta_tag)
6
7
  register_output_helper def csp_meta_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CSRFMetaTags
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/CsrfHelper.html#method-i-csrf_meta_tags)
6
7
  register_output_helper def csrf_meta_tags(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CurrentCycle
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-current_cycle)
6
7
  register_value_helper def current_cycle(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::CurrentPage
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F)
6
7
  register_value_helper def current_page?(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::Cycle
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-cycle)
6
7
  register_value_helper def cycle(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::DateField
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-date_field)
6
7
  register_output_helper def date_field(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::DateFieldTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-date_field_tag)
6
7
  register_output_helper def date_field_tag(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::DateSelect
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select)
6
7
  register_output_helper def date_select(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::DatetimeField
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-datetime_field)
6
7
  register_output_helper def datetime_field(...) = nil
7
8
  end
@@ -3,5 +3,6 @@
3
3
  module Phlex::Rails::Helpers::DatetimeFieldTag
4
4
  extend Phlex::Rails::HelperMacros
5
5
 
6
+ # [Rails Docs](https://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-datetime_field_tag)
6
7
  register_output_helper def datetime_field_tag(...) = nil
7
8
  end