Skip to content

Commit

Permalink
Added option to control size of input group and field
Browse files Browse the repository at this point in the history
  • Loading branch information
shivam091 committed May 21, 2023
1 parent 2edb787 commit 7f902f8
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 2 deletions.
6 changes: 6 additions & 0 deletions lib/rails_bootstrap_form/bootstrap_form_options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -154,6 +158,8 @@ def set_defaults
@switch = false

@wrapper_options = {}

@size = nil
end

private :set_defaults
Expand Down
3 changes: 3 additions & 0 deletions lib/rails_bootstrap_form/field_wrapper_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
5 changes: 4 additions & 1 deletion lib/rails_bootstrap_form/input_group_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 5 additions & 1 deletion lib/rails_bootstrap_form/inputs/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 7f902f8

Please sign in to comment.