The Dropdown component is a versatile UI element that displays a list of options when triggered. It supports various styles, directions, and can include nested submenus. The component can be triggered by click or hover events.
Click DropdownHover Dropdown<!-- Click Trigger --> <div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Click Dropdown <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> </ul> </div> <!-- Hover Trigger --> <div class="dropdown dropdown-bottom dropdown-hover"> <div class="dropdown-box"> Hover Dropdown <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> </ul> </div>
Right Multi-levelMixed Directions<!-- Right Direction with Nested --> <div class="dropdown dropdown-right"> <div class="dropdown-box"> Right Multi-level <i class="fa-solid fa-chevron-right"></i> </div> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li class="dropdown-submenu"> <a href="#" class="dropdown-submenu-toggle"> Submenu <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Submenu Item 1</a></li> <li><a href="#">Submenu Item 2</a></li> </ul> </li> </ul> </div> <!-- Mixed Directions --> <div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Mixed Directions <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li><a href="#">Item 1</a></li> <li class="dropdown-submenu dropdown-right"> <a href="#" class="dropdown-submenu-toggle"> Right Submenu <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Submenu Item 1</a></li> <li class="dropdown-submenu dropdown-bottom"> <a href="#" class="dropdown-submenu-toggle"> Bottom Submenu <i class="fa-solid fa-chevron-down"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Nested Item 1</a></li> <li><a href="#">Nested Item 2</a></li> </ul> </li> </ul> </li> <li class="dropdown-submenu dropdown-left"> <a href="#" class="dropdown-submenu-toggle"> Left Submenu <i class="fa-solid fa-chevron-left"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Submenu Item 1</a></li> <li class="dropdown-submenu dropdown-bottom"> <a href="#" class="dropdown-submenu-toggle"> Bottom Submenu <i class="fa-solid fa-chevron-down"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Nested Item 1</a></li> <li><a href="#">Nested Item 2</a></li> </ul> </li> </ul> </li> </ul> </div>
Form DropdownFilter OptionsSort Options<!-- Dropdown with Form --> <div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Form Dropdown <i class="fa-solid fa-chevron-down"></i> </div> <div class="dropdown-menu p-2"> <form class="d-flex flex-column gap-1"> <input type="text" class="form-control" placeholder="Username"> <input type="password" class="form-control" placeholder="Password"> <button type="submit" class="btn btn-primary">Login</button> </form> </div> </div> <!-- Dropdown with Checkboxes --> <div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Filter Options <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li> <label class="d-flex align-items-center gap-1"> <input type="checkbox"> Option 1 </label> </li> <li> <label class="d-flex align-items-center gap-1"> <input type="checkbox"> Option 2 </label> </li> <li> <label class="d-flex align-items-center gap-1"> <input type="checkbox"> Option 3 </label> </li> </ul> </div> <!-- Dropdown with Radio Buttons --> <div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Sort Options <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li> <label class="d-flex align-items-center gap-1"> <input type="radio" name="sort"> Name (A-Z) </label> </li> <li> <label class="d-flex align-items-center gap-1"> <input type="radio" name="sort"> Name (Z-A) </label> </li> <li> <label class="d-flex align-items-center gap-1"> <input type="radio" name="sort"> Date (Newest) </label> </li> </ul> </div>
Multi-level Dropdown<div class="dropdown dropdown-bottom"> <div class="dropdown-box"> Multi-level Dropdown <i class="fa-solid fa-chevron-down"></i> </div> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li class="dropdown-submenu"> <a href="#" class="dropdown-submenu-toggle"> Submenu 1 <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu dropdown-right"> <li><a href="#">Submenu Item 1</a></li> <li><a href="#">Submenu Item 2</a></li> <li class="dropdown-submenu"> <a href="#" class="dropdown-submenu-toggle"> Submenu 1.1 <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu"> <li class="dropdown-submenu"> <a class="dropdown-submenu-toggle"> Submenu Item 1.1.1 <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Submenu Item 1.1.1</a></li> <li><a href="#">Submenu Item 1.1.2</a></li> </ul> </li> <li><a href="#">Submenu Item 1.1.2</a></li> </ul> </li> </ul> </li> <li class="dropdown-submenu"> <a href="#" class="dropdown-submenu-toggle"> Submenu 2 <i class="fa-solid fa-chevron-right"></i> </a> <ul class="dropdown-menu"> <li><a href="#">Submenu Item 3</a></li> <li><a href="#">Submenu Item 4</a></li> </ul> </li> </ul> </div>
Class | Description |
---|---|
.dropdown | Base class for the dropdown component |
.dropdown-box | The trigger element that opens the dropdown |
.dropdown-menu | Container for dropdown items |
.dropdown-bottom | Opens dropdown below the trigger |
.dropdown-top | Opens dropdown above the trigger |
.dropdown-right | Opens dropdown to the right of the trigger |
.dropdown-left | Opens dropdown to the left of the trigger |
.dropdown-hover | Enables hover trigger instead of click |
.dropdown-submenu | Creates a nested dropdown menu |
.dropdown-submenu-toggle | The trigger element for submenu items |
The dropdown component supports different layout variations:
Type | Path |
---|---|
SCSS | miz/themes/mizoon/components/dropdown/_index.scss |
HTML Example | miz/themes/mizoon/components/dropdown/index.html |
JavaScript | miz/themes/mizoon/components/dropdown/script.js |
$dropdown-box-transition: 0.2s linear;
$dropdown-menu-transition: 1s linear;
$item-dropdown-menu-transition: 0.2s linear;
$icon-submenu-toggle-rotate: 90deg;
$dropdown-box-custom-classes: ".bg-secondary-color, .on-secondary-color, .all-border-small, .txt-normal, .border-solid, .border-primary-color, .border-width-1";
$dropdown-menu-custom-classes: ".bg-secondary-color, .on-secondary-color, .all-border-small, .txt-normal, .border-width-1, .border-solid, .border-primary-color";
$item-dropdown-menu-custom-classes: ".py-1, .px-2, .on-secondary-color, .txt-normal";
The dropdown component includes JavaScript functionality for handling interactions:
Method/Property | Type | Description |
---|---|---|
constructor(element) | Method | Initializes the dropdown component |
init() | Method | Sets up event listeners and initial state |
toggle() | Method | Toggles the dropdown's visibility |
open() | Method | Opens the dropdown |
close() | Method | Closes the dropdown |
toggleSubmenu(submenu) | Method | Toggles a submenu's visibility |