dsfr4drupal-1.x-dev/components/sidemenu/sidemenu.twig

components/sidemenu/sidemenu.twig
{% set attributes = attributes|default(create_attribute()) %}
{% set button_label = button_label|default('In this section'|t) %}
{% set html_id = html_id|default('sidemenu-' ~ random()) %}
{% set title_id = title_id|default('sidemenu__title-' ~ random()) %}

{% if variant and variant != 'default' %}
  {% set attributes = attributes.addClass('fr-sidemenu--' ~ variant) %}
{% endif %}

{% if position %}
  {% set attributes = attributes.addClass('fr-sidemenu--' ~ position) %}
{% endif %}

<nav{{ attributes.addClass('fr-sidemenu') }} role="navigation" aria-labelledby="{{ title_id|clean_id }}" id="{{ html_id|clean_id }}">
  <div class="fr-sidemenu__inner">
    <button type="button" class="fr-sidemenu__btn" aria-controls="fr-sidemenu-wrapper-{{ html_id|clean_id }}" aria-expanded="false">{{ button_label }}</button>
    <div class="fr-collapse" id="fr-sidemenu-wrapper-{{ html_id|clean_id }}">
      <div id="{{ title_id|clean_id }}" class="fr-sidemenu__title">{{ title }}</div>
      {{ _self.menu_links(items, attributes, 0) }}
    </div>
  </div>
</nav>

{% macro menu_links(items, attributes, menu_level) %}
  {% if items %}
    <ul class="fr-sidemenu__list">
      {% for item in items %}
        {% set link_attributes = item.link_attributes|default(create_attribute()) %}
        {% if item.in_active_trail %}
          {% set link_attributes = link_attributes.setAttribute('aria-current', 'page') %}
        {% endif %}

        <li{{ item.attributes.addClass('fr-sidemenu__item') }}>
          {% if item.below %}
            {% set item_id = 'fr-sidemenu-item-' ~ loop.index ~ '-' ~ random() %}

            <button{{ link_attributes.setAttribute('type', 'button').setAttribute('aria-expanded', 'false').setAttribute('aria-controls', item_id).addClass(['fr-sidemenu__btn']) }}>
              {{- item.title -}}
            </button>
            <div class="fr-collapse" id="{{ item_id }}">
              {{ _self.menu_links(item.below, create_attribute(), menu_level + 1) }}
            </div>
          {% else %}
            {{ link(item.title, item.url, link_attributes.addClass('fr-sidemenu__link')) }}
          {% endif %}
        </li>
      {% endfor %}
    </ul>
  {% endif %}
{% endmacro %}

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

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