Skip to content

Commit 7b26e33

Browse files
committed
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 #3695
1 parent 263b185 commit 7b26e33

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

app/lib/primer/forms/dsl/input.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ def initialize(builder:, form:, **system_arguments)
5858
@input_arguments = system_arguments
5959
@input_arguments.delete(:id) unless @input_arguments[:id].present?
6060
@label_arguments = @input_arguments.delete(:label_arguments) || {}
61-
@label_arguments[:for] = id if id.present?
6261

6362
@label_arguments[:class] = class_names(
6463
@label_arguments[:class],
@@ -102,6 +101,8 @@ def initialize(builder:, form:, **system_arguments)
102101
end
103102
# rubocop:enable Style/IfUnlessModifier
104103

104+
@label_arguments[:for] = @input_arguments[:id]
105+
105106
# Whether or not to wrap the component in a FormControl, which renders a
106107
# label above and validation message beneath the input.
107108
@form_control = @input_arguments.delete(:form_control) { true }

test/lib/primer/forms/input_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def test_removes_model_scope_from_name_and_id
104104
end
105105

106106
assert_selector "input#ultimate_answer[name=ultimate_answer]"
107+
assert_selector "label[for=ultimate_answer]"
107108
end
108109

109110
def test_uses_given_id
@@ -116,5 +117,6 @@ def test_uses_given_id
116117
end
117118

118119
assert_selector "input#foobar[name=ultimate_answer]"
120+
assert_selector "label[for=foobar]"
119121
end
120122
end

0 commit comments

Comments
 (0)