Merge pull request #4087 from consul/fix_hint

Fix invalid "hint" attribute in forms
This commit is contained in:
Javier Martín
2020-08-26 16:24:16 +02:00
committed by GitHub
2 changed files with 46 additions and 4 deletions

View File

@@ -13,7 +13,7 @@ class ConsulFormBuilder < FoundationRailsHelper::FormBuilder
define_method field do |attribute, options = {}|
label_with_hint(attribute, options.merge(label_options: label_options_for(options))) +
super(attribute, options.merge(
label: false, hint: false,
label: false, hint: nil,
aria: { describedby: help_text_id(attribute, options) }
))
end
@@ -21,7 +21,7 @@ class ConsulFormBuilder < FoundationRailsHelper::FormBuilder
def check_box(attribute, options = {})
if options[:label] != false
label = tag.span sanitize(label_text(object, attribute, options[:label])), class: "checkbox"
label = tag.span sanitize(label_text(attribute, options[:label])), class: "checkbox"
super(attribute, options.merge(label: label, label_options: label_options_for(options)))
else
@@ -41,7 +41,7 @@ class ConsulFormBuilder < FoundationRailsHelper::FormBuilder
if text == false
super
else
super(attribute, sanitize(label_text(object, attribute, text)), options)
super(attribute, sanitize(label_text(attribute, text)), options)
end
end
@@ -50,7 +50,7 @@ class ConsulFormBuilder < FoundationRailsHelper::FormBuilder
help_text(attribute, options)
end
def label_text(object, attribute, text)
def label_text(attribute, text)
if text.nil? || text == true
default_label_text(object, attribute)
else

View File

@@ -0,0 +1,42 @@
require "rails_helper"
describe ConsulFormBuilder do
class DummyModel
include ActiveModel::Model
attr_accessor :title
end
let(:builder) { ConsulFormBuilder.new(:dummy, DummyModel.new, ActionView::Base.new, {}) }
describe "hints" do
it "does not generate hints by default" do
render builder.text_field(:title)
expect(page).not_to have_css ".help-text"
expect(page).not_to have_css "input[aria-describedby]"
end
it "generates text with a hint if provided" do
render builder.text_field(:title, hint: "Make it quick")
expect(page).to have_css ".help-text", text: "Make it quick"
expect(page).to have_css "input[aria-describedby='dummy_title-help-text']"
end
it "does not generate a hint attribute" do
render builder.text_field(:title)
expect(page).not_to have_css "input[hint]"
end
end
attr_reader :content
def render(content)
@content = content
end
def page
Capybara::Node::Simple.new(content)
end
end