New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

bs-enhanced-dropdowns

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bs-enhanced-dropdowns

This project provides an enhanced navigation menu system for Bootstrap 5, featuring split dropdown buttons, multi-level submenus, improved keyboard accessibility, and intelligent handling of link behavior based on the `href` attribute.

latest
Source
npmnpm
Version
1.2.0
Version published
Maintainers
1
Created
Source

Bootstrap 5 Enhanced Dropdowns

npm downloads

Live Demo · Split dropdown buttons, multi-level submenus, and improved keyboard accessibility for Bootstrap 5.

Table of Contents

Features

FeatureDescription
Split Dropdown ButtonsLink navigates, caret toggles dropdown
Multi-level SubmenusUp to 3 levels deep
Auto Multi-Column1-5 columns based on item count (desktop)
Smart HoverHover-to-open on desktop, click always works*
Keyboard NavigationArrow keys, Enter, Space, Escape, Tab
ARIA AccessibilityFull screen reader support
Mobile-FriendlyResponsive for all viewports
RTL SupportFull right-to-left language support

*If any dropdown in a navbar has nested submenus, all dropdowns in that navbar become click-only to avoid frustrating hover tunnel navigation.

Quick Start

1. Include Bootstrap 5:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

2. Include Enhanced Dropdowns:

<link href="css/enhanced-dropdowns.css" rel="stylesheet">
<script src="js/enhanced-dropdowns.js"></script>

3. Initialize:

<script>
  document.addEventListener('DOMContentLoaded', () => {
    new BootstrapEnhancedDropdowns();
  });
</script>

HTML Patterns

Wrap navigation in <ul class="navbar-nav" role="menubar">.

Split Dropdown (Top-Level)

<li class="nav-item dropdown" role="none">
  <div class="bs-dropdown-wrapper">
    <a class="nav-link" href="/features" role="menuitem">Features</a>
    <button class="bs-dropdown-caret" type="button" aria-expanded="false">
      <span class="visually-hidden">Toggle submenu</span>
    </button>
  </div>
  <ul class="dropdown-menu">
    <li><a class="dropdown-item" href="/overview" role="menuitem">Overview</a></li>
  </ul>
</li>

Standard Bootstrap Dropdown

<li class="nav-item dropdown" role="none">
  <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">
    About
  </a>
  <ul class="dropdown-menu">
    <li><a class="dropdown-item" href="/team" role="menuitem">Team</a></li>
  </ul>
</li>

CSS Classes Reference

ClassPurpose
.bs-dropdown-wrapperWrapper for top-level split buttons
.bs-dropdown-item-wrapperWrapper for nested split buttons
.bs-dropdown-caretClickable caret button
.bs-dropdown-submenuContainer for nested dropdown

See index.html and demo.html for complete examples.

Accessibility

Keyboard Navigation

KeyAction
TabMove between top-level items
/ Navigate within dropdown
Enter / SpaceActivate item
EscapeClose dropdown
Close submenu, return to parent

WCAG Compliance

CriterionLevelDescription
2.1.1 KeyboardAFull navigation via arrows, Enter, Space, Escape, Tab
2.1.2 No Keyboard TrapATab and Escape always allow exiting menus
2.4.7 Focus VisibleAAClear focus indicators on all interactive elements
1.4.13 Content on Hover or FocusAAHover menus persist, dismissible via Escape
4.1.2 Name, Role, ValueAARIA roles and states (aria-expanded, aria-controls)
2.5.5 Target SizeAAACaret toggles meet 44×44px minimum

Customization

CSS Variables

VariablePurpose
--bs-dropdown-caret-widthCaret button width
--bs-dropdown-caret-padding-xCaret horizontal padding
--bs-dropdown-indent-stepSubmenu indentation

Auto-Column Layout

Desktop (≥992px) applies columns automatically:

ItemsColumnsFull Width
1-71No
8-142No
15-203Yes
21-274Yes
28+5Yes

FAQs

Package last updated on 17 Dec 2025

Did you know?

Socket

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.

Install

Related posts