commercetools-8.x-1.2-alpha1/modules/commercetools_demo/templates/commercetools-categories-list--demo.html.twig
modules/commercetools_demo/templates/commercetools-categories-list--demo.html.twig
{#
/**
* @file
* Theme override to display a list of categories as menu pills.
*
* Available variables:
* - items: A nested list of items. Each item contains:
* - attributes: HTML attributes for the item.
* - below: The child items if any.
* - title: The link title.
* - url: The link url, instance of \Drupal\Core\Url
* - localized_options: Localized options.
* - is_expanded: TRUE if the item has visible children within the current
* categories tree.
* - is_collapsed: TRUE if the item has children within the current categories
* tree that are not currently visible.
* - in_active_trail: TRUE if the item is in the active trail.
*/
#}
<div class = "ct-categories-list-block">
{{ _self.categories_tree(items, attributes, 0) }}
{% macro categories_tree(items, attributes, menu_level) %}
{% if items %}
{% set nav_classes = [
'nav',
'nav-pills',
'ms-' ~ menu_level * 3,
] %}
<ul{{ attributes.addClass(nav_classes)|without('id') }}>
{% for item in items %}
{% set classes = [
'nav-item',
item.is_expanded ? 'menu-item--expanded',
item.is_collapsed ? 'menu-item--collapsed',
] %}
<li{{ item.attributes.addClass(classes) }}>
{% set link_classes = [
'nav-link',
item.is_active ? 'active',
item.is_active ? 'ps-3',
item.in_active_trail and not item.is_active ? 'fw-bold',
item.url.getOption('attributes').class ? item.url.getOption('attributes').class | join(' '),
'nav-link-' ~ item.url.toString() | clean_class,
] %}
{{ link(item.title, item.url, {'class': link_classes}) }}
{% if item.below %}
{{ _self.categories_tree(item.below, attributes, menu_level + 1) }}
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
{% endmacro %}
</div>
