module Lipstick::Helpers::FormHelper

Public Instance Methods

button_tag(content_or_options = nil, options = nil, &block) click to toggle source
Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 102
def button_tag(content_or_options = nil, options = nil, &block)
  if content_or_options.is_a?(Hash)
    content_or_options[:class] ||= 'btn-default'
    add_css_class(content_or_options, 'btn')
    super
  else
    options ||= {}
    options[:class] ||= 'btn-default'
    add_css_class(options, 'btn')
    super(content_or_options, options, &block)
  end
end
check_box_tag(*, &block) click to toggle source

rubocop:enable Style/OptionalBooleanParameter

Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 24
def check_box_tag(*, &block)
  content_tag('div', class: 'checkbox') do
    content_tag('label') do
      concat(super)
      concat(capture(&block))
    end
  end
end
date_field_tag(name, value = nil, **opts) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 92
def date_field_tag(name, value = nil, **opts)
  opts[:class] = "#{opts[:class]} date-picker".strip
  text_field_tag(name, value, opts)
end
delete_button_tag(url, text: true, **opts) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 115
def delete_button_tag(url, text: true, **opts)
  action = text.is_a?(String) ? text : 'Delete'

  content_tag('div', class: 'btn-group') do
    concat(delete_dropdown_opener(text && action, **opts))
    concat(confirm_delete_dropdown(url, action))
  end
end
field_block(html_opts = {}, &block) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 8
def field_block(html_opts = {}, &block)
  add_css_class(html_opts, 'form-group')
  content_tag('div', html_opts, &block)
end
form_for(obj, opts = {}, &block) click to toggle source
Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 124
def form_for(obj, opts = {}, &block)
  opts[:builder] = BootstrapFormBuilder
  super(obj, opts, &block)
end
grouped_search_field(filter, placeholder) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 69
def grouped_search_field(filter, placeholder)
  content_tag('div', class: 'input-group') do
    concat(search_filter_text_field(filter, placeholder))
    concat(content_tag('span', search_button, class: 'input-group-btn'))
  end
end
hidden_fields(&block) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 76
def hidden_fields(&block)
  content_tag('div', style: 'display: none;', &block)
end
inline_form_tag(url_for_options = {}, options = {}, &block) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 35
def inline_form_tag(url_for_options = {}, options = {}, &block)
  add_css_class(options, 'form-inline')
  form_tag(url_for_options, options, &block)
end
orig_text_field_tag(name, value = nil, opts = {})
Alias for: text_field_tag
radio_button_tag(name, value, checked = false, options = {}, &block) click to toggle source

rubocop:disable Style/OptionalBooleanParameter

Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 14
def radio_button_tag(name, value, checked = false, options = {}, &block)
  content_tag('div', class: 'radio') do
    content_tag('label') do
      concat(super)
      concat(capture(&block))
    end
  end
end
search_button() click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 62
def search_button
  button_tag(type: 'submit') do
    concat(icon_tag('search'))
    concat(' Search')
  end
end
search_filter_text_field(filter, placeholder) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 55
def search_filter_text_field(filter, placeholder)
  orig_text_field_tag(:filter, filter,
                      placeholder: placeholder,
                      autocomplete: 'off',
                      class: 'form-control')
end
search_form_input_tag(filter, placeholder) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 47
def search_form_input_tag(filter, placeholder)
  content_tag('div', class: 'row') do
    content_tag('div', grouped_search_field(
                         filter, placeholder
                       ), class: 'col-lg-12')
  end
end
search_form_tag(filter, url: nil, placeholder: 'Search within these entries') click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 40
def search_form_tag(filter, url: nil,
                    placeholder: 'Search within these entries')
  form_tag(url, method: :get) do
    field_block { search_form_input_tag(filter, placeholder) }
  end
end
select_tag(name, option_tags = nil, **opts) click to toggle source
Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 97
def select_tag(name, option_tags = nil, **opts)
  add_css_class(opts, 'form-control')
  super
end
text_area_tag(name, content = nil, opts = {}) click to toggle source
Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 87
def text_area_tag(name, content = nil, opts = {})
  add_css_class(opts, 'form-control')
  super
end
text_field_tag(name, value = nil, opts = {}) click to toggle source
Calls superclass method
# File lib/lipstick/helpers/form_helper.rb, line 82
def text_field_tag(name, value = nil, opts = {})
  add_css_class(opts, 'form-control')
  super
end
Also aliased as: orig_text_field_tag
validate_form(selector, sym = nil, &block) click to toggle source

Generates the wrapping code for validating a form. The selector is passed to jQuery, and must uniquely select the form being validated. ‘sym` is the object name when using a `form_for` helper to generate the form.

e.g. <%=

validate_form('#new-test-object', :test_object) do |v|
  v.validate_field(:name, ...) # Validate the test_object[name] field
end

%>

# File lib/lipstick/helpers/form_helper.rb, line 140
def validate_form(selector, sym = nil, &block)
  opts = {
    type: 'application/vnd.aaf.lipstick.validations+json',
    'data-target': selector,
    class: 'lipstick-validations'
  }

  content_tag('script', opts) do
    validation_json(sym, &block).html_safe
  end
end

Private Instance Methods

add_css_class(opts, class_name) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 179
def add_css_class(opts, class_name)
  opts[:class] = "#{opts[:class]} #{class_name}".strip
end
confirm_delete_dropdown(url, action) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 173
def confirm_delete_dropdown(url, action)
  link = link_to("Confirm #{action}", url, class: 'confirm-delete')
  item = content_tag('li', link)
  content_tag('ul', item, class: 'dropdown-menu')
end
delete_dropdown_opener(label, **opts) click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 160
def delete_dropdown_opener(label, **opts)
  opts = { 'aria-expanded': 'false', 'data-toggle': 'dropdown',
           type: 'button', 'aria-haspopup': 'true' }.merge(opts)

  add_css_class(opts, 'btn-small btn-danger dropdown-toggle')

  button_tag(opts) do
    concat(icon_tag('trash'))
    concat(' ')
    concat(label)
  end
end
validation_json(sym) { |v| ... } click to toggle source
# File lib/lipstick/helpers/form_helper.rb, line 154
def validation_json(sym)
  v = FormValidationBuilder.new(sym)
  yield v
  JSON.generate(v.to_h)
end