Menu
Looking for WET v3.1?
As of September 23, 2014, version 3.1 of the Web Experience Toolkit is no longer supported. The source code and documentation have been moved to the wet-boew-legacy repository.
Purpose
Provides an interactive menu with optional sub-menus. Implements the WAI-ARIA menu design pattern.
Working example
How to implement
- Add the following code to the
header
area of the page. Note: This step should already be done for most themes.- English pages:
<nav role="navigation" id="wb-sm" data-trgt="mb-pnl" class="wb-menu visible-md visible-lg" typeof="SiteNavigationElement"> <div class="container nvbar"> <h2>Topics menu</h2> <div class="row"> <ul class="list-inline menu"> <li><a href="#">Section 1</a></li> <li><a href="#">Section 2</a></li> <li><a href="#">Section 3</a></li> </ul> </div> </div> </nav>
- French pages:
<nav role="navigation" id="wb-sm" data-trgt="mb-pnl" class="wb-menu visible-md visible-lg" typeof="SiteNavigationElement"> <div class="container nvbar"> <h2>Menu des sujets</h2> <div class="row"> <ul class="list-inline menu"> <li><a href="#">Section 1</a></li> <li><a href="#">Section 2</a></li> <li><a href="#">Section 3</a></li> </ul> </div> </div> </nav>
- English pages:
- Update the
ul
element with list items (li
) containing the desired links. - Optional: Create a full menu to AJAX in. This menu will replace the
class="container"
element and its descendants. Sub-menus are achieved by nesting<ul class="sm list-unstyled" id="lore" role="menu">
in eachli
element of the menu bar. The following is an example of a full menu:- English pages:
<div class="pnl-strt container visible-md visible-lg nvbar"> <h2>Topics menu</h2> <div class="row"> <ul class="list-inline menu" role="menubar"> <li><a href="#lore" class="item">Section 1</a> <ul class="sm list-unstyled" id="lore" role="menu"> <li><a href="#">Item 1.1</a></li> ... </ul> </li> <li><a href="#lor" class="item">Section 2</a> <ul class="sm list-unstyled" id="lor" role="menu" > <li><a href="#">Item 2.1</a></li> ... <li class="slflnk"><a href="#">Section 2 - More</a></li> </ul> </li> <li><a href="#lorm" class="item">Section 3</a> <ul class="sm list-unstyled" id="lorm" role="menu" > <li> <details> <summary>Section 3.1</summary> <ul role="menu"> <li><a href="#">Item 3.1.1</a></li> ... </ul> </details> </li> ... </ul> </li> </ul> </div> </div>
- French pages:
<div class="pnl-strt container visible-md visible-lg nvbar"> <h2>Menu des sujets</h2> <div class="row"> <ul class="list-inline menu" role="menubar"> <li><a href="#lore" class="item">Section 1</a> <ul class="sm list-unstyled" id="lore" role="menu"> <li><a href="#">Article 1.1</a></li> ... </ul> </li> <li><a href="#lor" class="item">Section 2</a> <ul class="sm list-unstyled" id="lor" role="menu" > <li><a href="#">Article 2.1</a></li> ... <li class="slflnk"><a href="#">Section 2 - Autre</a></li> </ul> </li> <li><a href="#lorm" class="item">Section 3</a> <ul class="sm list-unstyled" id="lorm" role="menu" > <li> <details> <summary>Section 3.1</summary> <ul role="menu"> <li><a href="#">Article 3.1.1</a></li> ... </ul> </details> </li> ... </ul> </li> </ul> </div> </div>
- English pages:
- Optional: Add sub-sub-menus to the full menu using nested
details
elements.
Warning: Sub-sub-menus significantly increase menu complexity, particularly on screen readers and mobile devices, which can create usability issues for some users.<ul class="sm list-unstyled" id="lorm" role="menu" > <li> <details> <summary>Section 3.1</summary> <ul role="menu"> <li><a href="#">Item 3.1.1</a></li> ... </ul> </details> </li> ... </ul>
- Optional: Add
data-ajax-fetch="[url]"
to the element withclass="wb-menu"
, with[url]
being the URL of the full menu to AJAX in.<nav role="navigation" id="wb-sm" data-ajax-fetch="ajax/menu-include-en.html" data-trgt="mb-pnl" class="wb-menu visible-md visible-lg" typeof="SiteNavigationElement">
- Optional: Update
data-trgt
with theid
of the target element for the mobile panel (in most cases this should not change).
Configuration options
Option | Description | How to configure | Values |
---|---|---|---|
data-ajax-fetch |
Used to AJAX in a full menu. | Add data-ajax-fetch="[url]" to the element with class="wb-menu" , with [url] being the URL of the full menu to AJAX in. |
|
data-trgt |
Used to identify the target for the mobile panel. | Add data-trgt="mb-pnl" to the element with class="wb-menu" . The value of data-trgt must match the id of the target element for the mobile panel. |
|
Events
Event | Trigger | What it does |
---|---|---|
wb-init.wb-menu |
Triggered manually (e.g., $( ".wb-menu" ).trigger( "wb-init.wb-menu" ); ). |
Used to manually initialize the menu plugin. Note: The menu plugin will be initialized automatically unless the menu markup is added after the page has already loaded. |
wb-ready.wb-menu (v4.0.5+) |
Triggered automatically after a menu has initialized. | Used to identify which menu has initialized (target of the event).
|
wb-ready.wb (v4.0.5+) |
Triggered automatically when WET has finished loading and executing. | Used to identify when all WET plugins and polyfills have finished loading and executing.
|
Source code
- Date modified: