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:, rendering_mode:) ⇒ SectionComponent

rubocop:disable Lint/MissingSuper



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

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

  @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

#rendering_modeObject (readonly)

Returns the value of attribute rendering_mode.



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

def rendering_mode
  @rendering_mode
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



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

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



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

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

#dom_idObject

rubocop:enable Lint/MissingSuper



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

def dom_id
  "section-#{id}"
end

#renderObject



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

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

#tag_dataObject

rubocop:enable Rails/OutputSafety



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

def tag_data
  { maglev_section_id: id, maglev_section_type: type }
end