Treeview Plugin
The Treeview plugin converts a nested list into a collapsible tree where submenus expand and contract on click. It’s what powers the sidebar navigation in the demo dashboards.
Usage
Data API
Add data-lte-toggle="treeview" to the parent <ul> or <ol>. Inside, mark items that have children with .nav-item and put the submenu in a nested <ul class="nav-treeview">:
<ul class="nav sidebar-menu flex-column" data-lte-toggle="treeview" role="menu">
<li class="nav-item">
<a class="nav-link" href="#">
<i class="nav-icon bi bi-speedometer"></i>
<p>Dashboard</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon bi bi-folder"></i>
<p>
Reports
<i class="nav-arrow bi bi-chevron-right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="#" class="nav-link"><i class="nav-icon bi bi-circle"></i><p>Sales</p></a>
</li>
<li class="nav-item">
<a href="#" class="nav-link"><i class="nav-icon bi bi-circle"></i><p>Traffic</p></a>
</li>
</ul>
</li>
</ul>
To start with a submenu pre-expanded, add menu-open to its .nav-item.
Configuration
Configure via data-* attributes on the parent <ul>:
| Attribute | Default | Description |
|---|---|---|
data-accordion | true | Close other open submenus when one opens. Set false for non-accordion behaviour (multiple submenus open at once). |
data-animation-speed | 300 | Slide animation duration in milliseconds. Set 0 to disable animation. |
<!-- Non-accordion mode: multiple submenus can stay open -->
<ul class="nav sidebar-menu" data-lte-toggle="treeview" data-accordion="false">
…
</ul>
<!-- Faster animation -->
<ul class="nav sidebar-menu" data-lte-toggle="treeview" data-animation-speed="150">
…
</ul>
CSS Classes
| Class | Applied to | Description |
|---|---|---|
menu-open | .nav-item (the parent of a submenu) | The submenu is currently expanded. |
nav-treeview | <ul> (nested) | Marks a submenu so the plugin recognises it. |
nav-arrow | <i> inside .nav-link | The chevron icon that rotates when the submenu opens. |
Events
| Event | Description |
|---|---|
expanded.lte.treeview | Fired on the .nav-item when its submenu opens. |
collapsed.lte.treeview | Fired on the .nav-item when its submenu closes. |
load.lte.treeview | Fired once per page load for any submenu that’s already expanded via the menu-open class. |
document.addEventListener("expanded.lte.treeview", (e) => {
console.log("Opened submenu inside:", e.target)
})
Programmatic API
import { Treeview } from "admin-lte"
const item = document.querySelector(".sidebar-menu .nav-item")
const tv = new Treeview(item, { accordion: true, animationSpeed: 300 })
tv.open() // expand this item's submenu
tv.close() // collapse it
tv.toggle() // toggle
Methods
| Method | Returns | Description |
|---|---|---|
open() | void | Expands the submenu. If accordion is true, closes sibling submenus first. Fires expanded.lte.treeview. |
close() | void | Collapses the submenu. Fires collapsed.lte.treeview. |
toggle() | void | Calls open() or close() based on current state. |