Class: Ui::Checklist::ContainerComponent

Inherits:
SparkComponents::Component
  • Object
show all
Defined in:
app/components/spark/ui/checklist/container_component.rb

Instance Method Summary collapse

Instance Method Details

#before_renderObject



15
16
17
18
19
# File 'app/components/spark/ui/checklist/container_component.rb', line 15

def before_render
  @completed_items = @items.select { |item| item.completed == true }
  @items = @items.sort_by { |item| item.completed ? 1 : 0 }
  data_attr checklist_id: unique_id
end

#renderObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/components/spark/ui/checklist/container_component.rb', line 21

def render
  button_attrs = root_attr.new(data: { toggle_class: %(collapsed; #{selector(:data, :checklist_id)}) })

  add_class('collapsed') if can_collapse?
  add_class('completed') if complete?

  tag.div(tag_attrs) {
    if complete?
      concat complete_content unless complete_content.blank?
    else
      items.each_with_index { |item, index|
        concat tag.div(class: can_collapse? && collapse_after - 1 < index ? 'collapse-item' : '') {
          concat item
        }
      }
      if can_collapse?
        concat tag.div(class: 'item-collapser') {
          # these can use translated text/i18n later from a new attribute
          concat tag.button('View full list', button_attrs.merge(class: 'view-list'))
          concat tag.button('Collapse list', button_attrs.merge(class: 'collapse-list'))
        }
      end
    end
  }
end