Sha256: b34e7b0b84b68215918a14caa4d2b33f2b3d0270072c1f36df7bd6ab234b13af
Contents?: true
Size: 1.59 KB
Versions: 32
Compression:
Stored size: 1.59 KB
Contents
module ActiveAdmin module Views # Renders an ActiveAdmin::Menu as a set of unordered list items. # # This component takes cares of deciding which items should be # displayed given the current context and renders them appropriately. # # The entire component is rendered within one ul element. class TabbedNavigation < Component attr_reader :menu # Build a new tabbed navigation component. # # @param [ActiveAdmin::Menu] menu the Menu to render # @param [Hash] options the options as passed to the underlying ul element. # def build(menu, options = {}) @menu = menu super(default_options.merge(options)) build_menu end # The top-level menu items that should be displayed. def menu_items menu.items(self) end def tag_name 'ul' end private def build_menu menu_items.each do |item| build_menu_item(item) end end def build_menu_item(item) li id: item.id do |li| li.add_class "current" if item.current? assigns[:current_tab] if url = item.url(self) text_node link_to item.label(self), url, item.html_options else span item.label(self), item.html_options end if children = item.items(self).presence li.add_class "has_nested" ul do children.each{ |child| build_menu_item child } end end end end def default_options { id: "tabs" } end end end end
Version data entries
32 entries across 32 versions & 4 rubygems