format :html do
# Options
# header: { content: String, brand: ( String | {name: , href: } ) }
def navbar id, opts={}
nav_opts = opts[:navbar_opts] || {}
nav_opts[:class] ||= opts[:class]
add_class nav_opts,
"navbar navbar-#{opts.delete(:navbar_type) || 'default'}"
header_opts = opts[:header] || {}
if opts[:toggle_align] == :left
opts[:toggle] = :hide
opts[:collapsed_content] ||= ""
opts[:collapsed_content] +=
navbar_toggle(
id, opts[:toggle], "pull-left navbar-link"
).html_safe
end
wrap_with :nav, nav_opts do
[
navbar_header(id, header_opts.delete(:content),
header_opts.reverse_merge(toggle: opts[:toggle])),
navbar_collapsed_content(opts[:collapsed_content]),
wrap_with(:div, class: "collapse navbar-collapse",
id: "navbar-collapse-#{id}") { yield }
]
end
end
def navbar_collapsed_content content
wrap_with(:div, content, class: "container-fluid") if content
end
def navbar_header id, content="", opts={}
brand =
if opts[:brand]
if opts[:brand].is_a? String
"#{opts[:brand]}"
else
link = opts[:brand][:href] || "#"
"#{opts[:brand][:name]}"
end
end
wrap_with :div, class: "navbar-header" do
[
(navbar_toggle(id, opts[:toggle]) unless opts[:toggle] == :hide),
brand,
(content if content)
]
end
end
def navbar_toggle id, content=nil, css_class=""
content ||= %(
)
<<-HTML
HTML
end
def breadcrumb items
wrap_with :ol, class: "breadcrumb" do
items.map do |item|
wrap_with :li, item, class: "breadcrumb-item"
end.join
end
end
end