Class: Blacklight::FacetComponent

Inherits:
ViewComponent::Base
  • Object
show all
Defined in:
app/components/blacklight/facet_component.rb

Overview

Renders a single section for facet limit with a specified solr field used for faceting. This renders no UI of it's own, but renders the component that is configured for the facet.

Instance Method Summary collapse

Constructor Details

#initialize(display_facet_or_field_config: nil, display_facet: nil, field_config: nil, response: nil, blacklight_config: nil, **component_args) ⇒ FacetComponent

Returns a new instance of FacetComponent.

Parameters:



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/components/blacklight/facet_component.rb', line 14

def initialize(display_facet_or_field_config: nil, display_facet: nil, field_config: nil, response: nil, blacklight_config: nil, **component_args)
  if display_facet_or_field_config.is_a?(Blacklight::Configuration::Field) || field_config
    @field_config = display_facet_or_field_config || field_config
    @display_facet = display_facet || (response && response.aggregations[@field_config.field])
  elsif (display_facet || display_facet_or_field_config).respond_to?(:name)
    @display_facet = display_facet || display_facet_or_field_config
    @field_config = field_config || blacklight_config&.facet_configuration_for_field(@display_facet.name)
  else
    raise ArgumentError, 'You must provide one of display_facet or field_config' unless @field_config
  end

  @component_args = component_args
end

Instance Method Details

#callObject



32
33
34
35
36
37
38
39
40
41
# File 'app/components/blacklight/facet_component.rb', line 32

def call
  component = @field_config.component == true ? Blacklight::FacetFieldListComponent : @field_config.component

  render(
    component.new(
      facet_field: helpers.facet_field_presenter(@field_config, @display_facet),
      **@component_args
    )
  )
end

#render?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'app/components/blacklight/facet_component.rb', line 28

def render?
  helpers.should_render_field?(@field_config, @display_facet)
end