class Primer::Forms::AutoComplete

:nodoc:

def self.auto_complete_argument_names

def self.auto_complete_argument_names
  @auto_complete_argument_names ||=
    Primer::Beta::AutoComplete.instance_method(:initialize)
      .parameters
      .filter_map { |(type, param_name)| next param_name if ARGUMENT_TYPES.include?(type) }
end

def all_input_arguments

def all_input_arguments
  @all_input_arguments ||= @input.input_arguments.deep_dup.tap do |args|
    # rails uses :class but PVC wants :classes
    args[:classes] = class_names(
      args[:classes],
      args.delete(:class)
    )
  end
end

def auto_complete_arguments

def auto_complete_arguments
  all_args = all_input_arguments
  all_args
    .slice(*self.class.auto_complete_argument_names)
    .merge(
      input_name: all_args[:name],
      input_id: all_args[:id],
      label_text: @input.label,
      list_id: "#{all_args[:id]}-list",
      full_width: @input.full_width?
    )
end

def initialize(input:)

def initialize(input:)
  @input = input
  @input.merge_input_arguments!(text_field_attributes.deep_symbolize_keys)
end

def input_arguments

def input_arguments
  all_input_arguments.except(*self.class.auto_complete_argument_names, :id, :name)
end

def text_field_attributes

def text_field_attributes
  builder.text_field_attributes(@input.name).except("size", "value")
end