Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
metismenujs
Advanced tools
Collapsible menu plugin with Vanilla-JS
This plugin does not support any version of IE browser.
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | ❌ |
Using npm:
npm install metismenujs
Using yarn:
yarn add metismenujs
Using pnpm:
pnpm add metismenujs
Once the package is installed, you can import the library using import
or require
approach:
// recommended approach
import { MetisMenu } from 'metismenujs';
// You can also use the default export
import MetisMenu from 'metismenujs';
If you use require
for importing, only default export is available:
const MetisMenu = require('metismenujs');
Note CommonJS usage In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with
require()
, add the following to yourtsconfig.json
:
{
"compilerOptions": {
"moduleResolution": "NodeNext"
}
}
Using jsDelivr CDN:
<script src="https://cdn.jsdelivr.net/npm/metismenujs"></script>
Using unpkg CDN:
<script src="https://unpkg.com/metismenujs"></script>
Using jsDelivr CDN:
<script type="module">
import { MetisMenu } from 'https://cdn.jsdelivr.net/npm/metismenujs/dist/metismenujs.esm.min.js';
</script>
Using unpkg CDN:
<script type="module">
import { MetisMenu } from 'https://unpkg.com/metismenujs/dist/metismenujs.esm.min.js';
</script>
Install with composer
composer require onokumus/metismenujs:dev-master
Ready to use files are located in the dist
directory.
Include metismenujs StyleSheet
jsDelivr :
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/metismenujs/dist/metismenujs.min.css">
unpkg :
<link rel="stylesheet" href="https://unpkg.com/metismenujs/dist/metismenujs.min.css">
import 'metismenujs/style';
or sass source file
import 'metismenujs/sass';
Add class metismenu
to unordered list
<ul class="metismenu" id="menu">
</ul>
Be sure to add
aria-expanded
to the elementa
. 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 ofaria-expanded="false"
. If you've set the collapsible element's parentli
element to be open by default using theactive
class, setaria-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="mm-active">
<a href="#" aria-expanded="true">Menu 1</a>
<ul>
...
</ul>
</li>
<li>
<a href="#" aria-expanded="false">Menu 2</a>
<ul>
...
</ul>
</li>
...
</ul>
add
has-arrow
class toa
element
<ul class="metismenu" id="menu">
<li class="mm-active">
<a class="has-arrow" href="#" aria-expanded="true">Menu 1</a>
<ul>
...
</ul>
</li>
<li>
<a class="has-arrow" href="#" aria-expanded="false">Menu 2</a>
<ul>
...
</ul>
</li>
...
</ul>
new MetisMenu("#menu");
// or
MetisMenu.attach('#menu');
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>
Option | Type | Default | Description | Example |
---|---|---|---|---|
toggle | Boolean | true | For auto collapse support. | new MetisMenu("#menu", { toggle: false }); |
triggerElement | css selector | a | new MetisMenu("#menu", { triggerElement: '.nav-link' }); | |
parentTrigger | css selector | li | new MetisMenu("#menu", { parentTrigger: '.nav-item' }); | |
subMenu | css selector | ul | new MetisMenu("#menu", { subMenu: '.nav.flex-column' }); |
For stop and destroy metisMenu.
const mm = new MetisMenu("#menu");
mm.dispose();
Re-init metisMenu.
const mm = new MetisMenu("#menu");
mm.dispose();
// ajax ...
mm.update();
Event Type | Description |
---|---|
show.metisMenu | This event fires immediately when the show instance method is called. |
shown.metisMenu | This event is fired when a collapse ul element has been made visible to the user (will wait for CSS transitions to complete). |
hide.metisMenu | This event is fired immediately when the hide method has been called. |
hidden.metisMenu | This event is fired when a collapse ul element has been hidden from the user (will wait for CSS transitions to complete). |
Property | Default | Description |
---|---|---|
--mm-transition-timing-function | ease | This property sets how intermediate values are calculated for CSS properties being affected by a transition effect. |
--mm-trantisition-duration | 0.35s | This property sets the length of time a transition animation should take to complete. |
metisMenu.js
& metisMenu.css
filesactive
class to mm-active
https://github.com/metismenu/examples
https://onokumus.github.io/metismenujs
Contains a simple HTML file to demonstrate metisMenu plugin.
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Osman Nuri Okumus
Copyright © 2023, Osman Nuri Okumuş. Released under the MIT License.
FAQs
MetisMenu: Collapsible menu plugin with Vanilla-JS
The npm package metismenujs receives a total of 15,002 weekly downloads. As such, metismenujs popularity was classified as popular.
We found that metismenujs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.