Class: SdrViewComponents::Tables::BaseTableComponent
- Inherits:
-
BaseComponent
- Object
- ViewComponent::Base
- BaseComponent
- SdrViewComponents::Tables::BaseTableComponent
show all
- Defined in:
- app/components/sdr_view_components/tables/base_table_component.rb
Overview
Base component for rendering a table.
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#before_render ⇒ Object
-
#body_classes ⇒ Object
-
#classes ⇒ Object
-
#head_classes ⇒ Object
-
#initialize(label: nil, classes: [], head_classes: [], body_classes: [], show_label: true, empty_message: nil, responsive: false, variant: :h3, **table_options) ⇒ BaseTableComponent
constructor
Subclasses should provide rows, e.g., renders_many :rows.
-
#render? ⇒ Boolean
-
#responsive? ⇒ Boolean
-
#show_label? ⇒ Boolean
-
#variant_classes ⇒ Object
#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
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, 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_message ⇒ Object
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
|
#label ⇒ Object
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_options ⇒ Object
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
|
#variant ⇒ Object
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_render ⇒ Object
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_classes ⇒ Object
43
44
45
|
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 43
def body_classes
merge_classes(@body_classes)
end
|
#classes ⇒ Object
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_classes ⇒ Object
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
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
55
56
57
|
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 55
def responsive?
@responsive
end
|
#show_label? ⇒ Boolean
47
48
49
|
# File 'app/components/sdr_view_components/tables/base_table_component.rb', line 47
def show_label?
@show_label
end
|
#variant_classes ⇒ Object
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
|