Sha256: 27d35f5121667c443e86afb051e5364ef70894a69aeb1368cdbb76aa19e3c0c3

Contents?: true

Size: 1.19 KB

Versions: 6

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Primer
  module Forms
    module Dsl
      # :nodoc:
      class CheckBoxInput < Input
        DEFAULT_SCHEME = :boolean
        SCHEMES = [DEFAULT_SCHEME, :array].freeze

        attr_reader :name, :label, :value, :scheme

        def initialize(name:, label:, value: nil, scheme: DEFAULT_SCHEME, **system_arguments)
          raise ArgumentError, "Check box scheme must be one of #{SCHEMES.join(', ')}" unless SCHEMES.include?(scheme)

          raise ArgumentError, "Check box needs an explicit value if scheme is array" if scheme == :array && value.nil?

          @name = name
          @label = label
          @value = value
          @scheme = scheme

          super(**system_arguments)
        end

        def to_component
          CheckBox.new(input: self)
        end

        def type
          :check_box
        end

        private

        def caption_template_name
          @caption_template_name ||= if @scheme == :array
                                       :"#{name}_#{value}"
                                     else
                                       name.to_sym
                                     end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
primer_view_components-0.0.100 lib/primer/forms/dsl/check_box_input.rb
primer_view_components-0.0.99 lib/primer/forms/dsl/check_box_input.rb
primer_view_components-0.0.98 lib/primer/forms/dsl/check_box_input.rb
primer_view_components-0.0.97 lib/primer/forms/dsl/check_box_input.rb
primer_view_components-0.0.96 lib/primer/forms/dsl/check_box_input.rb
primer_view_components-0.0.95 lib/primer/forms/dsl/check_box_input.rb