Dropdowns JS Required

Contextual dropdown menus for actions and navigation with flexible positioning options. See JavaScript implementation →

Basic Dropdown

Default dropdown menu that appears below the toggle button.

HTML
<div class="focus-dropdown">
  <button class="focus-btn focus-btn-primary focus-dropdown-toggle">
    Actions <i class="fa fa-chevron-down"></i>
  </button>
  <div class="focus-dropdown-menu" style="display: none;">
    <button class="focus-dropdown-item">
      <i class="fa fa-edit"></i> Edit
    </button>
    <button class="focus-dropdown-item">
      <i class="fa fa-copy"></i> Duplicate
    </button>
    <button class="focus-dropdown-item">
      <i class="fa fa-share"></i> Share
    </button>
    <div class="focus-dropdown-divider"></div>
    <button class="focus-dropdown-item">
      <i class="fa fa-trash"></i> Delete
    </button>
  </div>
</div>

Control dropdown position with .focus-dropdown-menu-right and .focus-dropdown-menu-top classes.

HTML
<!-- Right Aligned -->
<div class="focus-dropdown">
  <button class="focus-btn focus-dropdown-toggle">Right Aligned</button>
  <div class="focus-dropdown-menu focus-dropdown-menu-right">
    <button class="focus-dropdown-item">Profile</button>
    <button class="focus-dropdown-item">Settings</button>
  </div>
</div>

<!-- Top Aligned -->
<div class="focus-dropdown">
  <button class="focus-btn focus-dropdown-toggle">Top Aligned</button>
  <div class="focus-dropdown-menu focus-dropdown-menu-top">
    <button class="focus-dropdown-item">Move Up</button>
    <button class="focus-dropdown-item">Move Down</button>
  </div>
</div>

Organize dropdown items with headers using .focus-dropdown-header and dividers.

HTML
<div class="focus-dropdown">
  <button class="focus-btn focus-dropdown-toggle">
    Account <i class="fa fa-chevron-down"></i>
  </button>
  <div class="focus-dropdown-menu">
    <div class="focus-dropdown-header">Profile</div>
    <button class="focus-dropdown-item">
      <i class="fa fa-user"></i> My Profile
    </button>
    <button class="focus-dropdown-item">
      <i class="fa fa-star"></i> Favorites
    </button>
    <div class="focus-dropdown-divider"></div>
    <div class="focus-dropdown-header">Settings</div>
    <button class="focus-dropdown-item">
      <i class="fa fa-cog"></i> Preferences
    </button>
  </div>
</div>

Disable specific dropdown items using the disabled attribute.

HTML
<div class="focus-dropdown-menu">
  <button class="focus-dropdown-item">New File</button>
  <button class="focus-dropdown-item">Open</button>
  <button class="focus-dropdown-item" disabled>Save (Disabled)</button>
  <button class="focus-dropdown-item">Print</button>
</div>

JavaScript

Dropdowns require JavaScript to handle toggle and outside click detection. This code works with the dropdown examples above.

JavaScript
// Initialize dropdowns
document.querySelectorAll('.focus-dropdown').forEach(dropdown => {
  const toggle = dropdown.querySelector('.focus-dropdown-toggle');
  const menu = dropdown.querySelector('.focus-dropdown-menu');
  
  toggle.addEventListener('click', (e) => {
    e.stopPropagation();
    
    // Close other dropdowns
    document.querySelectorAll('.focus-dropdown-menu').forEach(m => {
      if (m !== menu) m.style.display = 'none';
    });
    
    // Toggle current dropdown
    menu.style.display = menu.style.display === 'none' ? 'block' : 'none';
  });
  
  // Close dropdown when clicking an item
  menu.querySelectorAll('.focus-dropdown-item').forEach(item => {
    item.addEventListener('click', () => {
      menu.style.display = 'none';
    });
  });
});

// Close all dropdowns when clicking outside
document.addEventListener('click', () => {
  document.querySelectorAll('.focus-dropdown-menu').forEach(menu => {
    menu.style.display = 'none';
  });
});

CSS Classes Reference

Class Description
.focus-dropdown Main dropdown container
.focus-dropdown-toggle Dropdown toggle button
.focus-dropdown-menu Dropdown menu container
.focus-dropdown-menu-right Align menu to the right
.focus-dropdown-menu-top Position menu above toggle
.focus-dropdown-item Individual dropdown item
.focus-dropdown-header Dropdown section header
.focus-dropdown-divider Horizontal divider between items