{#
/**
 * 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 -%}