Dropdowns
Contextual dropdown menus for actions and navigation with flexible positioning options.
Simple API
Control dropdowns with Dropdown.toggle('#myDropdown'), Dropdown.open(), and Dropdown.close().
Quick Start
Create a dropdown with HTML structure, then toggle it with JavaScript.
JavaScript
// Toggle on button click
document.querySelector('.focus-dropdown-toggle').addEventListener('click', () => {
Dropdown.toggle('#dropdown1')
})
// Or use open/close directly
Dropdown.open('#dropdown1')
Dropdown.close('#dropdown1')
Show HTML Structure
<div class="focus-dropdown" id="dropdown1">
<button class="focus-btn focus-btn-primary focus-dropdown-toggle">
Actions <i class="fa fa-chevron-down"></i>
</button>
<div class="focus-dropdown-menu">
<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 CSS modifier classes.
HTML
<!-- Right Aligned -->
<div class="focus-dropdown-menu focus-dropdown-menu-right">
...
</div>
<!-- Top Aligned (opens upward) -->
<div class="focus-dropdown-menu focus-dropdown-menu-top">
...
</div>
Headers and Dividers
Organize dropdown items into groups with headers and dividers.
HTML
<div class="focus-dropdown-menu">
<div class="focus-dropdown-header">Profile</div>
<button class="focus-dropdown-item">My Profile</button>
<button class="focus-dropdown-item">Favorites</button>
<div class="focus-dropdown-divider"></div>
<div class="focus-dropdown-header">Settings</div>
<button class="focus-dropdown-item">Preferences</button>
</div>
Disabled Items
Disable specific items with the disabled attribute.
HTML
<button class="focus-dropdown-item" disabled>
Save (Disabled)
</button>
JavaScript API
Control dropdowns programmatically. Dropdowns automatically close when clicking outside.
Toggle, Open, Close
JavaScript
Dropdown.toggle('#myDropdown')
Dropdown.open('#myDropdown')
Dropdown.close('#myDropdown')
Setup Toggle Button
JavaScript
document.querySelectorAll('.focus-dropdown-toggle').forEach(toggle => {
toggle.addEventListener('click', (e) => {
e.stopPropagation()
const dropdown = toggle.closest('.focus-dropdown')
FocusUI.Dropdown.toggle(dropdown)
})
})
Close on Item Select
JavaScript
document.querySelectorAll('.focus-dropdown-item').forEach(item => {
item.addEventListener('click', () => {
const dropdown = item.closest('.focus-dropdown')
FocusUI.Dropdown.close(dropdown)
})
})
Methods
| Method | Description |
|---|---|
Dropdown.toggle(selector) |
Toggle dropdown open/closed. Closes other open dropdowns. |
Dropdown.open(selector) |
Open a dropdown. Adds click-outside-to-close behavior. |
Dropdown.close(selector) |
Close a dropdown |
CSS Classes Reference
| Class | Description |
|---|---|
.focus-dropdown |
Container element |
.focus-dropdown-toggle |
Toggle button |
.focus-dropdown-menu |
Menu container (hidden by default) |
.focus-dropdown-open |
Added to container when open (shows menu) |
.focus-dropdown-menu-right |
Align menu to right edge |
.focus-dropdown-menu-top |
Open menu above toggle |
.focus-dropdown-item |
Menu item button |
.focus-dropdown-header |
Section header (non-clickable) |
.focus-dropdown-divider |
Horizontal separator |