artisan-1.x-dev/components/nav/nav.twig
components/nav/nav.twig
{%
set alignment_classes = {
'right': 'justify-content-end',
'center': 'justify-content-center',
'vertical': 'flex-column',
'left': ''
}
%}
{% set alignment = alignment_classes[alignment] ?? '' %}
{% set dropdown_direction = dropdown_direction ?? 'dropend' %}
{% set style = style ? 'nav-' ~ style : '' %}
{% set fill = fill ? 'nav-' ~ fill : '' %}
{% set sdc_theme_source = sdc_theme_source ?? 'artisan' %}
{%
set nav_classes = [
'nav',
style,
alignment,
fill
]
%}
{% if items %}
<ul {{ attributes.addClass(nav_classes) }}>
{% block items %}
{% for item in items %}
{%
set nav_item_classes = [
'nav-item',
item.in_active_trail ? 'active' : '',
item.is_expanded and item.below ? 'dropdown' : ''
]|merge(nav_item_utility_classes ?: [])
%}
{%
set nav_link_classes = [
'nav-link',
item.in_active_trail ? 'active' : ''
]|merge(nav_link_utility_classes ?: [])
%}
{% if item.url.options.attributes.class is iterable %}
{% set nav_link_classes = nav_link_classes|merge(item.url.options.attributes.class) %}
{% elseif item.url.options.attributes.class %}
{% set nav_link_classes = nav_link_classes|merge([item.url.options.attributes.class]) %}
{% endif %}
{% if item.is_expanded and item.below %}
<li class="{{ nav_item_classes|merge(['btn-group', 'flex-wrap'])|join(' ') }}">
{{ link(item.title, item.url, { 'class': nav_link_classes|merge(['dropdown-toggle-split-link']) }) }}
<a href="{{ item.url }}" class="{{ nav_link_classes|merge(['dropdown-toggle', 'dropdown-toggle-split'])|join(' ') }}" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
<span class="visually-hidden">{{ item.title }}</span>
</a>
{% if item.below %}
{%
include sdc_theme_source ~ ':dropdown-menu' with {
items: item.below,
dropdown_direction,
} only %}
{% endif %}
</li>
{% else %}
<li class="{{ nav_item_classes|join(' ') }}">
{{ link(item.title, item.url, { 'class': nav_link_classes }) }}
</li>
{% endif %}
{% endfor %}
{% endblock %}
</ul>
{% endif %}
