Class: Blacklight::DocumentComponent

Inherits:
Component
  • Object
show all
Includes:
ContentAreasShim
Defined in:
app/components/blacklight/document_component.rb

Instance Method Summary collapse

Methods included from ContentAreasShim

#with

Methods inherited from Component

compiler

Constructor Details

#initialize(document: nil, presenter: nil, id: nil, classes: [], component: :article, title_component: nil, metadata_component: nil, embed_component: nil, thumbnail_component: nil, counter: nil, document_counter: nil, counter_offset: 0, show: false) ⇒ DocumentComponent

rubocop:disable Metrics/ParameterLists

Parameters:

  • document (Blacklight::Document) (defaults to: nil)
  • presenter (Blacklight::DocumentPresenter) (defaults to: nil)
  • id (String) (defaults to: nil)

    HTML id for the root element

  • classes (Array, String) (defaults to: [])

    additional HTML classes for the root element

  • component (Symbol, String) (defaults to: :article)

    HTML tag type to use for the root element

  • title_component (Symbol, String) (defaults to: nil)

    HTML tag type to use for the title element

  • counter (Number, nil) (defaults to: nil)

    a pre-computed counter for the position of this document in a search result set

  • document_counter (Number, nil) (defaults to: nil)

    alternatively, the document's position in a collection and,

  • counter_offset (Number) (defaults to: 0)

    with `document_counter`, the offset of the start of that collection counter to the overall result set

  • show (Boolean) (defaults to: false)

    are we showing only a single document (vs a list of search results); used for backwards-compatibility



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'app/components/blacklight/document_component.rb', line 76

def initialize(document: nil, presenter: nil,
               id: nil, classes: [], component: :article, title_component: nil,
               metadata_component: nil,
               embed_component: nil,
               thumbnail_component: nil,
               counter: nil, document_counter: nil, counter_offset: 0,
               show: false)
  if presenter.nil? && document.nil?
    raise ArgumentError, 'missing keyword: :document or :presenter'
  end

  @document = document || presenter&.document
  @presenter = presenter

  @component = component
  @title_component = title_component
  @id = id || ('document' if show)
  @classes = classes

  Deprecation.warn(Blacklight::DocumentComponent, 'Passing embed_component is deprecated') if @embed_component.present?
  @embed_component = embed_component

  Deprecation.warn(Blacklight::DocumentComponent, 'Passing metadata_component is deprecated') if @metadata_component.present?
  @metadata_component =  || Blacklight::DocumentMetadataComponent

  Deprecation.warn(Blacklight::DocumentComponent, 'Passing thumbnail_component is deprecated') if @thumbnail_component.present?
  @thumbnail_component = thumbnail_component || Blacklight::Document::ThumbnailComponent

  @document_counter = document_counter
  @counter = counter
  @counter ||= document_counter + 1 + counter_offset if document_counter.present?

  @show = show
end

Instance Method Details

#before_renderObject



122
123
124
125
126
127
# File 'app/components/blacklight/document_component.rb', line 122

def before_render
  set_slot(:title, nil) unless title
  set_slot(:thumbnail, nil, component: @thumbnail_component || presenter.view_config&.thumbnail_component) unless thumbnail || show?
  set_slot(:metadata, nil, component: @metadata_component, fields: presenter.field_presenters) unless 
  set_slot(:embed, nil, component: @embed_component || presenter.view_config&.embed_component) unless embed
end

#classesObject

HTML classes to apply to the root element



113
114
115
116
117
118
119
120
# File 'app/components/blacklight/document_component.rb', line 113

def classes
  [
    @classes,
    helpers.render_document_class(@document),
    'document',
    ("document-position-#{@counter}" if @counter)
  ].compact.flatten
end