From 7b26e334dcd06c13c630eac90a480504da8faacb Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Wed, 24 Sep 2025 18:41:13 +0100 Subject: [PATCH 1/2] Fix label `for` attribute when not scoped to model Defers assigning label `for` value to later in `initialize` method, ensuring the `scope_id_false: false` option is respected. Closes primer/view_components#3695 --- app/lib/primer/forms/dsl/input.rb | 3 ++- test/lib/primer/forms/input_test.rb | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/lib/primer/forms/dsl/input.rb b/app/lib/primer/forms/dsl/input.rb index 14203a8364..6392febe8f 100644 --- a/app/lib/primer/forms/dsl/input.rb +++ b/app/lib/primer/forms/dsl/input.rb @@ -58,7 +58,6 @@ def initialize(builder:, form:, **system_arguments) @input_arguments = system_arguments @input_arguments.delete(:id) unless @input_arguments[:id].present? @label_arguments = @input_arguments.delete(:label_arguments) || {} - @label_arguments[:for] = id if id.present? @label_arguments[:class] = class_names( @label_arguments[:class], @@ -102,6 +101,8 @@ def initialize(builder:, form:, **system_arguments) end # rubocop:enable Style/IfUnlessModifier + @label_arguments[:for] = @input_arguments[:id] + # Whether or not to wrap the component in a FormControl, which renders a # label above and validation message beneath the input. @form_control = @input_arguments.delete(:form_control) { true } diff --git a/test/lib/primer/forms/input_test.rb b/test/lib/primer/forms/input_test.rb index 830c0b3134..1f948c6d95 100644 --- a/test/lib/primer/forms/input_test.rb +++ b/test/lib/primer/forms/input_test.rb @@ -104,6 +104,7 @@ def test_removes_model_scope_from_name_and_id end assert_selector "input#ultimate_answer[name=ultimate_answer]" + assert_selector "label[for=ultimate_answer]" end def test_uses_given_id @@ -116,5 +117,6 @@ def test_uses_given_id end assert_selector "input#foobar[name=ultimate_answer]" + assert_selector "label[for=foobar]" end end From b6b49094bc7fc2650fa53db2c67ed706f3061823 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Wed, 24 Sep 2025 19:21:14 +0100 Subject: [PATCH 2/2] Add changeset --- .changeset/chatty-pants-hang.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/chatty-pants-hang.md diff --git a/.changeset/chatty-pants-hang.md b/.changeset/chatty-pants-hang.md new file mode 100644 index 0000000000..68c4b2e8ab --- /dev/null +++ b/.changeset/chatty-pants-hang.md @@ -0,0 +1,5 @@ +--- +'@primer/view-components': patch +--- + +Fix incorrect label `for` attribute value when `scope_id_false: false`