class Sirens::LayoutBuilder
Attributes
built_components[R]
built_props[R]
Accessing
Public Class Methods
new(root_component: nil)
click to toggle source
Initializing
Calls superclass method
# File lib/components_builder/layout_builder.rb, line 6 def initialize(root_component: nil) super() @root_component = root_component @built_props = Hash[] @built_components = [] end
Public Instance Methods
checkbox(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 137 def checkbox(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) @built_components << Checkbox.new(builder.built_props) end end
choices_list(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 171 def choices_list(props = Hash[], &build_block) columns_builder = ColumnsBuilder.new.render(props, &build_block) props[:popup_menu] = columns_builder.popup_menu unless columns_builder.popup_menu.nil? ListChoice.new(props).tap { |list| list.define_columns(columns_builder.columns) @built_components << list } end
choices_tree(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 199 def choices_tree(props = Hash[], &build_block) columns_builder = ColumnsBuilder.new.render(props, &build_block) props[:popup_menu] = columns_builder.get_popup_menu unless columns_builder.get_popup_menu.nil? TreeChoice.new(props).tap { |tree| tree.define_columns(columns_builder.columns) @built_components << tree } end
component(component)
click to toggle source
Containers
# File lib/components_builder/layout_builder.rb, line 51 def component(component) @built_components << component end
eval(props: Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 29 def eval(props: Hash[], &build_block) merge_props(props) instance_exec(@root_component, &build_block) unless build_block.nil? self end
horizontal_splitter(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 91 def horizontal_splitter(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Splitter.horizontal(builder.built_props).tap do |splitter| splitter.add_all_components(builder.built_components) @built_components << splitter end end end
horizontal_stack(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 67 def horizontal_stack(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Stack.horizontal(builder.built_props).tap do |stack| stack.add_all_components(builder.built_components) @built_components << stack end end end
input_text(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 183 def input_text(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) @built_components << InputText.new(builder.built_props) end end
list(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 159 def list(props = Hash[], &build_block) columns_builder = ColumnsBuilder.new.render(props, &build_block) props[:popup_menu] = columns_builder.popup_menu unless columns_builder.popup_menu.nil? List.new(props).tap { |list| list.define_columns(columns_builder.columns) @built_components << list } end
merge_props(props)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 45 def merge_props(props) @built_props.merge!(props) end
model(model)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 41 def model(model) merge_props(model: model) end
render(props: Hash[], &build_block)
click to toggle source
Building
# File lib/components_builder/layout_builder.rb, line 21 def render(props: Hash[], &build_block) eval(props: props, &build_block) @root_component.add_all_components(built_components) self end
styles(props)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 37 def styles(props) merge_props(props) end
tabs(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 115 def tabs(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Tabs.new(builder.built_props).tap do |tabs| tabs.add_all_components(builder.built_components) @built_components << tabs end end end
text(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 191 def text(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) @built_components << Text.new(builder.built_props) end end
vertical_splitter(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 103 def vertical_splitter(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Splitter.vertical(builder.built_props).tap do |splitter| splitter.add_all_components(builder.built_components) @built_components << splitter end end end
vertical_stack(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 79 def vertical_stack(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Stack.vertical(builder.built_props).tap do |stack| stack.add_all_components(builder.built_components) @built_components << stack end end end
window(props = Hash[], &build_block)
click to toggle source
# File lib/components_builder/layout_builder.rb, line 55 def window(props = Hash[], &build_block) LayoutBuilder.new.tap do |builder| builder.eval(props: props, &build_block) Window.new(builder.built_props).tap do |window| window.add_all_components(builder.built_components) @built_components << window end end end