artisan-1.x-dev/artisan_starterkit/components/nav_alternative/nav_alternative.twig

artisan_starterkit/components/nav_alternative/nav_alternative.twig
{#
/**
{#
 * @file
 * Template for a Nav component.
 *
 * Available config:
 * - alignment: left | right | center | vertical.
 * - style: tabs | pills
 * - fill: fill | justify
 * - utility_classes: An array of utility classes.
#}
{% if alignment == 'right' %}
  {% set alignment = 'justify-content-end' %}
{% elseif alignment == 'center' %}
  {% set alignment = 'justify-content-center' %}
{% elseif alignment == 'vertical' %}
  {% set alignment = 'flex-column' %}
{% else %}
  {% set alignment = '' %}
{% endif %}

{% set style = style ? 'nav-' ~ style : '' %}
{% set fill = fill ? 'nav-' ~ fill : '' %}

{% set nav_classes = [
  'main-menu nav navbar-nav position-relative nav-alternative',
  style,
  alignment,
  fill
]|merge(utility_classes ? utility_classes : []) %}

{% macro menus(items, attributes, nav_classes, level) %}
  {% if items %}
    <ul{{ attributes.addClass(nav_classes) }}>
      {% for item in items %}
        {% set nav_item_classes = [
          'nav-item',
          'nav-item--level-' ~ level,
          item.in_active_trail ? 'active',
          item.is_expanded and item.below ? 'has-children'
        ] %}
        {% set nav_link_classes = ['nav-link'] %}
        {% if item.url.options.attributes.class is iterable %}
          {% set nav_link_classes = nav_link_classes|merge(item.url.options.attributes.class) %}
        {% elseif item.url.options.attributes.class %}
          {% set nav_link_classes = nav_link_classes|merge([item.url.options.attributes.class]) %}
        {% endif %}
        <li class="{{ nav_item_classes|join(' ') }}">
          {% if item.is_expanded and item.below %}
            {{ link(item.title, item.url, { 'class': nav_link_classes }) }}
            <span class="link-expand" aria-expanded="false" title="{{ 'Expand submenu'|t }}"></span>
            {% if item.below %}
              {% if level == 1 %}
                <div class="submenu-container">
                <div class="p-3">
              {% endif %}
              {% set child_attributes = create_attribute() %}
              {% set new_level = level + 1 %}
              {{ _self.menus(item.below, child_attributes, [
                'list-unstyled',
                'p-0',
                'nav-child',
                'nav-child--level-' ~ new_level
              ], new_level) }}
              {% if level == 1 %}
                </div>
                </div>
              {% endif %}
            {% endif %}
          {% else %}
            {{ link(item.title, item.url, { 'class': nav_link_classes }) }}
          {% endif %}
        </li>
      {% endfor %}
    </ul>
  {% endif %}
{% endmacro %}

{{ _self.menus(items, create_attribute(), nav_classes, 1) }}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc