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>:

AttributeDefaultDescription
data-accordiontrueClose other open submenus when one opens. Set false for non-accordion behaviour (multiple submenus open at once).
data-animation-speed300Slide 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
ClassApplied toDescription
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-linkThe chevron icon that rotates when the submenu opens.
Events
EventDescription
expanded.lte.treeviewFired on the .nav-item when its submenu opens.
collapsed.lte.treeviewFired on the .nav-item when its submenu closes.
load.lte.treeviewFired 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
MethodReturnsDescription
open()voidExpands the submenu. If accordion is true, closes sibling submenus first. Fires expanded.lte.treeview.
close()voidCollapses the submenu. Fires collapsed.lte.treeview.
toggle()voidCalls open() or close() based on current state.
Example