heartcombo--simple_form/lib/simple_form/inputs/collection_radio_buttons_in...

58 lines
1.7 KiB
Ruby
Raw Normal View History

module SimpleForm
module Inputs
class CollectionRadioButtonsInput < CollectionInput
def input
label_method, value_method = detect_collection_methods
@builder.send("collection_#{input_type}",
attribute_name, collection, value_method, label_method,
input_options, input_html_options, &collection_block_for_nested_boolean_style
)
end
def input_options
options = super
apply_default_collection_options!(options)
options
end
protected
def apply_default_collection_options!(options)
unless options.key?(:item_wrapper_tag)
options[:item_wrapper_tag] = SimpleForm.item_wrapper_tag
end
options[:item_wrapper_class] = [
item_wrapper_class, options[:item_wrapper_class], SimpleForm.item_wrapper_class
].compact.presence
unless options.key?(:collection_wrapper_tag)
options[:collection_wrapper_tag] = SimpleForm.collection_wrapper_tag
end
options[:collection_wrapper_class] = [
options[:collection_wrapper_class], SimpleForm.collection_wrapper_class
].compact.presence
end
def item_wrapper_class
"radio"
end
def collection_block_for_nested_boolean_style
return unless nested_boolean_style?
proc do |label_for, text, value, html_options|
@builder.radio_button(attribute_name, value, html_options) + text
end
end
# Do not attempt to generate label[for] attributes by default, unless an
# explicit html option is given. This avoids generating labels pointing to
# non existent fields.
def generate_label_for_attribute?
false
end
end
end
end