|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | 3 | module Blacklight |
4 | | - class FacetItemComponent < Blacklight::Component |
5 | | - attr_reader :label, :href, :hits |
6 | | - |
7 | | - with_collection_parameter :facet_item |
8 | | - |
9 | | - def initialize(facet_item:, wrapping_element: 'li', suppress_link: false) |
10 | | - @facet_item = facet_item |
11 | | - @label = facet_item.label |
12 | | - @hits = facet_item.hits |
13 | | - @href = facet_item.href |
14 | | - @selected = facet_item.selected? |
15 | | - @wrapping_element = wrapping_element |
16 | | - @suppress_link = suppress_link |
17 | | - end |
18 | | - |
19 | | - def call |
20 | | - # if the downstream app has overridden the helper methods we'd usually call, |
21 | | - # use the helpers to preserve compatibility |
22 | | - content = if @selected |
23 | | - render_selected_facet_value |
24 | | - else |
25 | | - render_facet_value |
26 | | - end |
27 | | - |
28 | | - return '' if content.blank? |
29 | | - return content unless @wrapping_element |
30 | | - |
31 | | - content_tag @wrapping_element, content |
32 | | - end |
33 | | - |
34 | | - ## |
35 | | - # Standard display of a facet value in a list. Used in both _facets sidebar |
36 | | - # partial and catalog/facet expanded list. Will output facet value name as |
37 | | - # a link to add that to your restrictions, with count in parens. |
38 | | - # |
39 | | - # @return [String] |
40 | | - # @private |
41 | | - def render_facet_value |
42 | | - tag.span(class: "facet-label") do |
43 | | - link_to_unless(@suppress_link, label, href, class: "facet-select", rel: "nofollow") |
44 | | - end + render_facet_count |
45 | | - end |
46 | | - |
47 | | - ## |
48 | | - # Standard display of a SELECTED facet value (e.g. without a link and with a remove button) |
49 | | - # @see #render_facet_value |
50 | | - # |
51 | | - # @private |
52 | | - def render_selected_facet_value |
53 | | - tag.span(class: "facet-label") do |
54 | | - tag.span(label, class: "selected") + |
55 | | - # remove link |
56 | | - link_to(href, class: "remove", rel: "nofollow") do |
57 | | - render(Blacklight::Icons::RemoveComponent.new(aria_hidden: true)) + |
58 | | - tag.span(helpers.t(:'blacklight.search.facets.selected.remove'), class: 'visually-hidden') |
59 | | - end |
60 | | - end + render_facet_count(classes: ["selected"]) |
61 | | - end |
62 | | - |
63 | | - ## |
64 | | - # Renders a count value for facet limits. Can be over-ridden locally |
65 | | - # to change style. And can be called by plugins to get consistent display. |
66 | | - # |
67 | | - # @param [Hash] options |
68 | | - # @option options [Array<String>] an array of classes to add to count span. |
69 | | - # @return [String] |
70 | | - # @private |
71 | | - def render_facet_count(options = {}) |
72 | | - return '' if hits.blank? |
73 | | - |
74 | | - classes = (options[:classes] || []) << "facet-count" |
75 | | - tag.span(t('blacklight.search.facets.count', number: number_with_delimiter(hits)), class: classes) |
76 | | - end |
77 | | - end |
| 4 | + class FacetItemComponent < Facets::ItemComponent; end |
| 5 | + FacetItemComponent = ActiveSupport::Deprecation::DeprecatedConstantProxy.new("FacetItemComponent", "Blacklight::Facets::ItemComponent", ActiveSupport::Deprecation.new) |
78 | 6 | end |
0 commit comments