diff --git a/lib/simple_form/components/labels.rb b/lib/simple_form/components/labels.rb index 6d76cf39..6abfafc4 100644 --- a/lib/simple_form/components/labels.rb +++ b/lib/simple_form/components/labels.rb @@ -23,7 +23,7 @@ module SimpleForm def label(context=nil) if context - label_options = merged_label_options(context.options) + label_options = merge_wrapper_options(label_html_options, context.options) else label_options = label_html_options end @@ -81,14 +81,6 @@ module SimpleForm def generate_label_for_attribute? true end - - def merged_label_options(context_options) - label_html_options.merge(context_options) do |_, oldval, newval| - if Array === oldval - oldval + Array(newval) - end - end - end end end end diff --git a/lib/simple_form/helpers.rb b/lib/simple_form/helpers.rb index 6567a7de..ec31d2e6 100644 --- a/lib/simple_form/helpers.rb +++ b/lib/simple_form/helpers.rb @@ -3,10 +3,11 @@ module SimpleForm # For instance, disabled cannot be turned on automatically, it requires the # user to explicitly pass the option disabled: true so it may work. module Helpers - autoload :Autofocus, 'simple_form/helpers/autofocus' - autoload :Disabled, 'simple_form/helpers/disabled' - autoload :Readonly, 'simple_form/helpers/readonly' - autoload :Required, 'simple_form/helpers/required' - autoload :Validators, 'simple_form/helpers/validators' + autoload :Autofocus, 'simple_form/helpers/autofocus' + autoload :Disabled, 'simple_form/helpers/disabled' + autoload :Readonly, 'simple_form/helpers/readonly' + autoload :Required, 'simple_form/helpers/required' + autoload :Validators, 'simple_form/helpers/validators' + autoload :WrapperOptions, 'simple_form/helpers/wrapper_options' end end diff --git a/lib/simple_form/helpers/wrapper_options.rb b/lib/simple_form/helpers/wrapper_options.rb new file mode 100644 index 00000000..9b95f9b7 --- /dev/null +++ b/lib/simple_form/helpers/wrapper_options.rb @@ -0,0 +1,15 @@ +module SimpleForm + module Helpers + module WrapperOptions + private + + def merge_wrapper_options(options, context_options) + options.merge(context_options) do |_, oldval, newval| + if Array === oldval + oldval + Array(newval) + end + end + end + end + end +end diff --git a/lib/simple_form/inputs/base.rb b/lib/simple_form/inputs/base.rb index 16e65d10..ecb5b15c 100644 --- a/lib/simple_form/inputs/base.rb +++ b/lib/simple_form/inputs/base.rb @@ -13,6 +13,7 @@ module SimpleForm include SimpleForm::Helpers::Readonly include SimpleForm::Helpers::Required include SimpleForm::Helpers::Validators + include SimpleForm::Helpers::WrapperOptions include SimpleForm::Components::Errors include SimpleForm::Components::Hints @@ -184,14 +185,6 @@ module SimpleForm I18n.t(lookups.shift, scope: :"simple_form.#{namespace}", default: lookups).presence end - - def merged_input_options(context_options) - input_html_options.merge(context_options) do |_, oldval, newval| - if Array === oldval - oldval + Array(newval) - end - end - end end end end diff --git a/lib/simple_form/inputs/boolean_input.rb b/lib/simple_form/inputs/boolean_input.rb index b5a369b5..eb7282fd 100644 --- a/lib/simple_form/inputs/boolean_input.rb +++ b/lib/simple_form/inputs/boolean_input.rb @@ -3,7 +3,7 @@ module SimpleForm class BooleanInput < Base def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end @@ -28,7 +28,7 @@ module SimpleForm html_options[:class].push(:checkbox) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/collection_radio_buttons_input.rb b/lib/simple_form/inputs/collection_radio_buttons_input.rb index 3591535a..79ac3e88 100644 --- a/lib/simple_form/inputs/collection_radio_buttons_input.rb +++ b/lib/simple_form/inputs/collection_radio_buttons_input.rb @@ -5,7 +5,7 @@ module SimpleForm label_method, value_method = detect_collection_methods if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/collection_select_input.rb b/lib/simple_form/inputs/collection_select_input.rb index fcec0d2f..c8ec4cc0 100644 --- a/lib/simple_form/inputs/collection_select_input.rb +++ b/lib/simple_form/inputs/collection_select_input.rb @@ -5,7 +5,7 @@ module SimpleForm label_method, value_method = detect_collection_methods if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/date_time_input.rb b/lib/simple_form/inputs/date_time_input.rb index 346f44d9..7ee70551 100644 --- a/lib/simple_form/inputs/date_time_input.rb +++ b/lib/simple_form/inputs/date_time_input.rb @@ -3,7 +3,7 @@ module SimpleForm class DateTimeInput < Base def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/file_input.rb b/lib/simple_form/inputs/file_input.rb index e6b211cd..92253024 100644 --- a/lib/simple_form/inputs/file_input.rb +++ b/lib/simple_form/inputs/file_input.rb @@ -3,7 +3,7 @@ module SimpleForm class FileInput < Base def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/grouped_collection_select_input.rb b/lib/simple_form/inputs/grouped_collection_select_input.rb index 9b77eea4..a459e5fb 100644 --- a/lib/simple_form/inputs/grouped_collection_select_input.rb +++ b/lib/simple_form/inputs/grouped_collection_select_input.rb @@ -5,7 +5,7 @@ module SimpleForm label_method, value_method = detect_collection_methods if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/hidden_input.rb b/lib/simple_form/inputs/hidden_input.rb index 9af30a0d..a3926b8a 100644 --- a/lib/simple_form/inputs/hidden_input.rb +++ b/lib/simple_form/inputs/hidden_input.rb @@ -5,7 +5,7 @@ module SimpleForm def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/numeric_input.rb b/lib/simple_form/inputs/numeric_input.rb index c5f0579b..e8d88024 100644 --- a/lib/simple_form/inputs/numeric_input.rb +++ b/lib/simple_form/inputs/numeric_input.rb @@ -11,7 +11,7 @@ module SimpleForm end if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/password_input.rb b/lib/simple_form/inputs/password_input.rb index e7297970..84714bcf 100644 --- a/lib/simple_form/inputs/password_input.rb +++ b/lib/simple_form/inputs/password_input.rb @@ -5,7 +5,7 @@ module SimpleForm def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/priority_input.rb b/lib/simple_form/inputs/priority_input.rb index e9793f07..667a0c76 100644 --- a/lib/simple_form/inputs/priority_input.rb +++ b/lib/simple_form/inputs/priority_input.rb @@ -3,7 +3,7 @@ module SimpleForm class PriorityInput < CollectionSelectInput def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/string_input.rb b/lib/simple_form/inputs/string_input.rb index d442f85e..7fdaec63 100644 --- a/lib/simple_form/inputs/string_input.rb +++ b/lib/simple_form/inputs/string_input.rb @@ -10,7 +10,7 @@ module SimpleForm end if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end diff --git a/lib/simple_form/inputs/text_input.rb b/lib/simple_form/inputs/text_input.rb index 47882c57..6624dea9 100644 --- a/lib/simple_form/inputs/text_input.rb +++ b/lib/simple_form/inputs/text_input.rb @@ -5,7 +5,7 @@ module SimpleForm def input(context=nil) if context - merged_input_options = merged_input_options(context.options) + merged_input_options = merge_wrapper_options(input_html_options, context.options) else merged_input_options = input_html_options end