153 lines
5.7 KiB
Twig
153 lines
5.7 KiB
Twig
{% import _self as menus %}
|
|
<div class="admin-toolbar__item">
|
|
<h4 class="visually-hidden focusable">{{ title }}</h4>
|
|
<ul class="toolbar-block__list">
|
|
{{ menus.menu_items(items, attributes, 0) }}
|
|
</ul>
|
|
</div>
|
|
|
|
{% macro menu_items(items, attributes, menu_level) %}
|
|
{% for item in items %}
|
|
|
|
{% set item_link_tag = 'a' %}
|
|
|
|
{% if item.url.isRouted %}
|
|
{% if item.url.routeName == '<nolink>' %}
|
|
{% set item_link_tag = constant('\\Drupal\\Core\\GeneratedNoLink::TAG') %}
|
|
{% elseif item.url.routeName == '<button>' %}
|
|
{% set item_link_tag = constant('\\Drupal\\Core\\GeneratedButton::TAG') %}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{% if item.url.options.attributes is empty %}
|
|
{% set item_link_attributes = create_attribute() %}
|
|
{% else %}
|
|
{% set item_link_attributes = create_attribute(item.url.options.attributes) %}
|
|
{% endif %}
|
|
|
|
{% set item_id = ('navigation-link--' ~ item.original_link.pluginId)|clean_unique_id %}
|
|
{% if menu_level == 0 %}
|
|
{% if item.below is empty %}
|
|
<li id="{{ item_id }}" class="toolbar-block__list-item">
|
|
{% include 'navigation:toolbar-button' with {
|
|
attributes: item_link_attributes.setAttribute('href', item.url|render|default(null)).setAttribute('data-drupal-tooltip', item.title).setAttribute('data-drupal-tooltip-class', 'admin-toolbar__tooltip'),
|
|
icon: item.icon,
|
|
html_tag: item_link_tag,
|
|
text: item.title,
|
|
modifiers: [
|
|
'collapsible',
|
|
item_link_tag == 'span' ? 'non-interactive' : null
|
|
]|filter(v => v is not null),
|
|
} only %}
|
|
</li>
|
|
{% else %}
|
|
<li id="{{ item_id }}" class="toolbar-block__list-item toolbar-popover" data-toolbar-popover>
|
|
{% include 'navigation:toolbar-button' with {
|
|
action: 'Extend'|t,
|
|
attributes: create_attribute({
|
|
'aria-expanded': 'false',
|
|
'aria-controls': item_id,
|
|
'data-toolbar-popover-control': true,
|
|
'data-has-safe-triangle': true,
|
|
}),
|
|
icon: item.icon,
|
|
text: item.title,
|
|
modifiers: [
|
|
'expand--side',
|
|
'collapsible',
|
|
],
|
|
extra_classes: [
|
|
'toolbar-popover__control',
|
|
],
|
|
} only %}
|
|
<div class="toolbar-popover__wrapper" data-toolbar-popover-wrapper inert>
|
|
{% if item.url %}
|
|
{% include 'navigation:toolbar-button' with {
|
|
attributes: item_link_attributes.setAttribute('href', item.url|render),
|
|
html_tag: item_link_tag,
|
|
text: item.title,
|
|
modifiers: [
|
|
'large',
|
|
'dark',
|
|
],
|
|
extra_classes: [
|
|
'toolbar-popover__header',
|
|
],
|
|
} only %}
|
|
{% else %}
|
|
{% include 'navigation:toolbar-button' with {
|
|
attributes: create_attribute(),
|
|
modifiers: [
|
|
'large',
|
|
'dark',
|
|
'non-interactive',
|
|
],
|
|
extra_classes: [
|
|
'toolbar-popover__header',
|
|
],
|
|
html_tag: 'span',
|
|
text: item.title,
|
|
} only %}
|
|
{% endif %}
|
|
<ul class="toolbar-menu toolbar-popover__menu">
|
|
{{ menus.menu_items(item.below, attributes, 1) }}
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% elseif menu_level == 1 %}
|
|
<li class="toolbar-menu__item toolbar-menu__item--level-{{ menu_level }}">
|
|
{% if item.below is empty %}
|
|
{% include 'navigation:toolbar-button' with {
|
|
attributes: item_link_attributes.setAttribute('href', item.url|render|default(null)),
|
|
text: item.title,
|
|
html_tag: item_link_tag,
|
|
extra_classes: [
|
|
item_link_tag == 'span' ? 'toolbar-button--non-interactive'
|
|
],
|
|
} only %}
|
|
{% else %}
|
|
{% include 'navigation:toolbar-button' with {
|
|
attributes: create_attribute({
|
|
'aria-expanded': 'false',
|
|
'data-toolbar-menu-trigger': menu_level,
|
|
}),
|
|
text: item.title,
|
|
modifiers: ['expand--down'],
|
|
} only %}
|
|
<ul class="toolbar-menu toolbar-menu--level-{{ menu_level + 1 }}" inert>
|
|
{{ menus.menu_items(item.below, attributes, menu_level + 1) }}
|
|
</ul>
|
|
{% endif %}
|
|
</li>
|
|
{% else %}
|
|
<li class="toolbar-menu__item toolbar-menu__item--level-{{ menu_level }}">
|
|
{% if item.below is empty %}
|
|
{{ link(item.title, item.url, {
|
|
'class': [
|
|
'toolbar-menu__link',
|
|
'toolbar-menu__link--' ~ menu_level,
|
|
],
|
|
'data-index-text': item.title|first|lower
|
|
}) }}
|
|
{% else %}
|
|
<button
|
|
class="toolbar-menu__link toolbar-menu__link--{{ menu_level }}"
|
|
data-toolbar-menu-trigger="{{ menu_level }}"
|
|
aria-expanded="false"
|
|
data-index-text="{{ item.title|first|lower }}"
|
|
>
|
|
<span data-toolbar-action class="toolbar-menu__link-action visually-hidden">{{ 'Extend'|t }}</span>
|
|
<span class="toolbar-menu__link-title">{{ item.title }}</span>
|
|
{{ icon('navigation', 'chevron', { class: 'toolbar-menu__chevron', size: 16 }) }}
|
|
</button>
|
|
<ul class="toolbar-menu toolbar-menu--level-{{ menu_level + 1 }}" inert>
|
|
{{ menus.menu_items(item.below, attributes, menu_level + 1) }}
|
|
</ul>
|
|
{% endif %}
|
|
</li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endmacro %}
|