heartcombo--simple_form/lib/simple_form/components/labels.rb

85 lines
2.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
module SimpleForm
module Components
module Labels
2011-09-03 12:40:47 +00:00
extend ActiveSupport::Concern
module ClassMethods #:nodoc:
def translate_required_html
i18n_cache :translate_required_html do
2013-01-28 21:02:59 +00:00
I18n.t(:"simple_form.required.html", default:
%[<abbr title="#{translate_required_text}">#{translate_required_mark}</abbr>]
)
end
end
def translate_required_text
2013-01-28 21:02:59 +00:00
I18n.t(:"simple_form.required.text", default: 'required')
end
def translate_required_mark
2013-01-28 21:02:59 +00:00
I18n.t(:"simple_form.required.mark", default: '*')
end
end
def label(wrapper_options = nil)
label_options = merge_wrapper_options(label_html_options, wrapper_options)
2014-03-11 14:22:20 +00:00
if generate_label_for_attribute?
2014-03-11 14:22:20 +00:00
@builder.label(label_target, label_text, label_options)
else
2014-03-11 14:22:20 +00:00
template.label_tag(nil, label_text, label_options)
end
end
def label_text(wrapper_options = nil)
2012-07-12 16:06:40 +00:00
label_text = options[:label_text] || SimpleForm.label_text
label_text.call(html_escape(raw_label_text), required_label_text, options[:label].present?).strip.html_safe
end
def label_target
attribute_name
end
def label_html_options
2012-02-17 00:36:34 +00:00
label_html_classes = SimpleForm.additional_classes_for(:label) {
[input_type, required_class, disabled_class, SimpleForm.label_class].compact
2012-02-17 00:36:34 +00:00
}
2012-02-16 17:42:47 +00:00
2012-02-16 17:53:09 +00:00
label_options = html_options_for(:label, label_html_classes)
2012-02-17 00:36:34 +00:00
if options.key?(:input_html) && options[:input_html].key?(:id)
label_options[:for] = options[:input_html][:id]
end
2014-03-11 14:22:20 +00:00
label_options
end
2012-01-26 19:22:05 +00:00
protected
def raw_label_text #:nodoc:
options[:label] || label_translation
end
# Default required text when attribute is required.
def required_label_text #:nodoc:
2011-12-04 12:00:39 +00:00
required_field? ? self.class.translate_required_html.dup : ''
end
2010-12-08 19:30:53 +00:00
# First check labels translation and then human attribute name.
def label_translation #:nodoc:
if SimpleForm.translate_labels && (translated_label = translate_from_namespace(:labels))
2011-12-10 18:00:36 +00:00
translated_label
elsif object.class.respond_to?(:human_attribute_name)
object.class.human_attribute_name(reflection_or_attribute_name.to_s)
else
attribute_name.to_s.humanize
end
end
def generate_label_for_attribute?
true
end
end
end
2010-12-08 19:30:53 +00:00
end