Getting started

Install

Install with npm:

$ npm install --save metismenu

Install with bower

$ bower install metismenu --save

Install with composer

$ composer require onokumus/metismenu:dev-master

Download

download

TypeScript type definitions

Install metismenu TypeScript definition file

$ npm install --save-dev @types/metismenu

Usage

  1. Include metismenu StyleSheet
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/metisMenu/2.7.0/metisMenu.min.css">

OR

<link rel="stylesheet" href="//cdn.jsdelivr.net/jquery.metismenu/2.7.0/metisMenu.min.css">
  1. Include jQuery
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

OR

<script src="//cdn.jsdelivr.net/jquery/2.2.4/jquery.min.js"></script>
  1. Include metisMenu plugin's code
<script src="//cdnjs.cloudflare.com/ajax/libs/metisMenu/2.7.0/metisMenu.min.js"></script>

OR

<script src="//cdn.jsdelivr.net/jquery.metismenu/2.7.0/metisMenu.min.js"></script>
  1. Add class metismenu to unordered list
<ul class="metismenu" id="menu">

</ul>
  1. Make expand/collapse controls accessible

Be sure to add aria-expanded to the element a and the following ul. This attribute explicitly defines the current state of the collapsible element to screen readers and similar assistive technologies. If the collapsible element is closed by default, it should have a value of aria-expanded="false". If you've set the collapsible element's parent li element to be open by default using the active class, set aria-expanded="true" on the control instead. The plugin will automatically toggle this attribute based on whether or not the collapsible element has been opened or closed.

<ul class="metismenu" id="menu">
  <li class="active">
    <a href="#" aria-expanded="true">Menu 1</a>
    <ul aria-expanded="true">
    ...
    </ul>
  </li>
  <li>
    <a href="#" aria-expanded="false">Menu 2</a>
    <ul aria-expanded="false">
    ...
    </ul>
  </li>
  ...
  </ul>
  1. Arrow Options

add has-arrow class to a element

<ul class="metismenu" id="menu">
<li class="active">
  <a class="has-arrow" href="#" aria-expanded="true">Menu 1</a>
  <ul aria-expanded="true">
  ...
  </ul>
</li>
<li>
  <a class="has-arrow" href="#" aria-expanded="false">Menu 2</a>
  <ul aria-expanded="false">
  ...
  </ul>
</li>
...
</ul>
  1. Call the plugin:
  $("#menu").metisMenu();

Stopping list opening on certain elements

Setting aria-disabled="true" in the <a> element as shown will stop metisMenu opening the menu for that particular list. This can be changed dynamically and will be obeyed correctly:

<a href="#" aria-expanded="false" aria-disabled="true">List 1</a>

Options

toggle

Type: Boolean
Default: true

For auto collapse support.

 $("#menu").metisMenu({
   toggle: false
 });

dispose

Type: String
Default: null

For stop and destroy metisMenu.

 $("#menu").metisMenu('dispose');

activeClass

Type: String
Default: active

 $("#menu").metisMenu({
   activeClass: 'active'
 });

collapseClass

Type: String
Default: collapse

 $("#menu").metisMenu({
   collapseClass: 'collapse'
 });

collapseInClass

Type: String
Default: in

 $("#menu").metisMenu({
   collapseInClass: 'in'
 });

collapsingClass

Type: String
Default: collapsing

 $("#menu").metisMenu({
   collapsingClass: 'collapsing'
 });

preventDefault

Type: Boolean
Default: true

Prevents or allows dropdowns' onclick events after expanding/collapsing.

 $("#menu").metisMenu({
   preventDefault: false
 });

since from version 2.7.0

triggerElement

Type: jQuery selector
Default: a

 $("#menu").metisMenu({
   triggerElement: '.nav-link' // bootstrap 4
 });

parentTrigger

Type: jQuery selector
Default: li

 $("#menu").metisMenu({
   parentTrigger: '.nav-item' // bootstrap 4
 });

subMenu

Type: jQuery selector
Default: ul

 $("#menu").metisMenu({
   subMenu: '.nav.flex-column' // bootstrap 4
 });

Events

Event TypeDescription
show.metisMenuThis event fires immediately when the _show instance method is called.
shown.metisMenuThis event is fired when a collapse ul element has been made visible to the user (will wait for CSS transitions to complete).
hide.metisMenuThis event is fired immediately when the _hide method has been called.
hidden.metisMenuThis event is fired when a collapse ul element has been hidden from the user (will wait for CSS transitions to complete).

Testing

$ npm install
$ grunt serve