class Trestle::Toolbar::Item

Attributes

label[R]
menu[R]

Public Class Methods

new(template, label, options={}, &block) click to toggle source
# File lib/trestle/toolbar/item.rb, line 8
def initialize(template, label, options={}, &block)
  @template = template
  @label, @options, @block = label, options

  @menu = Menu.new(template)
  @menu.build(&block) if block_given?

  @icon = options.delete(:icon)
  @style = options.delete(:style)
end

Public Instance Methods

==(other) click to toggle source
# File lib/trestle/toolbar/item.rb, line 19
def ==(other)
  to_s == other.to_s
end
button_classes() click to toggle source
# File lib/trestle/toolbar/item.rb, line 48
def button_classes
  classes = (@options[:class] || "").split(/\s/)
  classes.push(*button_style_classes)
  classes.push("has-icon") if @icon
  classes.uniq
end
button_label(content, options) click to toggle source
# File lib/trestle/toolbar/item.rb, line 55
def button_label(content, options)
  icon = icon(@icon) if @icon
  label = content_tag(:span, content, class: "btn-label")

  safe_join([icon, label].compact, " ")
end
button_style() click to toggle source
# File lib/trestle/toolbar/item.rb, line 62
def button_style
  @style || "default"
end
button_style_classes() click to toggle source
# File lib/trestle/toolbar/item.rb, line 66
def button_style_classes
  ["btn", "btn-#{button_style}"]
end
options() click to toggle source
# File lib/trestle/toolbar/item.rb, line 44
def options
  @options.merge(class: button_classes)
end
render() click to toggle source
# File lib/trestle/toolbar/item.rb, line 33
def render
  raise NotImplementedError
end
render_menu() click to toggle source
# File lib/trestle/toolbar/item.rb, line 37
def render_menu
  [
    menu.render_toggle(class: button_style_classes),
    menu.render_items
  ]
end
to_s() click to toggle source
# File lib/trestle/toolbar/item.rb, line 23
def to_s
  if menu.items.any?
    content_tag(:div, class: "btn-group", role: "group") do
      safe_join([render, render_menu], "\n")
    end
  else
    render
  end
end