Collapsable Menu
Collapsable menu is a menu that can be expanded and collapsed. It is useful for displaying a list of items that can be expanded to show more details.
HTML
<div x-data="{ isOpen: false }" class="collapsable-menu">
<button type="button" class="collapsable-menu-btn" @click="isOpen = !isOpen"
:aria-expanded="isOpen" aria-controls="collapse-example-1">
E-Commerce
</button>
<div x-show="isOpen" class="collapsable-menu-content" x-transition id="collapse-example-1">
<ul>
<li class="collapsable-menu-item">
Products
</li>
<li class="collapsable-menu-item">
Orders
</li>
<li class="collapsable-menu-item">
Customers
</li>
</ul>
</div>
</div>
CSS
.collapsable-menu {
--collapsable-menu-hover-bg: var(--bs-light-100);
width: 100%;
max-width: 300px;
}
[data-bs-theme="dark"] .collapsable-menu {
--collapsable-menu-hover-bg: var(--bs-dark-100);
}
.collapsable-menu-btn {
text-align: left;
padding: var(--bs-spacer-2);
border-radius: 0.25rem;
cursor: pointer;
border: none;
width: 100%;
transition: 0.3s;
background-color: transparent;
}
.collapsable-menu-btn:hover {
background-color: var(--collapsable-menu-hover-bg);
}
.collapsable-menu-btn::after {
content: '\f078';
font-family: 'Font Awesome 5 Free';
font-weight: 900;
float: right;
}
.collapsable-menu-btn[aria-expanded="true"]::after {
content: '\f077';
}
.collapsable-menu-content {
display: block;
}
.collapsable-menu-content ul {
padding: 0;
list-style: none;
}
.collapsable-menu-item {
cursor: pointer;
padding: var(--bs-spacer-1);
border-radius: var(--bs-border-radius);
padding-left: var(--bs-spacer-4);
}
.collapsable-menu-item:hover {
background-color: var(--collapsable-menu-hover-bg);
}