-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add separate template for main menu v3
- Loading branch information
Showing
1 changed file
with
70 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
{# | ||
/** | ||
* @file | ||
* Bootstrap Barrio's override to display a 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. | ||
*/ | ||
#} | ||
{% 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) }} | ||
|
||
{% macro menu_links(items, attributes, menu_level) %} | ||
{% import _self as menus %} | ||
{% if items %} | ||
{% if menu_level == 0 %} | ||
<ul{{ attributes.addClass('nav navbar-nav')|without('id') }}> | ||
{% else %} | ||
<ul class="dropdown-menu"> | ||
{% endif %} | ||
{% for item in items %} | ||
{% | ||
set classes = [ | ||
menu_level ? 'dropdown-item' : 'nav-item', | ||
item.is_expanded ? 'menu-item--expanded', | ||
item.is_collapsed ? 'menu-item--collapsed', | ||
item.in_active_trail ? 'active', | ||
item.below ? 'dropdown', | ||
] | ||
%} | ||
{% if menu_level == 1 %} | ||
<li class="menu-title" >item.title</li> | ||
{% endif %} | ||
<li{{ item.attributes.addClass(classes) }}> | ||
{% | ||
set link_classes = [ | ||
not menu_level ? 'nav-link', | ||
item.in_active_trail ? 'active', | ||
item.below ? 'dropdown-toggle', | ||
item.url.getOption('attributes').class ? item.url.getOption('attributes').class | join(' '), | ||
'nav-link-' ~ item.url.toString() | clean_class, | ||
] | ||
%} | ||
{% if item.below %} | ||
{{ link(item.title, item.url, {'class': link_classes, 'data-bs-toggle': 'dropdown', 'aria-expanded': 'false', 'aria-haspopup': 'true' }) }} | ||
{{ menus.menu_links(item.below, attributes, menu_level + 1) }} | ||
{% else %} | ||
{{ link(item.title, item.url, {'class': link_classes}) }} | ||
{% endif %} | ||
</li> | ||
{% endfor %} | ||
</ul> | ||
{% endif %} | ||
{% endmacro %} |