Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{#
/**
* @file
* Default theme implementation to display a menu.
*
* Available variables:
* - classes: A list of classes to apply to the top level <ul> element.
* - dropdown_classes: A list of classes to apply to the dropdown <ul> element.
* - 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.
*
* @ingroup templates
*
* Define a custom macro that will render all menu trees.
*/
#}
{% macro menu_links(items, attributes, menu_level, classes, issidebar) %}
{% if issidebar == 'sidebar_menu' %}
{# check block region name
* if sidebar setup sidebar menu
#}
{% if items %}
<ul{{ attributes.addClass(classes, 'sidebar-nav') }}>
{% for item in items %}
{%
set item_classes = item.url.getOption('container_attributes').class | split(" ")
%}
{%
set item_classes = [
item.is_expanded and item.below ? 'expanded dropdown',
item.in_active_trail ? 'active active-trail',
loop.first ? 'first',
loop.last ? 'last',
]
%}
<li{{ item.attributes.addClass(item_classes) }}>
{% set link_title = item.title %}
{% set link_attributes = item.link_attributes %}
{# {% set link_attributes = link_attributes.addClass('dropdown-toggle').setAttribute('data-toggle', 'dropdown') %} #}
{# Must use link() here so it triggers hook_link_alter(). #}
{% if item.is_expanded and item.below %}
<div class="link-wrapper">{{ link(link_title, item.url, link_attributes.addClass(item.in_active_trail ? 'active-trail')) }} <i class="fa fa-angle-right" aria-hidden="true"></i></div>
{% else %}
<div class="link-wrapper">{{ link(link_title, item.url, link_attributes.addClass(item.in_active_trail ? 'active-trail')) }}</div>
{% endif %}
{% if item.below %}
{{ _self.menu_links(item.below, attributes.removeClass(classes), menu_level + 1, dropdown_classes) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{# END SIDEBAR NAV
#}
{% else %}
{#
NEED TO FIGURE OUT HOW TO
check class of parent twig element
https://drupal.stackexchange.com/questions/297714/twig-find-if-a-css-class-exists-in-a-tag
https://stackoverflow.com/questions/52312728/accessing-the-referencing-parent-element-in-twig-paragraphs
#}
{% if items %}
{# {% if isMobile() %}
<ul{{ attributes.addClass(menu_level == 0 ? classes : dropdown_classes, 'mobileview') }} role="menubar">
{% else %} #}
<ul{{ attributes.addClass(menu_level == 0 ? classes : dropdown_classes, menu_level != 0 ? 'asc-submenu') }} {% if menu_level == 0 %}role="menubar"{% endif %}>
{# {% endif %} #}
{% for item in items %}
{%
set item_classes = item.url.getOption('container_attributes').class | split(" ")
%}
{%
set item_classes = [
item.is_expanded and item.below ? 'expanded dropdown',
item.in_active_trail ? 'active active-trail',
loop.first ? 'first',
loop.last ? 'last',
issidebar != 'sidebar_menu' ? 'bux-menu__item',
]
%}
<li{{ item.attributes.addClass(item_classes) }}>
{% set link_title = item.title %}
{% set link_attributes = item.link_attributes %}
{# {% if menu_level == 0 and item.is_expanded and item.below %}
{% set link_title %}{{ link_title }} <span class="caret"></span>{% endset %}
{% set link_attributes = link_attributes.addClass('dropdown-toggle').setAttribute('data-toggle', 'dropdown') %}
{% endif %} #}
{# Must use link() here so it triggers hook_link_alter(). #}
{{ link(link_title, item.url, link_attributes.addClass(item.in_active_trail ? 'active-trail', issidebar != 'sidebar_menu' and menu_level == 0 ? 'bux-menu__link')) }}
{{ _self.menu_links(item.below, attributes.removeClass(classes), menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{% endmacro %}
{#
Invoke the custom macro defined above. If classes were provided, use them.
This allows the template to be extended without having to also duplicate the
code above. @see http://twig.sensiolabs.org/doc/tags/macro.html
#}
{{ _self.menu_links(items, attributes, 0, classes ?: ['menu', 'menu--' ~ menu_name|clean_class, 'nav'], issidebar ?: blockname) }}