Sha256: c2dadaea9a948e3bbddc3f44355c8bbadb24e6e300979bc58ac6286ea3c6657f

Contents?: true

Size: 1.21 KB

Versions: 8

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

require "primer/classify"

module Primer
  module Forms
    # :nodoc:
    class Builder < ActionView::Helpers::FormBuilder
      include Primer::ClassNameHelper

      UTILITY_KEYS = Primer::Classify::Utilities::UTILITIES.keys.freeze

      def label(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      def check_box(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      def radio_button(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      def select(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      def text_field(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      def text_area(*args, **options, &block)
        super(*args, classify(options), &block)
      end

      private

      def classify(options)
        options[:classes] = class_names(options.delete(:class), options[:classes])
        options.merge!(Primer::Classify.call(options))
        options.except!(*UTILITY_KEYS)
        options[:class] = class_names(options[:class], options.delete(:classes))
        options
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
primer_view_components-0.0.94 lib/primer/forms/builder.rb
primer_view_components-0.0.93 lib/primer/forms/builder.rb
primer_view_components-0.0.92 lib/primer/forms/builder.rb
primer_view_components-0.0.91 lib/primer/forms/builder.rb
primer_view_components-0.0.90 lib/primer/forms/builder.rb
primer_view_components-0.0.89 lib/primer/forms/builder.rb
primer_view_components-0.0.88 lib/primer/forms/builder.rb
primer_view_components-0.0.87 lib/primer/forms/builder.rb