templates/navigation/partials/nav-list.html.twig line 1

Open in your IDE?
  1. {% set level =  level|default(0) %}
  2. {% set id =  id|default('id') %}
  3. {% set navType = navType|default('mega') %}
  4. {% set trackingMainItem = trackingMainItem|default(null) %}
  5. {% set trackingSubItemOne = trackingSubItemOne|default(null) %}
  6. {% set trackingSubItemTwo = trackingSubItemTwo|default(null) %}
  7. <section id="{{ id }}" class="{{ navType }}-nav {{ navType }}-nav--level-{{ level }} {{ styleModifier|default('') }}">
  8.     {% if hasMobileBackLink|default(false) %}
  9.         <button class="js-nav__list-toggle btn-no-styling {{ navType }}-nav--level-{{ level }}__go-back" aria-label="go back" data-nav-level="{{ level }}">
  10.             <span class="icon icon-arrow-left mr-2 {{ navType }}-nav--level-{{ level }}__go-back__icon"
  11.                   aria-label="{{ 'navigation.back'|trans }}"
  12.             ></span>
  13.             <span class="icon icon-{{ mobileBackLinkIcon }} {{ navType }}-nav--level-{{ level }}__go-back__text-icon"
  14.                   aria-hidden="true"></span>
  15.             <span class="{{ navType }}-nav--level-{{ level }}__go-back__text">
  16.                 {{ mobilBackLinkTitle }}
  17.             </span>
  18.         </button>
  19.     {% endif %}
  20.     <ul class="{{ navType }}-nav__list {{ navType }}-nav__list--level-{{ level }} list-unstyled js-nav__list {{ level == 0 ? 'js-nav__base-list' : '' }}" id="{{ id }}--list">
  21.         {% if title | default(null) and level == 1 or level == 2 %}
  22.             {% set trackingKey = 'l_' ~ level ~ '_' ~ title.text|replace({' ': '_'}) ~ '_0' %}
  23.             {% set trackingData = {
  24.                 'trigger': 'click',
  25.                 'datalayer': {
  26.                     'event': 'navigation',
  27.                     'main_item': level > 0 ? trackingMainItem : null,
  28.                     'sub_item_one': level >= 1 ? level == 1 ? title.text|replace({' ': '_'})|lower : trackingSubItemOne : null,
  29.                     'sub_item_two': level >= 2 ? level == 2 ? title.text|replace({' ': '_'})|lower : trackingSubItemTwo : null,
  30.                     'click_item': title.text|replace({' ': '_'})|lower,
  31.                     'click_page_location': title.href
  32.                 }
  33.             } %}
  34.             {% do jsConfig('_trackingData').add({
  35.                 (trackingKey): trackingData
  36.             }) %}
  37.             <li class="{{ navType }}-nav__title {{ navType }}-nav__title--level-{{ level }}" role="heading">
  38.                 <a href="{{ title.href }}"
  39.                    class="{{ navType }}-nav__title-link {{ navType }}-nav__title-link--level-{{ level }}"
  40.                     data-event-tracking-key="{{ trackingKey }}">
  41.                     {{ title.text }}
  42.                 </a>
  43.             </li>
  44.         {% endif %}
  45.         {% for page in pages %}
  46.             {% if page.isVisible() %}
  47.                 {% set isActive = page.isActive %}
  48.                 {% set isOpen = page.isActive %}
  49.                 {% set hasChildren = false %}
  50.                 {% if page.hasPages() %}
  51.                     {% for child in page.getPages() %}
  52.                         {% if child.isVisible() %}
  53.                             {% set hasChildren = true %}
  54.                         {% endif %}
  55.                     {% endfor %}
  56.                 {% endif %}
  57.                 {% set trackingKey = 'l_' ~ level ~ '_' ~ page.label|replace({' ': '_'}) ~ '_0' %}
  58.                 {% set trackingData = {
  59.                     'trigger': 'click',
  60.                     'datalayer': {
  61.                         'event': 'navigation',
  62.                         'main_item': level > 0 ? trackingMainItem : null,
  63.                         'sub_item_one': level >= 1 ? level == 1 ? page.label|replace({' ': '_'})|lower : trackingSubItemOne : null,
  64.                         'sub_item_two': level >= 2 ? level == 2 ? page.label|replace({' ': '_'})|lower : trackingSubItemTwo : null,
  65.                         'click_item': page.label|replace({' ': '_'})|lower,
  66.                         'click_page_location': page.href|replace({' ': '_'})|lower
  67.                     }
  68.                 } %}
  69.                 {% do jsConfig('_trackingData').add({
  70.                     (trackingKey): trackingData
  71.                 }) %}
  72.                 <li class="{{ navType }}-nav__item {{ navType }}-nav__item--level-{{ level }} js-nav__list-item
  73.                     {{ isActive ? 'is-active' : '' }} {{ isOpen ? 'is-open' : '' }}
  74.                     {{ hasChildren ? 'has-children' : 'has-no-children' }}"
  75.                 >
  76.                     {% if hasChildren %}
  77.                         <button aria-label="Open Menu" title="Open Menu" data-nav-level="{{ level }}"
  78.                             class="btn-no-styling {{ navType }}-nav__item-content js-nav__list-toggle {{ navType }}-nav__item-content--level-{{ level }}"
  79.                             data-event-tracking-key="{{ trackingKey }}"
  80.                         >
  81.                             <span class="d-inline-flex align-items-center w-100 justify-content-between">
  82.                                 {{ page.label }}
  83.                                 <span class="icon icon-chevron-right {{ navType }}-nav__item-content--level-{{ level }}__icon" aria-hidden="true"></span>
  84.                                 {% if isActive %}
  85.                                     <span class="visually-hidden-focusable">{{ 'navigation.current'|trans }}</span>
  86.                                 {% endif %}
  87.                             </span>
  88.                         </button>
  89.                         {{ include('navigation/partials/nav-list.html.twig', page | merge ({
  90.                             'level': level + 1,
  91.                             'pages': page.pages,
  92.                             'id': id ~ '-' ~ loop.index,
  93.                             'navType': navType,
  94.                             'parent': level == 0 or level == 1 ? '#' ~ id ~ '--list' : '',
  95.                             'styleModifier': '',
  96.                             'hasMobileBackLink': level == 0 or level == 1 ? true : false,
  97.                             'mobilBackLinkTitle': level == 0 or level == 1 ? page.label  | default(false) : false,
  98.                             'mobileBackLinkIcon': false,
  99.                             'title': {
  100.                                 'href': page.href,
  101.                                 'text':  'navigation.overview'|trans ~ ' ' ~ page.label
  102.                             },
  103.                             'trackingMainItem': level == 0 ? page.label|replace({' ': '_'})|lower : trackingMainItem,
  104.                             'trackingSubItemOne': level == 1 ? page.label|replace({' ': '_'})|lower : trackingSubItemOne,
  105.                             'trackingSubItemTwo': level == 2 ? page.label|replace({' ': '_'})|lower : trackingSubItemTwo
  106.                         }), with_context = false) }}
  107.                     {% else %}
  108.                         <a href="{{ page.href }}" class="{{ navType }}-nav__item-content {{ navType }}-nav__item-content--level-{{ level }} {{ navType }}-nav__item-content--link" data-event-tracking-key="{{ trackingKey }}">
  109.                             {{ page.label }}
  110.                             {% if isActive %}
  111.                                 <span class="visually-hidden-focusable">{{ 'navigation.current'|trans }}</span>
  112.                             {% endif %}
  113.                         </a>
  114.                     {% endif %}
  115.                 </li>
  116.             {% endif %}
  117.         {% endfor %}
  118.     </ul>
  119. </section>