Sha256: 172866d9071cea894ad3b51cec238949961b8862244b8a7875451cb77ee97ef6

Contents?: true

Size: 989 Bytes

Versions: 6

Compression:

Stored size: 989 Bytes

Contents

module BulmaFormBuilder
  module Inputs
    module Base
      extend ActiveSupport::Concern

      ELEMENTS_WITH_INPUT_CLASS = %i[email_field url_field number_field password_field text_field].freeze

      class_methods do
        def bulma_field(field_name)
          define_method "#{field_name}_with_bulma" do |name, options = {}|
            form_field_builder(name, options) do
              classes = [options[:class]]
              classes <<= 'input' if ELEMENTS_WITH_INPUT_CLASS.include?(field_name)
              classes <<= 'is-danger' if error?(name)
              options[:class] = classes.compact.join(' ')

              send("#{field_name}_without_bulma".to_sym, name, options)
            end
          end

          bulma_alias(field_name)
        end

        def bulma_alias(field_name)
          alias_method "#{field_name}_without_bulma".to_sym, field_name
          alias_method field_name, "#{field_name}_with_bulma".to_sym
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
bulma_form_builder-0.4.3 lib/bulma_form_builder/inputs/base.rb
bulma_form_builder-0.4.2 lib/bulma_form_builder/inputs/base.rb
bulma_form_builder-0.4.1 lib/bulma_form_builder/inputs/base.rb
bulma_form_builder-0.4.0 lib/bulma_form_builder/inputs/base.rb
bulma_form_builder-0.3.1 lib/bulma_form_builder/inputs/base.rb
bulma_form_builder-0.3.0 lib/bulma_form_builder/inputs/base.rb