mirror of
https://github.com/heartcombo/simple_form.git
synced 2022-11-09 12:19:26 -05:00
Ensure labels are clickable when dealing with date/time/datetime selects, for better accessibility
This commit is contained in:
parent
e2519a421c
commit
12f85e4910
2 changed files with 29 additions and 1 deletions
|
@ -35,7 +35,20 @@ module SimpleForm
|
||||||
def content
|
def content
|
||||||
html_options = component_html_options
|
html_options = component_html_options
|
||||||
html_options[:for] = options[:input_html][:id] if options.key?(:input_html)
|
html_options[:for] = options[:input_html][:id] if options.key?(:input_html)
|
||||||
@builder.label(attribute, text, html_options)
|
@builder.label(attribute_name, text, html_options)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Map attribute to specific name when dealing with date/time/timestamp,
|
||||||
|
# ensuring label will always be "clickable". For better accessibility.
|
||||||
|
def attribute_name
|
||||||
|
case input_type
|
||||||
|
when :date, :datetime
|
||||||
|
"#{attribute}_1i"
|
||||||
|
when :time
|
||||||
|
"#{attribute}_4i"
|
||||||
|
else
|
||||||
|
attribute
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# The method that actually generates the label. This can be overwriten using
|
# The method that actually generates the label. This can be overwriten using
|
||||||
|
|
|
@ -150,4 +150,19 @@ class LabelTest < ActionView::TestCase
|
||||||
with_label_for :project, :description, :string, :required => false
|
with_label_for :project, :description, :string, :required => false
|
||||||
assert_no_select 'label.required[for=project_description]'
|
assert_no_select 'label.required[for=project_description]'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'label should point to first option when date input type' do
|
||||||
|
with_label_for :project, :created_at, :date
|
||||||
|
assert_select 'label[for=project_created_at_1i]'
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'label should point to first option when datetime input type' do
|
||||||
|
with_label_for :project, :created_at, :datetime
|
||||||
|
assert_select 'label[for=project_created_at_1i]'
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'label should point to first option when time input type' do
|
||||||
|
with_label_for :project, :created_at, :time
|
||||||
|
assert_select 'label[for=project_created_at_4i]'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue