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