Class: FlexiAdmin::Components::Shared::Autocomplete::ResultsComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
lib/flexi_admin/components/shared/autocomplete/results_component.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(results:, context_params:, results_count: nil) ⇒ ResultsComponent

Returns a new instance of ResultsComponent.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 7

def initialize(results:, context_params:, results_count: nil)
  @results = results
  @results_count = results_count
  @context_params = context_params
  @action = context_params.params["ac_action"]
  @fields = context_params.params["ac_fields"]
  @path = context_params.params["ac_path"]

  raise "Action not defined" unless @action
  raise "Fields not defined" unless @fields
  raise "Path is required for show action" if action == "show" && !@path
  return unless results.present? && autocomplete? && fields.any? do |field|
    !results.first.respond_to?(field.to_sym)
  end

  raise "Field #{fields} not found on #{results.first.class.name}"
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def action
  @action
end

#context_paramsObject (readonly)

Returns the value of attribute context_params.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def context_params
  @context_params
end

#fieldsObject (readonly)

Returns the value of attribute fields.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def fields
  @fields
end

#pathObject (readonly)

Returns the value of attribute path.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def path
  @path
end

#resultsObject (readonly)

Returns the value of attribute results.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def results
  @results
end

#results_countObject (readonly)

Returns the value of attribute results_count.



5
6
7
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 5

def results_count
  @results_count
end

Instance Method Details

#autocomplete?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 46

def autocomplete?
  action != "input"
end

#data_actionObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 25

def data_action
  case action
  when "select"
    "click->autocomplete#select"
  when "input"
    "click->autocomplete#inputValue"
  else
    ""
  end
end

#datalist?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 42

def datalist?
  action == "input"
end

#value(result) ⇒ Object



36
37
38
39
40
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 36

def value(result)
  return result if datalist?

  fields.map { |field| result.try(field) }.join(" - ")
end