npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@macaulay2/boot-side-menu

v2.3.0

Published

A jQuery plugin to easily create a sliding menu, working on a Bootstrap based application.

Readme

This is a fork of the original, but no longer maintained, package by Andrea Lombardo for use by the Macaulay2 Visualize package.

BootSideMenu

BootSideMenu is a jQuery plugin to easily build a sliding menu in a Bootstrap based application.


Installation

npm install @macaulay2/boot-side-menu

The built files land in dist. Load jQuery first, then the plugin:

<link rel="stylesheet" href="dist/BootSideMenu.css" />
<!-- optional, for any theme other than the default one -->
<link rel="stylesheet" href="dist/theme/dracula.css" />

<script src="jquery.js"></script>
<script src="dist/BootSideMenu.js"></script>

Then give the menu an id and hand it to the plugin:

<div id="menu">
  <div class="list-group">
    <a href="#" class="list-group-item">First item</a>
    <a href="#" class="list-group-item">Second item</a>
  </div>
</div>

<script>
  jQuery(function () {
    jQuery("#menu").BootSideMenu({ side: "left" });
  });
</script>

The plugin also loads as an AMD or CommonJS module.

Options

| Option | Type | Value | Description | Default | | :---------------- | :------ | :------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------: | | side | String | left or right | Where menu will be placed | left | | width | String | any CSS length | Width of the menu | 15% | | duration | Integer | milliseconds | Animation duration, ignored when the system asks for reduced motion | 500 | | remember | Boolean | true or false | Restore last menu status on page refresh; needs the menu to have an id | true | | autoClose | Boolean | true or false | If true the initial status will be "closed" | false | | pushBody | Boolean | true or false | If true the body of the page will be pushed left or right, according to the menu width and position | true | | closeOnClick | Boolean | true or false | If true the menu will be closed when a link is clicked or if a click is made outside of it | true | | closeOnEscape | Boolean | true or false | If true an open menu will be closed by the Escape key | true | | togglerLabel | String | any text | Accessible name given to the toggler | 'Toggle menu' | | icons | Object | An object where to specify the icon fonts classes | A way to use other icon fonts | icons: {left: 'fa fa-chevron-left', right: 'fa fa-chevron-right', down: 'fa fa-chevron-down'} | | theme | String | 'default', 'dracula', 'darkblue', 'zenburn', 'pinklady', 'somebook' | Five themes plus a default one. Your is welcome. | 'default' |

Below a window width of 480 pixels the menu stops pushing the body and always closes on a click, whatever pushBody and closeOnClick say.

Remembering the menu state

With remember on, the open or closed state is written to both localStorage and a cookie, under a key built from the menu's id. Neither store works everywhere: a page opened straight from the filesystem gets no cookies in Chrome, while localStorage can be turned off or unavailable elsewhere. Writing both means the state survives in either case, and a state saved by an older version of the plugin is still read back from its cookie.

A menu without an id has nothing to key the state on, so remember turns itself off and says so on the console.

Events

| Event | Description | Default | | :----------------- | :---------------------------------------------------------- | :--------: | | onStartup | A function to be executed when the menu is instantiated | do nothing | | onTogglerClick | A function to be executed when the toggler arrow is clicked | do nothing | | onBeforeOpen | A function to be executed before the menu is opened | do nothing | | onOpen | A function to be executed when the menu is opened | do nothing | | onBeforeClose | A function to be executed before the menu is closed | do nothing | | onClose | A function to be executed when the menu is closed | do nothing |

Each callback receives the menu as its only argument.

Methods

| Method | Description | | :-------------------------------------- | :-----------------------------------------------: | | $(selector).BootSideMenu.open(); | Open menu programmatically | | $(selector).BootSideMenu.close(); | Close menu programmatically | | $(selector).BootSideMenu.toggle(); | Toggle menu programmatically | | $(selector).BootSideMenu.destroy(); | Remove the menu and give the original markup back |

The same methods are on the instance the plugin stores on the element, which also exposes isOpen() and the merged settings:

var menu = jQuery("#menu").data("BootSideMenu");

menu.open();
menu.isOpen(); // true
menu.settings.side; // "left"
menu.destroy(); // now jQuery("#menu").BootSideMenu(...) can build a new one

Initializing a menu that already has one does nothing; destroy() is what lets a menu be rebuilt with different options.

Accessibility

The toggler is reachable by tab and exposed as a button, with an aria-expanded that follows the menu and an accessible name from togglerLabel. Enter and Space work on it, and Escape closes the menu unless closeOnEscape is off. When the system asks for reduced motion, the menu opens and closes without animating.

Examples

The examples directory has three pages, which open straight from the filesystem once npm run build has produced dist:

  • examples/index.html is a control panel: every option is a live control, the callbacks are logged as they fire, and the readouts show what the plugin makes of the window it is in.
  • examples/simple.html is the smallest thing that works.
  • examples/events.html wires up every callback and the methods.

Donations

Coffee and beers are well accepted! :coffee: PayPal Donations Here :beer: