diff --git a/templates/config/initializers/simple_form_bootstrap.rb b/templates/config/initializers/simple_form_bootstrap.rb index 900bf81..96176a3 100644 --- a/templates/config/initializers/simple_form_bootstrap.rb +++ b/templates/config/initializers/simple_form_bootstrap.rb @@ -1,70 +1,207 @@ # Use this setup block to configure all options available in SimpleForm. -# File Path: RAILS_ROOT/config/initializers/simple_form_bootstrap.rb SimpleForm.setup do |config| - config.wrappers :bootstrap, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + config.error_notification_class = 'alert alert-danger' + config.button_class = 'btn btn-default' + config.boolean_label_class = nil + + config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| b.use :html5 b.use :placeholder + b.optional :maxlength + b.optional :pattern + b.optional :min_max + b.optional :readonly b.use :label, class: 'control-label' - b.use :input + + b.use :input, class: 'form-control' b.use :error, wrap_with: { tag: 'span', class: 'help-block' } b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } end - config.wrappers :prepend, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| b.use :html5 b.use :placeholder + b.optional :maxlength + b.optional :readonly b.use :label, class: 'control-label' - b.wrapper tag: 'div', class: 'input-group' do |input| - input.wrapper tag: 'div', class: 'input-prepend' do |prepend| - prepend.use :input - end - input.use :hint, wrap_with: { tag: 'span', class: 'help-block' } - input.use :error, wrap_with: { tag: 'span', class: 'help-inline' } + + b.use :input + b.use :error, wrap_with: { tag: 'span', class: 'help-block' } + b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } + end + + config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.optional :readonly + + b.wrapper tag: 'div', class: 'checkbox checkbox-primary' do |ba| + ba.use :label_input + end + + b.use :error, wrap_with: { tag: 'span', class: 'help-block' } + b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } + end + + config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.optional :readonly + b.use :label, class: 'control-label' + b.use :input + b.use :error, wrap_with: { tag: 'span', class: 'help-block' } + b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } + end + + config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.use :placeholder + b.optional :maxlength + b.optional :pattern + b.optional :min_max + b.optional :readonly + b.use :label, class: 'col-sm-3 control-label' + + b.wrapper tag: 'div', class: 'col-sm-9' do |ba| + ba.use :input, class: 'form-control' + ba.use :error, wrap_with: { tag: 'span', class: 'help-block' } + ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' } end end - config.wrappers :append, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| b.use :html5 b.use :placeholder - b.use :label - b.wrapper tag: 'div', class: 'input-group' do |input| - input.wrapper tag: 'div', class: 'input-append' do |append| - append.use :input + b.optional :maxlength + b.optional :readonly + b.use :label, class: 'col-sm-3 control-label' + + b.wrapper tag: 'div', class: 'col-sm-9' do |ba| + ba.use :input + ba.use :error, wrap_with: { tag: 'span', class: 'help-block' } + ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' } + end + end + + config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.optional :readonly + + b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr| + wr.wrapper tag: 'div', class: 'checkbox' do |ba| + ba.use :label_input, class: 'col-sm-9' end - input.use :hint, wrap_with: { tag: 'span', class: 'help-block' } - input.use :error, wrap_with: { tag: 'span', class: 'help-inline' } + + wr.use :error, wrap_with: { tag: 'span', class: 'help-block' } + wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' } end end - config.error_notification_class = 'alert alert-danger' - # Wrappers for forms and inputs using the Twitter Bootstrap toolkit. - # Check the Bootstrap docs (http://twitter.github.com/bootstrap) - # to learn about the different styles for forms and inputs, - # buttons and other elements. - config.default_wrapper = :bootstrap -end + config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.optional :readonly + b.use :label, class: 'col-sm-3 control-label' -inputs = %w[ - CollectionSelectInput - DateTimeInput - FileInput - GroupedCollectionSelectInput - NumericInput - PasswordInput - RangeInput - StringInput - TextInput -] - -inputs.each do |input_type| - superclass = "SimpleForm::Inputs::#{input_type}".constantize - - new_class = Class.new(superclass) do - def input_html_classes - super.push('form-control') + b.wrapper tag: 'div', class: 'col-sm-9' do |ba| + ba.use :input + ba.use :error, wrap_with: { tag: 'span', class: 'help-block' } + ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' } end end - Object.const_set(input_type, new_class) -end \ No newline at end of file + config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| + b.use :html5 + b.use :placeholder + b.optional :maxlength + b.optional :pattern + b.optional :min_max + b.optional :readonly + b.use :label, class: 'sr-only' + + b.use :input, class: 'form-control' + b.use :error, wrap_with: { tag: 'span', class: 'help-block' } + b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } + end + + # Wrappers for forms and inputs using the Bootstrap toolkit. + # Check the Bootstrap docs (http://getbootstrap.com) + # to learn about the different styles for forms and inputs, + # buttons and other elements. + config.default_wrapper = :vertical_form + config.wrapper_mappings = { + check_boxes: :vertical_radio_and_checkboxes, + radio_buttons: :vertical_radio_and_checkboxes, + file: :vertical_file_input, + boolean: :vertical_boolean, + } +end + +# # Use this setup block to configure all options available in SimpleForm. +# # File Path: RAILS_ROOT/config/initializers/simple_form_bootstrap.rb +# SimpleForm.setup do |config| +# config.wrappers :bootstrap, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| +# b.use :html5 +# b.use :placeholder +# b.use :label, class: 'control-label' +# b.use :input +# b.use :error, wrap_with: { tag: 'span', class: 'help-block' } +# b.use :hint, wrap_with: { tag: 'p', class: 'help-block' } +# end +# +# config.wrappers :prepend, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| +# b.use :html5 +# b.use :placeholder +# b.use :label, class: 'control-label' +# b.wrapper tag: 'div', class: 'input-group' do |input| +# input.wrapper tag: 'div', class: 'input-prepend' do |prepend| +# prepend.use :input +# end +# input.use :hint, wrap_with: { tag: 'span', class: 'help-block' } +# input.use :error, wrap_with: { tag: 'span', class: 'help-inline' } +# end +# end +# +# config.wrappers :append, tag: 'div', class: 'form-group', error_class: 'has-error' do |b| +# b.use :html5 +# b.use :placeholder +# b.use :label +# b.wrapper tag: 'div', class: 'input-group' do |input| +# input.wrapper tag: 'div', class: 'input-append' do |append| +# append.use :input +# end +# input.use :hint, wrap_with: { tag: 'span', class: 'help-block' } +# input.use :error, wrap_with: { tag: 'span', class: 'help-inline' } +# end +# end +# config.error_notification_class = 'alert alert-danger' +# +# # Wrappers for forms and inputs using the Twitter Bootstrap toolkit. +# # Check the Bootstrap docs (http://twitter.github.com/bootstrap) +# # to learn about the different styles for forms and inputs, +# # buttons and other elements. +# config.default_wrapper = :bootstrap +# end +# +# +# inputs = %w[ +# CollectionSelectInput +# DateTimeInput +# FileInput +# GroupedCollectionSelectInput +# NumericInput +# PasswordInput +# RangeInput +# StringInput +# TextInput +# ] +# +# inputs.each do |input_type| +# superclass = "SimpleForm::Inputs::#{input_type}".constantize +# +# new_class = Class.new(superclass) do +# def input_html_classes +# super.push('form-control') +# end +# end +# +# Object.const_set(input_type, new_class) +# end