Class: Maglev::SectionComponent

Inherits:
BaseComponent show all
Extended by:
Forwardable
Includes:
TagHelper
Defined in:
app/components/maglev/section_component.rb

Instance Attribute Summary collapse

Attributes inherited from BaseComponent

#view_context

Instance Method Summary collapse

Methods included from TagHelper

#setting_tag, #wrapper_tag

Methods inherited from BaseComponent

#build, #build_content, #build_settings_map, #settings_proxy

Constructor Details

#initialize(parent:, attributes:, definition:, templates_root_path:) ⇒ SectionComponent

rubocop:disable Lint/MissingSuper



13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/components/maglev/section_component.rb', line 13

def initialize(parent:, attributes:, definition:, templates_root_path:)
  @parent = parent # aka a PageComponent
  @id = attributes[:id]
  @type = attributes[:type]
  @definition = definition
  @attributes = attributes
  @templates_root_path = templates_root_path

  @settings = settings_proxy(
    build_settings_map(attributes[:settings])
  )
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def attributes
  @attributes
end

#definitionObject (readonly)

Returns the value of attribute definition.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def definition
  @definition
end

#idObject (readonly)

Returns the value of attribute id.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def id
  @id
end

#parentObject (readonly)

Returns the value of attribute parent.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def parent
  @parent
end

#settingsObject (readonly)

Returns the value of attribute settings.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def settings
  @settings
end

#templates_root_pathObject (readonly)

Returns the value of attribute templates_root_path.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def templates_root_path
  @templates_root_path
end

#typeObject (readonly)

Returns the value of attribute type.



10
11
12
# File 'app/components/maglev/section_component.rb', line 10

def type
  @type
end

Instance Method Details

#blocksObject



41
42
43
44
45
46
47
48
49
# File 'app/components/maglev/section_component.rb', line 41

def blocks
  return @blocks if @blocks

  @blocks = if definition.blocks_presentation == 'tree'
              build_block_tree
            else
              build_block_list
            end
end

#dom_dataObject

rubocop:disable Rails/OutputSafety



32
33
34
# File 'app/components/maglev/section_component.rb', line 32

def dom_data
  "data-maglev-section-id=\"#{id}\"".html_safe
end

#dom_idObject

rubocop:enable Lint/MissingSuper



27
28
29
# File 'app/components/maglev/section_component.rb', line 27

def dom_id
  "section-#{id}"
end

#renderObject



51
52
53
54
55
56
# File 'app/components/maglev/section_component.rb', line 51

def render
  super(
    template: "#{templates_root_path}/sections/#{definition.category}/#{type}",
    locals: { section: self, maglev_section: self }
  )
end

#tag_dataObject

rubocop:enable Rails/OutputSafety



37
38
39
# File 'app/components/maglev/section_component.rb', line 37

def tag_data
  { maglev_section_id: id }
end