Sha256: be2a5b9a106093026f0b4195202e1436d12656170e5a843ca3fba1575fc90120
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
module Trestle class Toolbar class Builder def initialize(template) @template = template end def button(content, options={}) options[:class] = button_classes_from_options(options) button_tag(button_label(content, options), options) end def link(content, instance_or_url={}, options={}) options = instance_or_url if instance_or_url.is_a?(Hash) options[:class] = button_classes_from_options(options) admin_link_to(button_label(content, options), instance_or_url, options) end # Only methods explicitly tagged as builder methods will be automatically # appended to the toolbar when called by Toolbar::Context. class_attribute :builder_methods self.builder_methods = [] def self.builder_method(*methods) self.builder_methods += methods end builder_method :button, :link private delegate :admin_link_to, :button_tag, :content_tag, :safe_join, :icon, to: :@template def button_classes_from_options(options) classes = (options[:class] || "").split("\s") classes.unshift("btn-#{options.delete(:style) || "default"}") classes.unshift("btn") unless classes.include?("btn") classes.push("has-icon") if options[:icon] classes end def button_label(content, options) icon = icon(options.delete(:icon)) if options[:icon] label = content_tag(:span, content, class: "btn-label") safe_join([icon, label].compact, " ") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
trestle-0.8.11 | lib/trestle/toolbar/builder.rb |
trestle-0.8.10 | lib/trestle/toolbar/builder.rb |