Class: Blacklight::FacetItemComponent

Inherits:
Component
  • Object
show all
Defined in:
app/components/blacklight/facet_item_component.rb

Constant Summary

Constants inherited from Component

Component::EXCLUDE_VARIABLES

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Component

compiler, config, #inspect

Constructor Details

#initialize(facet_item:, wrapping_element: 'li', suppress_link: false) ⇒ FacetItemComponent

Returns a new instance of FacetItemComponent.



9
10
11
12
13
14
15
16
17
# File 'app/components/blacklight/facet_item_component.rb', line 9

def initialize(facet_item:, wrapping_element: 'li', suppress_link: false)
  @facet_item = facet_item
  @label = facet_item.label
  @hits = facet_item.hits
  @href = facet_item.href
  @selected = facet_item.selected?
  @wrapping_element = wrapping_element
  @suppress_link = suppress_link
end

Instance Attribute Details

#hitsObject (readonly)

Returns the value of attribute hits.



5
6
7
# File 'app/components/blacklight/facet_item_component.rb', line 5

def hits
  @hits
end

#hrefObject (readonly)

Returns the value of attribute href.



5
6
7
# File 'app/components/blacklight/facet_item_component.rb', line 5

def href
  @href
end

#labelObject (readonly)

Returns the value of attribute label.



5
6
7
# File 'app/components/blacklight/facet_item_component.rb', line 5

def label
  @label
end

Instance Method Details

#callObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/components/blacklight/facet_item_component.rb', line 19

def call
  # if the downstream app has overridden the helper methods we'd usually call,
  # use the helpers to preserve compatibility
  content = if @selected
              render_selected_facet_value
            else
              render_facet_value
            end

  return '' if content.blank?
  return content unless @wrapping_element

   @wrapping_element, content
end

#render_facet_count(options = {}) ⇒ String

Renders a count value for facet limits. Can be over-ridden locally to change style. And can be called by plugins to get consistent display.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • an (Array<String>)

    array of classes to add to count span.

Returns:

  • (String)


71
72
73
74
75
76
# File 'app/components/blacklight/facet_item_component.rb', line 71

def render_facet_count(options = {})
  return '' if hits.blank?

  classes = (options[:classes] || []) << "facet-count"
  tag.span(t('blacklight.search.facets.count', number: number_with_delimiter(hits)), class: classes)
end

#render_facet_valueString

Standard display of a facet value in a list. Used in both _facets sidebar partial and catalog/facet expanded list. Will output facet value name as a link to add that to your restrictions, with count in parens.

Returns:

  • (String)


41
42
43
44
45
# File 'app/components/blacklight/facet_item_component.rb', line 41

def render_facet_value
  tag.span(class: "facet-label") do
    link_to_unless(@suppress_link, label, href, class: "facet-select", rel: "nofollow")
  end + render_facet_count
end

#render_selected_facet_valueObject

Standard display of a SELECTED facet value (e.g. without a link and with a remove button)



52
53
54
55
56
57
58
59
60
61
# File 'app/components/blacklight/facet_item_component.rb', line 52

def render_selected_facet_value
  tag.span(class: "facet-label") do
    tag.span(label, class: "selected") +
      # remove link
      link_to(href, class: "remove", rel: "nofollow") do
        render(Blacklight::Icons::RemoveComponent.new) +
          tag.span(helpers.t(:'blacklight.search.facets.selected.remove'), class: 'sr-only visually-hidden')
      end
  end + render_facet_count(classes: ["selected"])
end