Class: SdrViewComponents::Tables::BaseTableComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/sdr_view_components/tables/base_table_component.rb

Overview

Base component for rendering a table.

Direct Known Subclasses

RawTableComponent, TableComponent

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseComponent

#args_for, #merge_actions, #merge_classes

Constructor Details

#initialize(label: nil, classes: [], head_classes: [], body_classes: [], show_label: true, empty_message: nil, responsive: false, variant: :h3, **table_options) ⇒ BaseTableComponent

Subclasses should provide rows, e.g., renders_many :rows

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 11

def initialize(label: nil, classes: [], head_classes: [], body_classes: [], show_label: true, # rubocop:disable Metrics/ParameterLists, Metrics/MethodLength
               empty_message: nil, responsive: false, variant: :h3, **table_options)
  @classes = classes
  @body_classes = body_classes
  @label = label
  @show_label = show_label
  @empty_message = empty_message
  @head_classes = head_classes
  @responsive = responsive
  @table_options = table_options
  @variant = variant
  raise ArgumentError, 'Unknown variant' unless %i[h3 data].include?(@variant)

  raise ArgumentError, 'Subclasses must provide rows' unless respond_to?(:rows)

  super()
end

Instance Attribute Details

#empty_messageObject (readonly)

Returns the value of attribute empty_message.



29
30
31
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 29

def empty_message
  @empty_message
end

#labelObject (readonly)

Returns the value of attribute label.



29
30
31
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 29

def label
  @label
end

#table_optionsObject (readonly)

Returns the value of attribute table_options.



29
30
31
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 29

def table_options
  @table_options
end

#variantObject (readonly)

Returns the value of attribute variant.



29
30
31
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 29

def variant
  @variant
end

Instance Method Details

#before_renderObject

Raises:

  • (ArgumentError)


31
32
33
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 31

def before_render
  raise ArgumentError, 'Must provide label or caption' unless label.present? || caption?
end

#body_classesObject



43
44
45
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 43

def body_classes
  merge_classes(@body_classes)
end

#classesObject



35
36
37
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 35

def classes
  merge_classes(%w[table caption-top], variant_classes, @classes)
end

#head_classesObject



39
40
41
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 39

def head_classes
  merge_classes(@head_classes)
end

#render?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 51

def render?
  rows? || empty_message.present?
end

#responsive?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 55

def responsive?
  @responsive
end

#show_label?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 47

def show_label?
  @show_label
end

#variant_classesObject



59
60
61
62
63
64
65
66
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 59

def variant_classes
  case variant
  when :h3
    'table-h3'
  when :data
    'table-data table-striped table-hover table-bordered'
  end
end