diff --git a/lib/rails_bootstrap_form/bootstrap_form_options.rb b/lib/rails_bootstrap_form/bootstrap_form_options.rb index a14069b..aa2236f 100644 --- a/lib/rails_bootstrap_form/bootstrap_form_options.rb +++ b/lib/rails_bootstrap_form/bootstrap_form_options.rb @@ -94,6 +94,10 @@ class BootstrapFormOptions # Default is `{}`. attr_accessor :wrapper_options + # Option to specify the size of input groups and fields. + # The valid values are `sm` and `lg`. The default value is `nil`. + attr_accessor :size + def initialize(options = {}) set_defaults set_bootstrap_form_options(options) @@ -154,6 +158,8 @@ def set_defaults @switch = false @wrapper_options = {} + + @size = nil end private :set_defaults diff --git a/lib/rails_bootstrap_form/field_wrapper_builder.rb b/lib/rails_bootstrap_form/field_wrapper_builder.rb index 63a2360..ab9b37f 100644 --- a/lib/rails_bootstrap_form/field_wrapper_builder.rb +++ b/lib/rails_bootstrap_form/field_wrapper_builder.rb @@ -61,6 +61,9 @@ def field_css_options(attribute, bootstrap_options, options, html_options) bootstrap_options.additional_field_class ] field_classes << "is-invalid" if is_invalid?(attribute) + if is_size_valid?(bootstrap_options) + field_classes << "#{bootstrap_options.field_class}-#{bootstrap_options.size}" + end css_options[:class] = field_classes.flatten.compact css_options.merge!(required_field_options(attribute, options)) diff --git a/lib/rails_bootstrap_form/input_group_builder.rb b/lib/rails_bootstrap_form/input_group_builder.rb index b9be842..2289f61 100644 --- a/lib/rails_bootstrap_form/input_group_builder.rb +++ b/lib/rails_bootstrap_form/input_group_builder.rb @@ -26,7 +26,10 @@ def input_group_wrapper(attribute, bootstrap_options, &block) end def input_group_classes(attribute, bootstrap_options) - classes = ["input-group", bootstrap_options.additional_input_group_class] + classes = Array("input-group") << bootstrap_options.additional_input_group_class + if is_size_valid?(bootstrap_options) + classes << "input-group-#{bootstrap_options.size}" + end # Require `has-validation` class if field has errors. classes << "has-validation" if is_invalid?(attribute) classes.flatten.compact diff --git a/lib/rails_bootstrap_form/inputs/base.rb b/lib/rails_bootstrap_form/inputs/base.rb index 5bb314e..4b27014 100644 --- a/lib/rails_bootstrap_form/inputs/base.rb +++ b/lib/rails_bootstrap_form/inputs/base.rb @@ -17,7 +17,11 @@ def control_specific_class(field_tag_name) "rails-bootstrap-forms-#{field_tag_name.to_s.tr("_", "-")}" end - private :collection_input_checked?, :control_specific_class + def is_size_valid?(bootstrap_options) + bootstrap_options.size && %i(sm lg).include?(bootstrap_options.size) + end + + private :collection_input_checked?, :control_specific_class, :is_size_valid? end end end