Class: Impulse::AutocompleteComponent

Inherits:
ApplicationComponent show all
Defined in:
app/components/impulse/autocomplete_component.rb

Constant Summary collapse

DEFAULT_SIZE =
:md
SIZE_MAPPINGS =
{
  :sm => "awc-autocomplete--sm",
  DEFAULT_SIZE => "",
  :lg => "awc-autocomplete--lg"
}.freeze

Instance Method Summary collapse

Methods inherited from ApplicationComponent

generate_id

Methods included from Helpers::AttributesHelper

#merge_attributes

Constructor Details

#initialize(object_name, method_name, selected: nil, size: DEFAULT_SIZE, name: nil, input_id: nil, placeholder: nil, include_hidden: true, disabled: false, clearable: true, namespace: nil, skip_default_ids: false, allow_method_names_outside_object: true, **system_args) ⇒ AutocompleteComponent

Returns a new instance of AutocompleteComponent.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/components/impulse/autocomplete_component.rb', line 17

def initialize(
  object_name,
  method_name,
  selected: nil,
  size: DEFAULT_SIZE,
  name: nil,
  input_id: nil,
  placeholder: nil,
  include_hidden: true,
  disabled: false,
  clearable: true,
  namespace: nil,
  skip_default_ids: false,
  allow_method_names_outside_object: true,
  **system_args
)
  @object_name = object_name
  @method_name = method_name
  @selected = selected
  @size = size.to_s
  @name = name
  @input_id = input_id
  @placeholder = placeholder
  @include_hidden = include_hidden
  @disabled = disabled
  @clearable = clearable
  @namespace = namespace
  @skip_default_ids = skip_default_ids
  @allow_method_names_outside_object = allow_method_names_outside_object
  @system_args = system_args
  @system_args[:tag] = :"awc-autocomplete"
  @system_args[:disabled] = disabled

  @system_args[:class] = class_names(
    system_args[:class],
    SIZE_MAPPINGS[fetch_or_fallback(SIZE_MAPPINGS.keys, size, DEFAULT_SIZE)],
    "awc-autocomplete",
    "awc-autocomplete--selected": @selected.present?,
    "awc-autocomplete--clearable": @clearable
  )

  @system_args[:"data-loosely-focusable"] = "true"
  @system_args[:data] = merge_attributes(
    system_args[:data],
    action: "mousedown->awc-autocomplete#handleMousedown click->awc-autocomplete#handleClick combobox:commit->awc-autocomplete#handleCommit"
  )
end