<div class="subnav " id="subnav-products-and-services" aria-hidden="false">
<button class="subnav__button">
<svg class="icon subnav__button-icon" focusable="false">
<use xlink:href="#icon-chevron-left"></use>
</svg>
Main menu
</button>
<div class="subnav__header">
<div class="subnav__title">Products and services</div>
<a href="#" class="link link--small">
<span class="link__label">Show all</span>
</a>
</div>
<div class="subnav__content">
<ul class="subnav__list">
<li class="subnav__list-item">
<a href="#" class="link link--icon link--dark link--small" aria-controls="subnav-air-handling">
<span class="link__label">Air Handling</span>
<svg class="icon link__icon" focusable="false">
<use xlink:href="#icon-chevron-right"></use>
</svg>
</a>
<div class="subnav subnav--submenu" id="subnav-air-handling" aria-hidden="">
<button class="subnav__button">
<svg class="icon subnav__button-icon" focusable="false">
<use xlink:href="#icon-chevron-left"></use>
</svg>
Products and services
</button>
<div class="subnav__header">
<div class="subnav__title">Air Handling</div>
<a href="#" class="link link--small">
<span class="link__label">Show all</span>
</a>
</div>
<div class="subnav__content">
<ul class="subnav__list">
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Compact</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Gold</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Global</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Silver M</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Global FW</span>
</a>
</li>
</ul>
</div>
</div>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--icon link--dark link--small" aria-controls="subnav-room-units">
<span class="link__label">Room Units</span>
<svg class="icon link__icon" focusable="false">
<use xlink:href="#icon-chevron-right"></use>
</svg>
</a>
<div class="subnav " id="subnav-room-units" aria-hidden="">
<button class="subnav__button">
<svg class="icon subnav__button-icon" focusable="false">
<use xlink:href="#icon-chevron-left"></use>
</svg>
Products and services
</button>
<div class="subnav__header">
<div class="subnav__title">Room Units</div>
<a href="#" class="link link--small">
<span class="link__label">Show all</span>
</a>
</div>
<div class="subnav__content">
<ul class="subnav__list">
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Waterbourne Climate</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Air Diffusers and Grilles</span>
</a>
</li>
</ul>
</div>
</div>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Air distribution</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--icon link--dark link--small" aria-controls="subnav-cooling-and-heating">
<span class="link__label">Cooling & Heating</span>
<svg class="icon link__icon" focusable="false">
<use xlink:href="#icon-chevron-right"></use>
</svg>
</a>
<div class="subnav subnav--submenu" id="subnav-cooling-and-heating" aria-hidden="">
<button class="subnav__button">
<svg class="icon subnav__button-icon" focusable="false">
<use xlink:href="#icon-chevron-left"></use>
</svg>
Products and services
</button>
<div class="subnav__header">
<div class="subnav__title">Cooling & Heating</div>
<a href="#" class="link link--small">
<span class="link__label">Show all</span>
</a>
</div>
<div class="subnav__content">
<ul class="subnav__list">
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Air-Cooled Chillers and Heat Pumps</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Water-cooled Chillers and Heat Pumps</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Air source multifunction</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">IT Cooling</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Remote Source</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Water source multifunction</span>
</a>
</li>
</ul>
</div>
</div>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Louvres</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Air Filtration</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Optimisation systems</span>
</a>
</li>
<li class="subnav__list-item">
<a href="#" class="link link--dark link--small">
<span class="link__label">Connected services</span>
</a>
</li>
</ul>
</div>
</div>
<div class="subnav {{ getmodifiers modifiers "subnav"}}" id="{{id}}" aria-hidden="{{hidden}}">
<button class="subnav__button">
{{>@icon id="chevron-left" additionalClasses="subnav__button-icon" }}
{{#if backButtonLabel}}{{backButtonLabel}}{{else}}Previous{{/if}}
</button>
<div class="subnav__header">
<div class="subnav__title">{{title}}</div>
{{>@link link }}
</div>
<div class="subnav__content">
<ul class="subnav__list">
{{#each items}}
<li class="subnav__list-item">
{{>@link link}}
{{#if submenu}}
{{>@subnav submenu}}
{{/if}}
</li>
{{/each}}
</ul>
</div>
</div>
{
"id": "subnav-products-and-services",
"hidden": false,
"title": "Products and services",
"backButtonLabel": "Main menu",
"link": {
"label": "Show all",
"href": "#",
"modifiers": "small"
},
"items": [
{
"link": {
"label": "Air Handling",
"href": "#",
"icon": "chevron-right",
"modifiers": [
"dark",
"small"
],
"attributes": {
"aria-controls": "subnav-air-handling"
}
},
"submenu": {
"id": "subnav-air-handling",
"modifiers": [
"submenu"
],
"title": "Air Handling",
"backButtonLabel": "Products and services",
"link": {
"label": "Show all",
"href": "#",
"modifiers": "small"
},
"items": [
{
"link": {
"label": "Compact",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Gold",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Global",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Silver M",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Global FW",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
}
]
}
},
{
"link": {
"label": "Room Units",
"href": "#",
"icon": "chevron-right",
"modifiers": [
"dark",
"small"
],
"attributes": {
"aria-controls": "subnav-room-units"
}
},
"submenu": {
"id": "subnav-room-units",
"title": "Room Units",
"backButtonLabel": "Products and services",
"link": {
"label": "Show all",
"href": "#",
"modifiers": "small"
},
"items": [
{
"link": {
"label": "Waterbourne Climate",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Air Diffusers and Grilles",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
}
]
}
},
{
"link": {
"label": "Air distribution",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Cooling & Heating",
"href": "#",
"icon": "chevron-right",
"modifiers": [
"dark",
"small"
],
"attributes": {
"aria-controls": "subnav-cooling-and-heating"
}
},
"submenu": {
"id": "subnav-cooling-and-heating",
"modifiers": [
"submenu"
],
"title": "Cooling & Heating",
"backButtonLabel": "Products and services",
"link": {
"label": "Show all",
"href": "#",
"modifiers": "small"
},
"items": [
{
"link": {
"label": "Air-Cooled Chillers and Heat Pumps",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Water-cooled Chillers and Heat Pumps",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Air source multifunction",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "IT Cooling",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Remote Source",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Water source multifunction",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
}
]
}
},
{
"link": {
"label": "Louvres",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Air Filtration",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Optimisation systems",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
},
{
"link": {
"label": "Connected services",
"href": "#",
"modifiers": [
"dark",
"small"
]
}
}
]
}
const Subnav = el => {
const header = document.querySelector('.header');
const headerSubmenuOpenClass = 'header--subnav-open';
const headerSubnavAnimateClass = 'header--subnav-animate';
const activeSubnavClass = 'subnav__list-item--active';
const submenuToggleClass = 'subnav--submenu-open';
const onClick = e => {
e.preventDefault();
const currentMenu = document.getElementById(e.currentTarget.getAttribute('aria-controls'));
open(currentMenu, el);
};
const open = (currentMenu, el) => {
el.classList.add(submenuToggleClass);
currentMenu.parentNode.classList.add(activeSubnavClass);
currentMenu.setAttribute('aria-hidden', false);
animateSubnav('left');
};
const close = (el, currentMenu) => {
el.classList.remove(submenuToggleClass);
currentMenu.parentNode.classList.remove(activeSubnavClass);
currentMenu.setAttribute('aria-hidden', true);
animateSubnav('right');
};
const showSubnav = e => {
el.setAttribute('aria-hidden', false);
header && header.classList.add(headerSubmenuOpenClass);
animateSubnav('left');
};
const hideSubnav = () => {
el.setAttribute('aria-hidden', true);
header && header.classList.remove(headerSubmenuOpenClass);
animateSubnav('right');
};
const animateSubnav = (direction) => {
header.classList.add(`${headerSubnavAnimateClass}-${direction}`);
setTimeout(() => {
header.classList.add(headerSubnavAnimateClass);
setTimeout(() => {
header.classList.remove(`${headerSubnavAnimateClass}-${direction}`);
setTimeout(() => {
header.classList.remove(headerSubnavAnimateClass);
header.querySelector('.header__primary-nav').scrollTop = 0;
}, 300);
}, 10);
}, 10);
};
const init = el => {
el.addEventListener('triggerSubnav', showSubnav);
el.querySelector('.subnav__button').addEventListener('click', hideSubnav);
const triggers = el.querySelectorAll('.link[aria-controls]');
for (let trigger of triggers) {
trigger.addEventListener('click', onClick);
}
const backButtons = el.querySelectorAll('.subnav__button');
for (let button of backButtons) {
button.addEventListener('click', () => close(el, button.parentNode));
}
};
init(el);
};
export default Subnav;
import Subnav from './Subnav';
const els = document.querySelectorAll('.subnav:not(.subnav--submenu)');
for (let el of els) {
Subnav(el);
};
.subnav {
display: none;
.header--mobile-menu-open & {
&[aria-hidden="false"] {
display: block;
}
}
.header--subnav-animate & {
transition: opacity .2s ease-out .1s, transform .2s ease-out .1s;
opacity: 1;
transform: none;
}
.header--subnav-animate-left &,
.header--subnav-animate-right & {
opacity: 0;
transform: translateX(size(3));
}
.header--subnav-animate-right & {
transform: translateX(size(-3));
}
}
.subnav__header {
background-color: $color-gray-1;
margin: 0 size(-3);
padding: size(3);
.subnav--submenu-open > & {
display: none;
}
}
.subnav__title {
font-weight: $font-weight-bold;
margin-bottom: size(0.75);
}
.subnav__content {
background-color: $color-white;
margin: 0 size(-3);
padding: size(2) size(3) 0;
.subnav__item > & {
padding-bottom: size(2);
border-bottom: 1px solid $color-gray-1;
}
.subnav--submenu-open > & {
padding-top: 0;
}
}
.subnav__list {
list-style: none;
margin: 0;
padding: 0;
}
.subnav__list-item {
.subnav--submenu-open > .subnav__content > .subnav__list > & {
display: none;
}
> a.link {
display: block;
padding: size(1.5) 0;
&--icon {
position: relative;
padding-right: size(4);
}
.link__icon {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
}
&--active {
display: block !important;
> a.link {
display: none;
}
}
}
.subnav__button {
position: fixed;
margin-top: size(-6.5);
padding: size(1) 0;
font-size: size(1.75);
cursor: pointer;
.subnav--submenu-open > & {
display: none;
}
}
.subnav__button-icon {
vertical-align: middle;
width: size(2);
height: size(2);
fill: $color-green-dark;
margin-right: size(0.5);
transform: translateX(size(-0.5)) translateY(-1px);
@include color-theme {
fill: $arg-theme-color;
}
}
No notes defined.