phlex-rails 2.0.0.rc2 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
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 +115 -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 +13 -12
  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: 9132f7408f8894ff8986d6cd0ee5bcb3ad4b2b9b31a76d662ae2bb8a94795857
4
+ data.tar.gz: 37a11261dfec101579e1b68478895d37b1e449c560f2063b7d18246955374a13
5
5
  SHA512:
6
- metadata.gz: 22500c89646a9c600a5ed2fc1e5f2eb75b65accee2502f084faad220183b17bcb13a300530c0f8fef0aee76b985aafd4e4fcbf421b5f27614b8a978805f24966
7
- data.tar.gz: 1f67e3bfad44afb1d539182e0962a5a2550a3a67b29f6400eaa4323dbf4e1538c7341e3aa7c5be667c24315567283149754bcd7ab23cd38c5edfa0357e3db947
6
+ metadata.gz: 0aaa46676771388eb1da90da857964ab96efa2ed6569318107707bf900ac721bb2f1fac69b7c7bb54b6267f0e280d24beb1baa2237477e2396674fb164d21c5c
7
+ data.tar.gz: 15e57ba0d534f7915b4f097970db93e512791b85ae6d061c4bb7f7a4f235dba7f1564fe0e5364d25fa3d8920df2125eb0d700257bf9577b93a8654213edd1681
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