2011-09-03 10:00:23 +00:00
|
|
|
module SimpleForm
|
|
|
|
module Helpers
|
|
|
|
module Required
|
2011-09-03 10:28:12 +00:00
|
|
|
# Whether this input is valid for HTML 5 required attribute.
|
|
|
|
def has_required?
|
2011-09-03 20:52:45 +00:00
|
|
|
attribute_required? && SimpleForm.html5 && SimpleForm.browser_validations
|
2011-09-03 10:28:12 +00:00
|
|
|
end
|
|
|
|
|
2011-09-03 10:00:23 +00:00
|
|
|
private
|
|
|
|
|
|
|
|
def attribute_required?
|
|
|
|
@required
|
|
|
|
end
|
|
|
|
|
|
|
|
def calculate_required
|
|
|
|
if !options[:required].nil?
|
|
|
|
options[:required]
|
|
|
|
elsif has_validators?
|
|
|
|
(attribute_validators + reflection_validators).any? do |v|
|
|
|
|
v.kind == :presence && valid_validator?(v)
|
|
|
|
end
|
|
|
|
else
|
|
|
|
attribute_required_by_default?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def attribute_required_by_default?
|
|
|
|
SimpleForm.required_by_default
|
|
|
|
end
|
|
|
|
|
|
|
|
def required_class
|
|
|
|
attribute_required? ? :required : :optional
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|