class Primer::Alpha::ActionList::FormWrapper

Utility component for wrapping ActionLists or individual ActionList::Items in forms.

def extract_http_method(args)

def extract_http_method(args)
  if (http_method = args.delete(:method))
    HTTP_METHOD_OPTIONS.include?(http_method) ? http_method : DEFAULT_HTTP_METHOD
  else
    DEFAULT_HTTP_METHOD
  end
end

def form_required?

def form_required?
  @action && !get?
end

def get?

def get?
  @http_method == :get
end

def initialize(list:, action: nil, **form_arguments)

def initialize(list:, action: nil, **form_arguments)
  @list = list
  @form_arguments = form_arguments
  @action = action
  @http_method = extract_http_method(@form_arguments)
  name = @form_arguments.delete(:name)
  value = @form_arguments.delete(:value) || name
  inputs = @form_arguments.delete(:inputs) || []
  # For the older version of this component that only allowed you to
  # specify a single input
  if inputs.empty?
    inputs << {
      name: name,
      value: value,
      **(@form_arguments.delete(:input_arguments) || {})
    }
  end
  @inputs = inputs.map do |input_data|
    input_data = input_data.dup
    input_data[:type] ||= :hidden
    input_data[:data] ||= {}
    input_data[:data][:list_item_input] = true
    input_data
  end
end

def render_inputs?

def render_inputs?
  @inputs.present?
end