class BootstrapBuilders::ButtonDropDown
Attributes
view_context[RW]
Public Class Methods
new(*args)
click to toggle source
# File lib/bootstrap_builders/button_drop_down.rb, line 4 def initialize(*args) args_parser = BootstrapBuilders::ArgumentsParser.new( arguments: args, short_true_arguments: [:block, :danger, :link, :info, :primary, :sm, :warning, :xs] ) args_parser.arguments_hash[:label] ||= args.shift if args.first.is_a?(String) @args = args_parser.arguments_hash @buttons = [] end
Public Instance Methods
html()
click to toggle source
# File lib/bootstrap_builders/button_drop_down.rb, line 30 def html btn_group = HtmlGen::Element.new(:div, classes: ["btn-group"]) main_button = btn_group.add_ele( :button, attr: { "aria-haspopup" => true, "aria-exapended" => false, type: "button" }, classes: classes.classes, data: { toggle: "dropdown" } ) main_button.add_ele(:i, classes: ["fa", "fa-fw", "fa-#{@args.fetch(:icon)}"]) if @args[:icon].present? main_button.add_str(@args.fetch(:label)) if @args[:label].present? main_button.add_ele(:span, classes: ["caret"]) if !@args.key?(:caret) || @args[:cart] ul = btn_group.add_ele(:ul, classes: ["dropdown-menu"]) @buttons.each do |button| li = ul.add_ele(:li) link_args = {class: BootstrapBuilders::ClassAttributeHandler.short(button[:class])} link_args.deep_merge!(data: {confirm: I18n.t("are_you_sure")}) if button[:confirm] link_args.deep_merge!(data: {method: button[:method]}) if button[:method].present? link_args.deep_merge!(data: button[:data]) if button[:data] link = view_context.link_to(button.fetch(:url), link_args) do if button[:icon] view_context.safe_join [view_context.content_tag(:i, nil, class: ["fa", "fa-fw", "fa-#{button.fetch(:icon)}"]), " ", button.fetch(:label)] else button.fetch(:label) end end li.add_html(link) end btn_group.html end
option(*args)
click to toggle source
# File lib/bootstrap_builders/button_drop_down.rb, line 15 def option(*args) args_parser = BootstrapBuilders::ArgumentsParser.new( arguments: args, short_true_arguments: [:confirm] ) args = args_parser.arguments args_parser.arguments_hash[:url] ||= args.shift if args.first.is_a?(Array) || args.first.is_a?(String) || is_an_active_record || is_a_baza_model args_parser.arguments_hash[:label] ||= args.shift if args.first.is_a?(String) @buttons << args_parser.arguments_hash end
Private Instance Methods
add_default_as_default()
click to toggle source
# File lib/bootstrap_builders/button_drop_down.rb, line 74 def add_default_as_default @classes.add("btn-default") if !@args[:danger] && !@args[:info] && !@args[:primary] && !@args[:warning] end
classes()
click to toggle source
# File lib/bootstrap_builders/button_drop_down.rb, line 78 def classes unless @classes @classes = BootstrapBuilders::ClassAttributeHandler.new(class: ["btn", "btn-default", "dropdown-toggle"]) @classes.add("bb-btn-responsive") if @args[:responsive] add_default_as_default @classes.add("btn-block") if @args[:block] @classes.add("btn-danger") if @args[:danger] @classes.add("btn-info") if @args[:info] @classes.add("btn-link") if @args[:link] @classes.add("btn-primary") if @args[:primary] @classes.add("btn-warning") if @args[:warning] size_classes = [:lg, :md, :sm, :xs] size_classes.each do |size_class| next unless @args[size_class] btn_size_class = "btn-#{size_class}" @classes.add(btn_size_class) unless @classes.include?(btn_size_class) end end @classes end