toolbar-themes--menu.html.twig in Toolbar Themes 8
{#
/**
* Toolbar themes theme implementation to display a toolbar menu.
*
* Available variables:
* - menu_name: The machine name of the menu.
* - items: A nested list of menu items. Each menu item contains:
* - attributes: HTML attributes for the menu item.
* - below: The menu item child items.
* - title: The menu link title.
* - url: The menu link url, instance of \Drupal\Core\Url
* - localized_options: Menu link localized options.
* - is_expanded: TRUE if the link has visible children within the current
* menu tree.
* - is_collapsed: TRUE if the link has children within the current menu tree
* that are not currently visible.
* - in_active_trail: TRUE if the link is in the active trail.
* - show_icon: bool to show or hide icon markup.
*
* @ingroup themeable
*/
#}
{%- import _self as menus -%}
{#
We call a macro which calls itself to render the full tree.
@see http://twig.sensiolabs.org/doc/tags/macro.html
#}
{{- menus.menu_links(items, attributes, 0, menu_name) -}}
{%- macro menu_links(items, attributes, menu_level, menu_name) -%}
{%- import _self as menus -%}
{% if items %}
<ul
{%- if menu_level == 0 -%}
{{ attributes.addClass(['toolbar-menu', 'odd', 'menu-level-1', menu_name ? 'menu-name--' ~ menu_name|clean_class ]) }}
{%- else %}
class="toolbar-menu is-child {{ cycle(['odd', 'even'], menu_level) }} {{ 'menu-level-' ~ (menu_level + 1) }}"
{%- endif -%}
>
{# Begin loop. #}
{% for item in items %}
{% if item.below is not empty %}
{% set is_parent = true %}
{% else %}
{% set is_parent = false %}
{% endif %}
{%
set item_classes = [
'menu-item',
is_parent ? 'is-parent',
item.is_expanded ? 'menu-item--expanded',
item.is_collapsed ? 'menu-item--collapsed',
item.in_active_trail ? 'menu-tem--active-trail',
]
%}
{# We set an id on list items to provide context for aria attributes. #}
<li{{ item.attributes.addClass(item_classes).setAttribute('id', 'mlid-' ~ item.title|render|clean_class)|without('role') }}>
{{
link(
item.title,
item.url
)
}}
{%- if item.show_icon -%}
{%- if item.icon_attributes -%}
<i{{ item.icon_attributes.addClass('menu-item__icon') }}></i>
{%- endif -%}
{%- endif -%}
{% if item.below %}
{{
menus.menu_links(
item.below,
attributes,
menu_level + 1,
menu_name
)
}}
{% endif %}
</li>
{%- endfor -%}
{# End loop. #}
</ul>
{% endif %}
{%- endmacro -%}
File
templates/toolbar-themes--menu.html.twig
View source
- {#
- /**
- * Toolbar themes theme implementation to display a toolbar menu.
- *
- * Available variables:
- * - menu_name: The machine name of the menu.
- * - items: A nested list of menu items. Each menu item contains:
- * - attributes: HTML attributes for the menu item.
- * - below: The menu item child items.
- * - title: The menu link title.
- * - url: The menu link url, instance of \Drupal\Core\Url
- * - localized_options: Menu link localized options.
- * - is_expanded: TRUE if the link has visible children within the current
- * menu tree.
- * - is_collapsed: TRUE if the link has children within the current menu tree
- * that are not currently visible.
- * - in_active_trail: TRUE if the link is in the active trail.
- * - show_icon: bool to show or hide icon markup.
- *
- * @ingroup themeable
- */
- #}
- {%- import _self as menus -%}
- {#
- We call a macro which calls itself to render the full tree.
- @see http://twig.sensiolabs.org/doc/tags/macro.html
- #}
- {{- menus.menu_links(items, attributes, 0, menu_name) -}}
-
- {%- macro menu_links(items, attributes, menu_level, menu_name) -%}
- {%- import _self as menus -%}
-
- {% if items %}
- <ul
- {%- if menu_level == 0 -%}
- {{ attributes.addClass(['toolbar-menu', 'odd', 'menu-level-1', menu_name ? 'menu-name--' ~ menu_name|clean_class ]) }}
- {%- else %}
- class="toolbar-menu is-child {{ cycle(['odd', 'even'], menu_level) }} {{ 'menu-level-' ~ (menu_level + 1) }}"
- {%- endif -%}
- >
-
- {# Begin loop. #}
- {% for item in items %}
-
- {% if item.below is not empty %}
- {% set is_parent = true %}
- {% else %}
- {% set is_parent = false %}
- {% endif %}
-
- {%
- set item_classes = [
- 'menu-item',
- is_parent ? 'is-parent',
- item.is_expanded ? 'menu-item--expanded',
- item.is_collapsed ? 'menu-item--collapsed',
- item.in_active_trail ? 'menu-tem--active-trail',
- ]
- %}
-
- {# We set an id on list items to provide context for aria attributes. #}
- <li{{ item.attributes.addClass(item_classes).setAttribute('id', 'mlid-' ~ item.title|render|clean_class)|without('role') }}>
- {{
- link(
- item.title,
- item.url
- )
- }}
-
- {%- if item.show_icon -%}
- {%- if item.icon_attributes -%}
- <i{{ item.icon_attributes.addClass('menu-item__icon') }}></i>
- {%- endif -%}
- {%- endif -%}
-
- {% if item.below %}
- {{
- menus.menu_links(
- item.below,
- attributes,
- menu_level + 1,
- menu_name
- )
- }}
- {% endif %}
- </li>
-
- {%- endfor -%}
- {# End loop. #}
-
- </ul>
- {% endif %}
- {%- endmacro -%}