diff --git a/app/helpers/polaris/form_builder.rb b/app/helpers/polaris/form_builder.rb index f7865445..af1038d1 100644 --- a/app/helpers/polaris/form_builder.rb +++ b/app/helpers/polaris/form_builder.rb @@ -54,7 +54,7 @@ def polaris_text_field(method, **options, &block) if options[:error_hidden] && options[:error] options[:error] = !!options[:error] end - render Polaris::TextFieldComponent.new(form: self, attribute: method, **options, &block) + render Polaris::TextFieldComponent.new(form: self, attribute: method, **options), &block end def polaris_select(method, **options, &block) diff --git a/demo/app/previews/form_builder_component_preview/text_field.html.erb b/demo/app/previews/form_builder_component_preview/text_field.html.erb index 57f6d1a8..2a9c405a 100644 --- a/demo/app/previews/form_builder_component_preview/text_field.html.erb +++ b/demo/app/previews/form_builder_component_preview/text_field.html.erb @@ -1,3 +1,22 @@ <%= form_with(model: product, builder: Polaris::FormBuilder) do |form| %> <%= form.polaris_text_field(:title, help_text: "Note about text field") %> <% end %> + +<%= polaris_spacer(vertical: :base) %> + +<%= form_with(model: product, builder: Polaris::FormBuilder) do |form| %> + <%= form.polaris_text_field(:title, help_text: "Note about text field") do |c| %> + <% c.with_connected_left do %> + <%= polaris_select( + name: :weight_unit, + label: "Weight unit", + label_hidden: true, + options: { "kd" => "kg", "lb" => "lb" }, + selected: "kg", + ) %> + <% end %> + <% c.with_connected_right do %> + <%= polaris_button { "Submit" } %> + <% end %> + <% end %> +<% end %> diff --git a/test/helpers/polaris/form_builder_test.rb b/test/helpers/polaris/form_builder_test.rb index a5ddbbfc..830175b6 100644 --- a/test/helpers/polaris/form_builder_test.rb +++ b/test/helpers/polaris/form_builder_test.rb @@ -58,6 +58,25 @@ class Product end end + test "#polaris_text_field_with_block" do + @rendered_content = @builder.polaris_text_field(:title, help_text: "Help Text") do |c| + c.with_connected_right do + polaris_button { "Submit" } + end + end + + assert_selector ".Polaris-Label" do + assert_selector "label", text: "Title" + end + assert_selector ".Polaris-TextField" do + assert_selector %(input[name="product[title]"]) + assert_selector ".Polaris-Labelled__HelpText", text: "Help Text" + end + assert_selector ".Polaris-Button" do + assert_selector "div", text: "Submit" + end + end + test "#polaris_select" do @rendered_content = @builder.polaris_select(:status, options: {"Active" => "active", "Draft" => "draft"})