This guide shows how to convert an existing header navigation item into a dropdown submenu.
ui/website/components/base/header.html<a> link to a <button> with submenu structuredata-submenu attribute to the <li>Find your existing navigation item. For example, if you have:
<li><a href="/#about" class="header__link">About</a></li>
Convert it to a submenu structure:
<li data-submenu>
<button class="header__link header__link--toggle" aria-expanded="false" aria-controls="about-submenu">
<span>About</span>
<span class="visually-hidden">Toggle About Menu open/closed</span>
<svg class="icon icon--small icon--chevron-down" aria-hidden="true">
<use href="#chevron-down"></use>
</svg>
</button>
<div class="header__submenu" aria-hidden="true" id="about-submenu">
<ul class="header__submenu-list">
<li class="header__submenu-list-item">
<a href="/#about" class="header__link">Overview</a>
</li>
<li class="header__submenu-list-item">
<a href="/#team" class="header__link">Our Team</a>
</li>
<li class="header__submenu-list-item">
<a href="/#history" class="header__link">History</a>
</li>
</ul>
</div>
</li>
| Element | Attribute | Value | Notes |
|---|---|---|---|
<li> |
data-submenu |
(none) | Required for JavaScript initialization |
| Button | class |
header__link header__link--toggle |
Required classes |
| Button | aria-expanded |
"false" |
Set to "true" when open |
| Button | aria-controls |
submenu-id | Must match submenu id |
| Submenu | id |
unique | Must match button’s aria-controls |
| Submenu | aria-hidden |
"true" |
Set to "false" when open |
| Submenu | class |
header__submenu |
Required class |
Before (simple link):
<a href="/#about" class="header__link">About</a>After (submenu):
data-submenu to <li><a> with <button> that has header__link header__link--toggle classes<div> with header__submenu classid to submenu that matches button’s aria-controlsThe “Products” item in the header is already a submenu:
<li data-submenu>
<button class="header__link header__link--toggle" aria-expanded="false" aria-controls="products-submenu">
<span>Products</span>
<span class="visually-hidden">Toggle Products Menu open/closed</span>
<svg class="icon icon--small icon--chevron-down" aria-hidden="true">
<use href="#chevron-down"></use>
</svg>
</button>
<div class="header__submenu" aria-hidden="true" id="products-submenu">
<ul class="header__submenu-list">
<li class="header__submenu-list-item">
<a href="/#packages" class="header__link">Packages</a>
</li>
<li class="header__submenu-list-item">
<a href="/#add-ons" class="header__link">Add-ons</a>
</li>
</ul>
</div>
</li>
Mobile (< 1024px):
#) closes the submenuDesktop (>= 1024px):
Escape to closeinitializeSubmenus() function automatically finds all [data-submenu] elements and handles interactionsui/website/css/shared/base/submenus.cssui/website/components/base/header.html (included as website/components/base/header.html)ui/website/css/shared/base/submenus.cssui/website/js/components/header/submenus.js