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>
Positioning
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>
Headers and Dividers
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>
Disabled Items
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 |