Skip to content

Instantly share code, notes, and snippets.

@diego-aslz
Last active December 9, 2015 15:54
Show Gist options
  • Save diego-aslz/1d5bcfbf9b7c27ec4916 to your computer and use it in GitHub Desktop.
Save diego-aslz/1d5bcfbf9b7c27ec4916 to your computer and use it in GitHub Desktop.
module BootstrapHelper
ALERT_TYPES = [:success, :info, :warning, :danger]
def glyph(icon)
content_tag :span, nil, class: "glyphicon glyphicon-#{icon}"
end
def bootstrap_tags_from_flash
content_tag :div, id: ApplicationHelper::FLASH_MESSAGES_TAG_ID do
flash.each do |type, message|
next if message.blank?
type = type.to_sym
type = case type
when :notice then :success
when :alert then :warning
when :error then :danger
else type
end
next unless ALERT_TYPES.include?(type)
Array(message).each do |msg|
concat alert_tag(msg, type: type) if msg
end
end
end
end
def close_alert_tag
@close_alert_tag ||= content_tag(:button, raw('×'), class: 'close',
'data-dismiss': 'alert',
'aria-hidden': 'true',
type: 'button')
end
def alert_tag(message, type: :success)
content_tag :div, class: "alert fade in alert-#{type} alert-dismissable" do
concat close_alert_tag
concat message
end
end
def vertical_form
@vertical_form ||= {
wrapper: :vertical_form,
wrapper_mappings: {
check_boxes: :vertical_radio_and_checkboxes,
radio_buttons: :vertical_radio_and_checkboxes,
file: :vertical_file_input,
boolean: :vertical_boolean
}
}
end
def horizontal_form
@horizontal_form ||= {
wrapper: :horizontal_form,
wrapper_mappings: {
check_boxes: :horizontal_radio_and_checkboxes,
radio_buttons: :horizontal_radio_and_checkboxes,
file: :horizontal_file_input,
boolean: :horizontal_boolean
}
}
end
end
# Use this setup block to configure all options available in SimpleForm.
SimpleForm.setup do |config|
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, class: 'form-control'
b.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
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.use :input
b.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
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' do |ba|
ba.use :label_input
end
b.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
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: 'text-danger' }
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-2 control-label'
b.wrapper tag: 'div', class: 'col-sm-10' do |ba|
ba.use :input, class: 'form-control'
ba.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
end
config.wrappers :half_horizontal_form, tag: 'div', class: 'col-sm-6', error_class: 'has-error' do |group|
group.wrapper tag: 'div', class: 'row' 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-4 control-label'
b.wrapper tag: 'div', class: 'col-sm-8' do |ba|
ba.use :input, class: 'form-control'
ba.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
end
end
config.wrappers :horizontal_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: 'col-sm-2 control-label'
b.wrapper tag: 'div', class: 'col-sm-10' do |ba|
ba.use :input
ba.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
end
config.wrappers :horizontal_half_input, 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-2 control-label'
b.wrapper tag: 'div', class: 'col-sm-4' do |ba|
ba.use :input, class: 'form-control'
ba.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
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-2 col-sm-10' do |wr|
wr.wrapper tag: 'div', class: 'checkbox' do |ba|
ba.use :label_input
end
wr.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
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-2 control-label'
b.wrapper tag: 'div', class: 'col-sm-10' do |ba|
ba.use :input
ba.use :error, wrap_with: { tag: 'span', class: 'text-danger' }
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
end
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: 'text-danger' }
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
@seccomiro
Copy link

=*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment