Class: FlexiAdmin::Components::Shared::Autocomplete::ResultsComponent
- Inherits:
-
BaseComponent
- Object
- ViewComponent::Base
- BaseComponent
- FlexiAdmin::Components::Shared::Autocomplete::ResultsComponent
- Defined in:
- lib/flexi_admin/components/shared/autocomplete/results_component.rb
Instance Attribute Summary collapse
-
#action ⇒ Object
readonly
Returns the value of attribute action.
-
#context_params ⇒ Object
readonly
Returns the value of attribute context_params.
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#results ⇒ Object
readonly
Returns the value of attribute results.
-
#results_count ⇒ Object
readonly
Returns the value of attribute results_count.
Instance Method Summary collapse
- #autocomplete? ⇒ Boolean
- #data_action ⇒ Object
- #datalist? ⇒ Boolean
-
#initialize(results:, context_params:, results_count: nil) ⇒ ResultsComponent
constructor
A new instance of ResultsComponent.
- #value(result) ⇒ Object
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
#action ⇒ Object (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_params ⇒ Object (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 |
#fields ⇒ Object (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 |
#path ⇒ Object (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 |
#results ⇒ Object (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_count ⇒ Object (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
46 47 48 |
# File 'lib/flexi_admin/components/shared/autocomplete/results_component.rb', line 46 def autocomplete? action != "input" end |
#data_action ⇒ Object
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
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 |