Skip to content

Instantly share code, notes, and snippets.

@BenEddy
Created June 24, 2014 19:12
Show Gist options
  • Save BenEddy/9919b9a0b73ded9d84c9 to your computer and use it in GitHub Desktop.
Save BenEddy/9919b9a0b73ded9d84c9 to your computer and use it in GitHub Desktop.
# initializers/navigatrix.rb
Navigatrix.register_list_renderer(:table_list) do |renderer|
renderer.wrapper do |items, html_attributes|
content_tag(:div, html_attributes.merge_attribute(:class, "navigation")) do
content_tag(:table, items, class: "nav-table")
end
end
end
Navigatrix.register_item_renderer(:table_item) do |renderer|
renderer.wrapper do |content, children, html_attributes|
content_tag(:tr, class: "nav-table-item", data: {nav: "dropdown"}) do
content_tag(:td, content) + content_tag(:td, children)
end
end
renderer.linked do |name, path|
content_tag :span, content_tag(:a, name, href: path)
end
renderer.unlinked do |name, path|
content_tag :span, name
end
renderer.children_options do
{
list: {renderer: :nested_list},
item: {renderer: :nested_item}
}
end
end
Navigatrix.register_list_renderer(:nested_list) do |renderer|
renderer.wrapper do |items, html_attributes|
content_tag(:div, class: "subnav") do
content_tag(:ul, yield, class: "subnav-list")
end
end
end
Navigatrix.register_item_renderer(:nested_item) do |renderer|
renderer.unlinked do |name, path|
content_tag(:span, name)
end
renderer.html_attributes do |attributes|
attributes.merge_attribute(:class, "subnav-link")
end
end
<%= render_navigation({
"Manage" => {
"path" => "#",
"children" => {
"Account" => "/account",
"Classes" => "/classes",
"Professors" => "/professors",
}
}
}, {
list: {renderer: :table_list},
item: {renderer: :table_item}
}) %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment