Sha256: 10d3e30ddc3c2c4d03aa424269c1b86a0f5e23e459789eea139952b6536e31b4

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

module BootstrapForm
  module CheckBoxPatch

    # TODO: post to upstream
    def check_box(name, options = {}, checked_value = "1", unchecked_value = "0", &block)
      options = options.symbolize_keys!
      check_box_options = options.except(:label, :label_class, :wrapper_class, :help, :inline)

      label_classes = [options[:label_class], 'form-check-label']
      unless options.delete(:skip_required)
        label_classes << "required" if required_attribute?(object, name)
      end
      options[:label_class] = label_classes.compact.join(' ')


      check_box_options[:class] = ['form-check-input', check_box_options[:class]].compact.join(' ')


      html = check_box_without_bootstrap(name, check_box_options, checked_value, unchecked_value)
      label_content = block_given? ? capture(&block) : options[:label]
      html.concat(' ').concat(label_content || (object && object.class.human_attribute_name(name)) || name.to_s.humanize)

      label_name = name
      # label's `for` attribute needs to match checkbox tag's id,
      # IE sanitized value, IE
      # https://github.com/rails/rails/blob/c57e7239a8b82957bcb07534cb7c1a3dcef71864/actionview/lib/action_view/helpers/tags/base.rb#L116-L118
      if options[:multiple]
        label_name =
          "#{name}_#{checked_value.to_s.gsub(/\s/, "_").gsub(/[^-\w]/, "").downcase}"
      end

      disabled_class = " disabled" if options[:disabled]
      label_class    = options[:label_class]

      if options[:inline]
        label_class = " #{label_class}" if label_class
        label(label_name, html, class: "checkbox-inline#{disabled_class}#{label_class}")
      else
        wrapper_class = ['form-checkbox', options[:wrapper_class]]
        wrapper_class << error_class if has_error?(name)
        wrapper_class = wrapper_class.compact.join(' ')
        content_tag(:div, class: "#{wrapper_class}#{disabled_class}") do
          label(label_name, html, class: label_class).concat(generate_help(name, options[:help]))
        end
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
egov_utils-0.2.0 lib/bootstrap_form/check_box_patch.rb
egov_utils-0.1.37 lib/bootstrap_form/check_box_patch.rb
egov_utils-0.1.36 lib/bootstrap_form/check_box_patch.rb
egov_utils-0.1.35 lib/bootstrap_form/check_box_patch.rb