MEOM navigation
MEOM navigation component is work in progress. It gives head start for two types of
navigations:
- "Click" navigation where sub menus open only on click.
- "Hover" navigation where sub menus open on hover also.
It's designed for WordPress navigation markup but can be tweaked for different use cases.
Usage
If you’re using a bundler (such as Webpack or Rollup), you can install @meom/navigation
through npm like any other dependency:
Note, not yet available in NPM!
npm install @meom/navigation
Then you can import the library in your JavaScript and instantiate your navigation.
import Navigation from '@meom/navigation';
const navElement = document.querySelector('.my-nav-wrapper');
const navToggle = document.querySelector('.my-nav-toggle');
if (!navElement || !navToggle) {
return;
}
new Navigation(navElement, navToggle);
Mandatory elements
There are two mandatory elements:
navElement
- Element which is hidden and releaved on smaller screens.navToggle
- <button>
element which trickers the navElement
.
Options
There are several settings (object) which you can pass in as third argument:
new Navigation(navElement, navToggle, {
action: 'click',
subNavAnchors: '.menu-item-has-children.is-item-level-0 > a',
subSubNavAnchors: 'ul .menu-item-has-children > a',
subNavClass: '.sub-menu',
subToggleButtonClasses: '',
subSubToggleButtonClasses: '',
animateSubNav: false,
animateSubNavClass: '',
closeNavOnEscKey: true,
closeNavOnLastTab: false,
visuallyHiddenClass: 'screen-reader-text',
expandChildNavText: 'Child menu',
dropDownIcon:
'<svg class="icon" aria-hidden="true" focusable="false" width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1l4.793 4.793a1 1 0 001.414 0L12 1" stroke-width="2" stroke-linecap="round"></path></svg>',
onCreate: null,
onOpenNav: null,
onCloseNav: null,
onOpenSubNav: null,
onCloseSubNav: null,
});