class Weaver::Accordion
Accordion
element
Public Class Methods
new(page, anchors)
click to toggle source
# File lib/weaver/element_types/accordion.rb, line 6 def initialize(page, anchors) @anchors = anchors @tabs = {} @paneltype = :panel @is_collapsed = false @page = page @anchors['accordia'] = [] unless @anchors['accordia'] accArray = @anchors['accordia'] @accordion_name = "accordion#{accArray.length}" accArray << @accordion_name end
Public Instance Methods
collapsed(isCollapsed)
click to toggle source
# File lib/weaver/element_types/accordion.rb, line 21 def collapsed(isCollapsed) @is_collapsed = isCollapsed end
generate()
click to toggle source
# File lib/weaver/element_types/accordion.rb, line 55 def generate tabbar = Elements.new(@page, @anchors) tabs = @tabs paneltype = @paneltype accordion_name = @accordion_name is_collapsed = @is_collapsed tabbar.instance_eval do div class: 'panel-group', id: accordion_name do cls = 'panel-collapse collapse in' cls = 'panel-collapse collapse' if is_collapsed tabs.each do |anchor, value| ibox do type paneltype body false title do div class: 'panel-title' do options = { "data-toggle": 'collapse', "data-parent": "##{accordion_name}", href: "##{anchor}" } if value[:mixpanel_event_name] props = {} if value[:mixpanel_event_props].is_a? Hash props = value[:mixpanel_event_props] end options[:onclick] = "mixpanel.track('#{value[:mixpanel_event_name]}', #{props.to_json.tr('"', "'")})" end a options do if value[:title].is_a? Symbol icon value[:title] else text value[:title] end end end end extra do div id: anchor, class: cls do div class: 'panel-body' do text value[:elem].generate end end end end cls = 'panel-collapse collapse' end end end tabbar.generate end
tab(title, options = {}, &block)
click to toggle source
# File lib/weaver/element_types/accordion.rb, line 29 def tab(title, options = {}, &block) @anchors['tabs'] = [] unless @anchors['tabs'] tabArray = @anchors['tabs'] elem = Elements.new(@page, @anchors) elem.instance_eval(&block) tabname = "tab#{tabArray.length}" tabArray << tabname @tabs[tabname] = { title: title, elem: elem } if options[:mixpanel_event_name] @tabs[tabname][:mixpanel_event_name] = options[:mixpanel_event_name] end if options[:mixpanel_event_props] @tabs[tabname][:mixpanel_event_props] = options[:mixpanel_event_props] end end
type(type)
click to toggle source
# File lib/weaver/element_types/accordion.rb, line 25 def type(type) @paneltype = type end