Class: Primer::Alpha::ActionList::FormWrapper

Inherits:
Component
  • Object
show all
Defined in:
app/components/primer/alpha/action_list/form_wrapper.rb

Overview

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

Constant Summary collapse

DEFAULT_HTTP_METHOD =
:get
HTTP_METHOD_OPTIONS =
[
  DEFAULT_HTTP_METHOD,
  :post,
  :patch,
  :put,
  :delete,
  :head
].freeze

Constants inherited from Component

Component::INVALID_ARIA_LABEL_TAGS

Constants included from Status::Dsl

Status::Dsl::STATUSES

Constants included from ViewHelper

ViewHelper::HELPERS

Constants included from TestSelectorHelper

TestSelectorHelper::TEST_SELECTOR_TAG

Constants included from FetchOrFallbackHelper

FetchOrFallbackHelper::InvalidValueError

Constants included from Primer::AttributesHelper

Primer::AttributesHelper::PLURAL_ARIA_ATTRIBUTES, Primer::AttributesHelper::PLURAL_DATA_ATTRIBUTES

Instance Method Summary collapse

Methods inherited from Component

deprecated?, generate_id

Methods included from JoinStyleArgumentsHelper

#join_style_arguments

Methods included from TestSelectorHelper

#add_test_selector

Methods included from FetchOrFallbackHelper

#fetch_or_fallback, #fetch_or_fallback_boolean, #silence_deprecations?

Methods included from ClassNameHelper

#class_names

Methods included from Primer::AttributesHelper

#aria, #data, #merge_aria, #merge_data, #merge_prefixed_attribute_hashes

Constructor Details

#initialize(list:, action: nil, **form_arguments) ⇒ FormWrapper

Returns a new instance of FormWrapper.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/components/primer/alpha/action_list/form_wrapper.rb', line 18

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

  @input_arguments = {
    type: :hidden,
    name: name,
    value: value,
    data: { list_item_input: true },
    **(@form_arguments.delete(:input_arguments) || {})
  }
end

Instance Method Details

#form_required?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/components/primer/alpha/action_list/form_wrapper.rb', line 41

def form_required?
  @action && !get?
end

#get?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/components/primer/alpha/action_list/form_wrapper.rb', line 37

def get?
  @http_method == :get
end

#render_input?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/components/primer/alpha/action_list/form_wrapper.rb', line 45

def render_input?
  @input_arguments[:name].present?
end