adminlte4
Version:
914 lines (892 loc) • 58.9 kB
HTML
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript Plugins Overview | AdminLTE 4</title>
<!--begin::Accessibility Meta Tags-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="color-scheme" content="light dark" />
<meta name="theme-color" content="#007bff" media="(prefers-color-scheme: light)" />
<meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)" />
<!--end::Accessibility Meta Tags-->
<!--begin::Primary Meta Tags-->
<meta name="title" content="JavaScript Plugins Overview | AdminLTE 4" />
<meta name="author" content="ColorlibHQ" />
<meta
name="description"
content="AdminLTE is a Free Bootstrap 5 Admin Dashboard, 30 example pages using Vanilla JS. Fully accessible with WCAG 2.1 AA compliance."
/>
<meta
name="keywords"
content="bootstrap 5, bootstrap, bootstrap 5 admin dashboard, bootstrap 5 dashboard, bootstrap 5 charts, bootstrap 5 calendar, bootstrap 5 datepicker, bootstrap 5 tables, bootstrap 5 datatable, vanilla js datatable, colorlibhq, colorlibhq dashboard, colorlibhq admin dashboard, accessible admin panel, WCAG compliant"
/>
<!--end::Primary Meta Tags-->
<!--begin::Accessibility Features-->
<!-- Skip links will be dynamically added by accessibility.js -->
<meta name="supported-color-schemes" content="light dark" />
<link rel="preload" href="../../css/adminlte.css" as="style" />
<!--end::Accessibility Features-->
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fontsource/source-sans-3@5.0.12/index.css"
integrity="sha256-tXJfXfp6Ewt1ilPzLDtQnJV4hclT9XuaZUKyUvmyr+Q="
crossorigin="anonymous"
media="print"
onload="this.media = 'all'"
/>
<!--end::Fonts-->
<!--begin::Third Party Plugin(OverlayScrollbars)-->
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/overlayscrollbars@2.11.0/styles/overlayscrollbars.min.css"
crossorigin="anonymous"
/>
<!--end::Third Party Plugin(OverlayScrollbars)-->
<!--begin::Third Party Plugin(Bootstrap Icons)-->
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css"
crossorigin="anonymous"
/>
<!--end::Third Party Plugin(Bootstrap Icons)-->
<!--begin::Required Plugin(AdminLTE)-->
<link rel="stylesheet" href="../../css/adminlte.css" />
<!--end::Required Plugin(AdminLTE)-->
</head>
<body class="layout-fixed sidebar-expand-lg bg-body-tertiary docs-page">
<div class="app-wrapper">
<!--begin::Header-->
<nav class="app-header navbar navbar-expand bg-body">
<!--begin::Container-->
<div class="container-fluid">
<!--begin::Start Navbar Links-->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-lte-toggle="sidebar" href="#" role="button">
<i class="bi bi-list"></i>
</a>
</li>
<li class="nav-item d-none d-md-block">
<a href="../../docs/introduction.html" class="nav-link">
<i class="bi bi-book me-1" aria-hidden="true"></i>
Documentation
</a>
</li>
<li class="nav-item d-none d-md-block">
<a href="../../index.html" class="nav-link">
<i class="bi bi-arrow-left me-1" aria-hidden="true"></i>
Back to live preview
</a>
</li>
</ul>
<!--end::Start Navbar Links-->
<!--begin::End Navbar Links-->
<ul class="navbar-nav ms-auto">
<!--begin::Navbar Search-->
<li class="nav-item">
<a class="nav-link" data-widget="navbar-search" href="#" role="button">
<i class="bi bi-search"></i>
</a>
</li>
<!--end::Navbar Search-->
<!--begin::Messages Dropdown Menu-->
<li class="nav-item dropdown">
<a class="nav-link" data-bs-toggle="dropdown" href="#">
<i class="bi bi-chat-text"></i>
<span class="navbar-badge badge text-bg-danger">3</span>
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
<a href="#" class="dropdown-item">
<!--begin::Message-->
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="../../assets/img/user1-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
</div>
<div class="flex-grow-1">
<h3 class="dropdown-item-title">
Brad Diesel
<span class="float-end fs-7 text-danger"
><i class="bi bi-star-fill"></i
></span>
</h3>
<p class="fs-7">Call me whenever you can...</p>
<p class="fs-7 text-secondary">
<i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
</p>
</div>
</div>
<!--end::Message-->
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<!--begin::Message-->
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="../../assets/img/user8-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
</div>
<div class="flex-grow-1">
<h3 class="dropdown-item-title">
John Pierce
<span class="float-end fs-7 text-secondary">
<i class="bi bi-star-fill"></i>
</span>
</h3>
<p class="fs-7">I got your message bro</p>
<p class="fs-7 text-secondary">
<i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
</p>
</div>
</div>
<!--end::Message-->
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<!--begin::Message-->
<div class="d-flex">
<div class="flex-shrink-0">
<img
src="../../assets/img/user3-128x128.jpg"
alt="User Avatar"
class="img-size-50 rounded-circle me-3"
/>
</div>
<div class="flex-grow-1">
<h3 class="dropdown-item-title">
Nora Silvester
<span class="float-end fs-7 text-warning">
<i class="bi bi-star-fill"></i>
</span>
</h3>
<p class="fs-7">The subject goes here</p>
<p class="fs-7 text-secondary">
<i class="bi bi-clock-fill me-1"></i> 4 Hours Ago
</p>
</div>
</div>
<!--end::Message-->
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item dropdown-footer">See All Messages</a>
</div>
</li>
<!--end::Messages Dropdown Menu-->
<!--begin::Notifications Dropdown Menu-->
<li class="nav-item dropdown">
<a class="nav-link" data-bs-toggle="dropdown" href="#">
<i class="bi bi-bell-fill"></i>
<span class="navbar-badge badge text-bg-warning">15</span>
</a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
<span class="dropdown-item dropdown-header">15 Notifications</span>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<i class="bi bi-envelope me-2"></i> 4 new messages
<span class="float-end text-secondary fs-7">3 mins</span>
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<i class="bi bi-people-fill me-2"></i> 8 friend requests
<span class="float-end text-secondary fs-7">12 hours</span>
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<i class="bi bi-file-earmark-fill me-2"></i> 3 new reports
<span class="float-end text-secondary fs-7">2 days</span>
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item dropdown-footer"> See All Notifications </a>
</div>
</li>
<!--end::Notifications Dropdown Menu-->
<!--begin::Fullscreen Toggle-->
<li class="nav-item">
<a class="nav-link" href="#" data-lte-toggle="fullscreen">
<i data-lte-icon="maximize" class="bi bi-arrows-fullscreen"></i>
<i data-lte-icon="minimize" class="bi bi-fullscreen-exit d-none"></i>
</a>
</li>
<!--end::Fullscreen Toggle-->
<!--begin::Color Mode Toggle (#6010)-->
<li class="nav-item dropdown">
<a
class="nav-link"
href="#"
id="bd-theme"
aria-label="Toggle color scheme"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<i class="bi bi-sun-fill" data-lte-theme-icon="light"></i>
<i class="bi bi-moon-fill d-none" data-lte-theme-icon="dark"></i>
<i class="bi bi-circle-half d-none" data-lte-theme-icon="auto"></i>
</a>
<ul
class="dropdown-menu dropdown-menu-end"
aria-labelledby="bd-theme"
style="--bs-dropdown-min-width: 8rem"
>
<li>
<button
type="button"
class="dropdown-item d-flex align-items-center"
data-bs-theme-value="light"
aria-pressed="false"
>
<i class="bi bi-sun-fill me-2"></i>
Light
<i class="bi bi-check-lg ms-auto d-none"></i>
</button>
</li>
<li>
<button
type="button"
class="dropdown-item d-flex align-items-center"
data-bs-theme-value="dark"
aria-pressed="false"
>
<i class="bi bi-moon-fill me-2"></i>
Dark
<i class="bi bi-check-lg ms-auto d-none"></i>
</button>
</li>
<li>
<button
type="button"
class="dropdown-item d-flex align-items-center active"
data-bs-theme-value="auto"
aria-pressed="true"
>
<i class="bi bi-circle-half me-2"></i>
Auto
<i class="bi bi-check-lg ms-auto d-none"></i>
</button>
</li>
</ul>
</li>
<!--end::Color Mode Toggle-->
<!--begin::User Menu Dropdown-->
<li class="nav-item dropdown user-menu">
<a href="#" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
<img
src="../../assets/img/user2-160x160.jpg"
class="user-image rounded-circle shadow"
alt="User Image"
/>
<span class="d-none d-md-inline">Alexander Pierce</span>
</a>
<ul class="dropdown-menu dropdown-menu-lg dropdown-menu-end">
<!--begin::User Image-->
<li class="user-header text-bg-primary">
<img
src="../../assets/img/user2-160x160.jpg"
class="rounded-circle shadow"
alt="User Image"
/>
<p>
Alexander Pierce - Web Developer
<small>Member since Nov. 2023</small>
</p>
</li>
<!--end::User Image-->
<!--begin::Menu Body-->
<li class="user-body">
<!--begin::Row-->
<div class="row">
<div class="col-4 text-center">
<a href="#">Followers</a>
</div>
<div class="col-4 text-center">
<a href="#">Sales</a>
</div>
<div class="col-4 text-center">
<a href="#">Friends</a>
</div>
</div>
<!--end::Row-->
</li>
<!--end::Menu Body-->
<!--begin::Menu Footer-->
<li class="user-footer">
<a href="#" class="btn btn-outline-secondary">Profile</a>
<a href="#" class="btn btn-outline-danger float-end">Sign out</a>
</li>
<!--end::Menu Footer-->
</ul>
</li>
<!--end::User Menu Dropdown-->
</ul>
<!--end::End Navbar Links-->
</div>
<!--end::Container-->
</nav>
<!--end::Header-->
<!--begin::Sidebar (docs mode)-->
<aside class="app-sidebar bg-body-secondary shadow" data-bs-theme="dark">
<!--begin::Sidebar Brand-->
<div class="sidebar-brand">
<a href="../../docs/introduction.html" class="brand-link">
<img
src="../../assets/img/AdminLTELogo.png"
alt="AdminLTE Logo"
class="brand-image opacity-75 shadow"
/>
<span class="brand-text fw-light">
AdminLTE 4 <span class="opacity-75">· Docs</span>
</span>
</a>
</div>
<!--end::Sidebar Brand-->
<!--begin::Sidebar Wrapper-->
<div class="sidebar-wrapper">
<nav class="mt-2">
<!-- Back to preview CTA -->
<div class="px-3 pb-2">
<a
href="../../index.html"
class="btn btn-sm btn-outline-light w-100 d-flex align-items-center justify-content-center gap-2"
>
<i class="bi bi-arrow-left" aria-hidden="true"></i>
Back to live preview
</a>
</div>
<!--begin::Sidebar Menu-->
<ul
class="nav sidebar-menu flex-column"
data-lte-toggle="treeview"
role="navigation"
aria-label="Documentation navigation"
data-accordion="false"
id="docs-navigation"
>
<li class="nav-header">START HERE</li>
<li class="nav-item">
<a href="../../docs/introduction.html" class="nav-link">
<i class="nav-icon bi bi-download"></i>
<p>Installation</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/getting-started.html" class="nav-link">
<i class="nav-icon bi bi-rocket-takeoff"></i>
<p>Getting Started</p>
</a>
</li>
<li class="nav-header">FOUNDATIONS</li>
<li class="nav-item">
<a href="../../docs/layout.html" class="nav-link">
<i class="nav-icon bi bi-grip-horizontal"></i>
<p>Layout Classes</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/layout-blueprint.html" class="nav-link">
<i class="nav-icon bi bi-diagram-3"></i>
<p>Layout Blueprint</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/customization.html" class="nav-link">
<i class="nav-icon bi bi-palette"></i>
<p>Customization</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/color-mode.html" class="nav-link">
<i class="nav-icon bi bi-star-half"></i>
<p>Color Mode</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/rtl.html" class="nav-link">
<i class="nav-icon bi bi-text-paragraph"></i>
<p>RTL Support</p>
</a>
</li>
<li class="nav-header">BUILDING</li>
<li class="nav-item">
<a href="../../docs/recipes.html" class="nav-link">
<i class="nav-icon bi bi-clipboard-check"></i>
<p>Recipes</p>
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">
<i class="nav-icon bi bi-ui-checks-grid"></i>
<p>
Components
<i class="nav-arrow bi bi-chevron-right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="../../docs/components/main-header.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Main Header</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/components/main-sidebar.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Main Sidebar</p>
</a>
</li>
</ul>
</li>
<li class="nav-item menu-open">
<a href="#" class="nav-link active">
<i class="nav-icon bi bi-filetype-js"></i>
<p>
JavaScript Plugins
<i class="nav-arrow bi bi-chevron-right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="../../docs/javascript/plugins-overview.html" class="nav-link active">
<i class="nav-icon bi bi-circle"></i>
<p>Overview</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/layout.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Layout</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/pushmenu.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>PushMenu</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/treeview.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Treeview</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/card-widget.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Card Widget</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/direct-chat.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Direct Chat</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/fullscreen.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Fullscreen</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/javascript/accessibility.html" class="nav-link">
<i class="nav-icon bi bi-circle"></i>
<p>Accessibility</p>
</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="../../docs/integrations.html" class="nav-link">
<i class="nav-icon bi bi-puzzle"></i>
<p>Integrations</p>
</a>
</li>
<li class="nav-header">SHIPPING</li>
<li class="nav-item">
<a href="../../docs/migration.html" class="nav-link">
<i class="nav-icon bi bi-arrow-up-right-square"></i>
<p>Migration from v3</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/deployment.html" class="nav-link">
<i class="nav-icon bi bi-cloud-upload"></i>
<p>Deployment</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/browser-support.html" class="nav-link">
<i class="nav-icon bi bi-browser-chrome"></i>
<p>Browser Support</p>
</a>
</li>
<li class="nav-header">RESOURCES</li>
<li class="nav-item">
<a href="../../docs/faq.html" class="nav-link">
<i class="nav-icon bi bi-question-circle"></i>
<p>FAQ</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/how-to-contribute.html" class="nav-link">
<i class="nav-icon bi bi-people"></i>
<p>Contributing</p>
</a>
</li>
<li class="nav-item">
<a href="../../docs/license.html" class="nav-link">
<i class="nav-icon bi bi-patch-check"></i>
<p>License</p>
</a>
</li>
<li class="nav-item">
<a
href="https://github.com/ColorlibHQ/AdminLTE"
target="_blank"
rel="noopener"
class="nav-link"
>
<i class="nav-icon bi bi-github"></i>
<p>
GitHub
<i class="bi bi-box-arrow-up-right ms-1" aria-hidden="true"></i>
</p>
</a>
</li>
</ul>
<!--end::Sidebar Menu-->
</nav>
</div>
<!--end::Sidebar Wrapper-->
</aside>
<!--end::Sidebar (docs mode)-->
<main class="app-main">
<div class="app-content-header">
<div class="container-fluid">
<div class="row">
<div class="col-sm-6">
<h3 class="mb-0">JavaScript Plugins Overview</h3>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-end">
<li class="breadcrumb-item"><a href="#">Docs</a></li>
<li class="breadcrumb-item"><a href="#">JavaScript</a></li>
<li class="breadcrumb-item active" aria-current="page">Overview</li>
</ol>
</div>
</div>
</div>
</div>
<div class="app-content">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<p>
AdminLTE ships seven JavaScript plugins as a single bundle
(<code>adminlte.js</code>). Each one is exported from the package root, can be
triggered via <code>data-lte-*</code> attributes for declarative use, and
exposes a programmatic API for code-driven control.
</p>
<h5 id="at-a-glance">At a glance</h5>
<table>
<thead>
<tr>
<th>Plugin</th>
<th>Data API</th>
<th>Programmatic</th>
<th>Documentation</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>PushMenu</strong></td>
<td><code>data-lte-toggle="sidebar"</code></td>
<td>
<code>.toggle()</code> / <code>.expand()</code> /
<code>.collapse()</code>
</td>
<td><a href="pushmenu.html">Reference</a></td>
</tr>
<tr>
<td><strong>Treeview</strong></td>
<td><code>data-lte-toggle="treeview"</code> on parent menu</td>
<td>
<code>.toggle()</code> / <code>.open()</code> / <code>.close()</code>
</td>
<td><a href="treeview.html">Reference</a></td>
</tr>
<tr>
<td><strong>CardWidget</strong></td>
<td>
<code>data-lte-toggle="card-collapse"</code>,
<code>card-remove</code>, <code>card-maximize</code>
</td>
<td>
<code>.toggle()</code> / <code>.collapse()</code> /
<code>.expand()</code> / <code>.remove()</code> /
<code>.maximize()</code> / <code>.minimize()</code> /
<code>.toggleMaximize()</code>
</td>
<td><a href="card-widget.html">Reference</a></td>
</tr>
<tr>
<td><strong>DirectChat</strong></td>
<td><code>data-lte-toggle="chat-pane"</code></td>
<td><code>.toggle()</code></td>
<td><a href="direct-chat.html">Reference</a></td>
</tr>
<tr>
<td><strong>FullScreen</strong></td>
<td><code>data-lte-toggle="fullscreen"</code></td>
<td>
<code>.toggleFullScreen()</code> / <code>.inFullScreen()</code> /
<code>.outFullscreen()</code>
</td>
<td><a href="fullscreen.html">Reference</a></td>
</tr>
<tr>
<td><strong>Layout</strong></td>
<td>(auto-applied to <code><body></code>)</td>
<td><code>.holdTransition(time)</code></td>
<td><a href="layout.html">Reference</a></td>
</tr>
<tr>
<td><strong>AccessibilityManager</strong></td>
<td>(helper function: <code>initAccessibility()</code>)</td>
<td>
<code>.announce()</code> / <code>.focusElement()</code> /
<code>.trapFocus()</code> / <code>.addLandmarks()</code>
</td>
<td><a href="accessibility.html">Reference</a></td>
</tr>
</tbody>
</table>
<h5 id="two-ways-to-use-them">Two ways to use them</h5>
<h6 id="1-data-api-declarative">1. Data API (declarative)</h6>
<p>
For most pages, the data API is enough — no JavaScript code required. Drop the
right <code>data-lte-*</code> attribute on the trigger element and the bundle
wires it up on page load:
</p>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="html"
><code><span class="line"><span style="color:#6A9955"><!-- Sidebar toggle --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"sidebar"</span><span style="color:#808080">></span><span style="color:#D4D4D4">☰</span><span style="color:#808080"></</span><span style="color:#569CD6">button</span><span style="color:#808080">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955"><!-- Card collapse / remove / maximize --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card"</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card-header"</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">h3</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card-title"</span><span style="color:#808080">></span><span style="color:#D4D4D4">Title</span><span style="color:#808080"></</span><span style="color:#569CD6">h3</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card-tools"</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">button</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"btn btn-tool"</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card-collapse"</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> data-lte-icon</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"expand"</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"bi bi-dash-lg"</span><span style="color:#808080">></</span><span style="color:#569CD6">i</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">i</span><span style="color:#9CDCFE"> data-lte-icon</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"collapse"</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"bi bi-plus-lg"</span><span style="color:#808080">></</span><span style="color:#569CD6">i</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> </</span><span style="color:#569CD6">button</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> </</span><span style="color:#569CD6">div</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> </</span><span style="color:#569CD6">div</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"> <</span><span style="color:#569CD6">div</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"card-body"</span><span style="color:#808080">></span><span style="color:#D4D4D4">…</span><span style="color:#808080"></</span><span style="color:#569CD6">div</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#808080"></</span><span style="color:#569CD6">div</span><span style="color:#808080">></span></span></code></pre>
<p>
The bundle attaches all data-API listeners on <code>DOMContentLoaded</code>.
Dynamically-injected elements still work for the
<a href="pushmenu.html">PushMenu</a>,
<a href="card-widget.html">CardWidget</a>, and
<a href="treeview.html">Treeview</a> plugins, which use event delegation.
</p>
<h6 id="2-programmatic-imperative">2. Programmatic (imperative)</h6>
<p>
When you need to control a plugin from your own code — eg. open the sidebar
after a successful login, or expand a card on a route change — instantiate the
class directly:
</p>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="js"
><code><span class="line"><span style="color:#6A9955">// ESM (bundler import)</span></span>
<span class="line"><span style="color:#C586C0">import</span><span style="color:#D4D4D4"> { </span><span style="color:#9CDCFE">PushMenu</span><span style="color:#D4D4D4">, </span><span style="color:#9CDCFE">CardWidget</span><span style="color:#D4D4D4">, </span><span style="color:#9CDCFE">Treeview</span><span style="color:#D4D4D4"> } </span><span style="color:#C586C0">from</span><span style="color:#CE9178"> "admin-lte"</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955">// Sidebar</span></span>
<span class="line"><span style="color:#569CD6">new</span><span style="color:#DCDCAA"> PushMenu</span><span style="color:#D4D4D4">(</span><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">body</span><span style="color:#D4D4D4">, {}).</span><span style="color:#DCDCAA">expand</span><span style="color:#D4D4D4">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955">// Card maximize</span></span>
<span class="line"><span style="color:#569CD6">const</span><span style="color:#4FC1FF"> card</span><span style="color:#D4D4D4"> = </span><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">querySelector</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">"#chart-card"</span><span style="color:#D4D4D4">)</span></span>
<span class="line"><span style="color:#569CD6">new</span><span style="color:#DCDCAA"> CardWidget</span><span style="color:#D4D4D4">(</span><span style="color:#9CDCFE">card</span><span style="color:#D4D4D4">, {}).</span><span style="color:#DCDCAA">maximize</span><span style="color:#D4D4D4">()</span></span></code></pre>
<p>Or use the globals (UMD bundle, no build step):</p>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="html"
><code><span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">script</span><span style="color:#808080">></span></span>
<span class="line"><span style="color:#6A9955"> // The bundle assigns to window.adminlte</span></span>
<span class="line"><span style="color:#569CD6"> new</span><span style="color:#9CDCFE"> adminlte</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">PushMenu</span><span style="color:#D4D4D4">(</span><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">body</span><span style="color:#D4D4D4">, {}).</span><span style="color:#DCDCAA">expand</span><span style="color:#D4D4D4">()</span></span>
<span class="line"><span style="color:#808080"></</span><span style="color:#569CD6">script</span><span style="color:#808080">></span></span></code></pre>
<h5 id="listening-to-plugin-events">Listening to plugin events</h5>
<p>
Every plugin fires a <code>CustomEvent</code> or <code>Event</code> on the
element it operates on. Listen for these to coordinate with your own code:
</p>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="js"
><code><span class="line"><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">addEventListener</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">"expanded.lte.card-widget"</span><span style="color:#D4D4D4">, (</span><span style="color:#9CDCFE">e</span><span style="color:#D4D4D4">) </span><span style="color:#569CD6">=></span><span style="color:#D4D4D4"> {</span></span>
<span class="line"><span style="color:#9CDCFE"> console</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">log</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">"Card expanded:"</span><span style="color:#D4D4D4">, </span><span style="color:#9CDCFE">e</span><span style="color:#D4D4D4">.</span><span style="color:#9CDCFE">target</span><span style="color:#D4D4D4">)</span></span>
<span class="line"><span style="color:#D4D4D4">})</span></span>
<span class="line"></span>
<span class="line"><span style="color:#9CDCFE">document</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">addEventListener</span><span style="color:#D4D4D4">(</span><span style="color:#CE9178">"open.lte.push-menu"</span><span style="color:#D4D4D4">, () </span><span style="color:#569CD6">=></span><span style="color:#D4D4D4"> {</span></span>
<span class="line"><span style="color:#6A9955"> // user opened the sidebar — eg. analytics call</span></span>
<span class="line"><span style="color:#D4D4D4">})</span></span></code></pre>
<h6 id="event-name-reference">Event name reference</h6>
<table>
<thead>
<tr>
<th>Plugin</th>
<th>Event</th>
<th>Fired when</th>
</tr>
</thead>
<tbody>
<tr>
<td>PushMenu</td>
<td><code>open.lte.push-menu</code></td>
<td>Sidebar expanded</td>
</tr>
<tr>
<td>PushMenu</td>
<td><code>collapse.lte.push-menu</code></td>
<td>Sidebar collapsed</td>
</tr>
<tr>
<td>Treeview</td>
<td><code>expanded.lte.treeview</code></td>
<td>Submenu opened</td>
</tr>
<tr>
<td>Treeview</td>
<td><code>collapsed.lte.treeview</code></td>
<td>Submenu closed</td>
</tr>
<tr>
<td>Treeview</td>
<td><code>load.lte.treeview</code></td>
<td>Pre-opened submenu detected on page load</td>
</tr>
<tr>
<td>CardWidget</td>
<td><code>expanded.lte.card-widget</code></td>
<td>Card expanded</td>
</tr>
<tr>
<td>CardWidget</td>
<td><code>collapsed.lte.card-widget</code></td>
<td>Card collapsed</td>
</tr>
<tr>
<td>CardWidget</td>
<td><code>remove.lte.card-widget</code></td>
<td>Card removed</td>
</tr>
<tr>
<td>CardWidget</td>
<td><code>maximized.lte.card-widget</code></td>
<td>Card maximized</td>
</tr>
<tr>
<td>CardWidget</td>
<td><code>minimized.lte.card-widget</code></td>
<td>Card minimized</td>
</tr>
<tr>
<td>DirectChat</td>
<td><code>expanded.lte.direct-chat</code></td>
<td>Contacts pane opened</td>
</tr>
<tr>
<td>DirectChat</td>
<td><code>collapsed.lte.direct-chat</code></td>
<td>Contacts pane closed</td>
</tr>
<tr>
<td>FullScreen</td>
<td><code>maximized.lte.fullscreen</code></td>
<td>Entered fullscreen</td>
</tr>
<tr>
<td>FullScreen</td>
<td><code>minimized.lte.fullscreen</code></td>
<td>Exited fullscreen</td>
</tr>
</tbody>
</table>
<p>
All events bubble. Attach listeners to <code>document</code> or
<code>document.body</code> for global hooks, or to a specific card / sidebar
element for scoped listeners.
</p>
<h5 id="configuring-via-data-attributes">Configuring via data attributes</h5>
<p>
Some plugins read config from <code>data-*</code> attributes on their target
element:
</p>
<pre
class="astro-code dark-plus"
style="background-color: #1e1e1e; color: #d4d4d4; overflow-x: auto"
tabindex="0"
data-language="html"
><code><span class="line"><span style="color:#6A9955"><!-- Treeview — non-accordion (multiple submenus can be open at once) --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">ul</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"nav sidebar-menu"</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"treeview"</span><span style="color:#9CDCFE"> data-accordion</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"false"</span><span style="color:#808080">></span><span style="color:#D4D4D4">…</span><span style="color:#808080"></</span><span style="color:#569CD6">ul</span><span style="color:#808080">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955"><!-- Treeview — custom animation speed --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">ul</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"nav sidebar-menu"</span><span style="color:#9CDCFE"> data-lte-toggle</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"treeview"</span><span style="color:#9CDCFE"> data-animation-speed</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"500"</span><span style="color:#808080">></span><span style="color:#D4D4D4">…</span><span style="color:#808080"></</span><span style="color:#569CD6">ul</span><span style="color:#808080">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955"><!-- Sidebar — opt into localStorage persistence (default: off) --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">aside</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"app-sidebar"</span><span style="color:#9CDCFE"> data-enable-persistence</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"true"</span><span style="color:#808080">></span><span style="color:#D4D4D4">…</span><span style="color:#808080"></</span><span style="color:#569CD6">aside</span><span style="color:#808080">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955"><!-- Sidebar — override the mobile breakpoint --></span></span>
<span class="line"><span style="color:#808080"><</span><span style="color:#569CD6">aside</span><span style="color:#9CDCFE"> class</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"app-sidebar"</span><span style="color:#9CDCFE"> data-sidebar-breakpoint</span><span style="color:#D4D4D4">=</span><span style="color:#CE9178">"768"</span><span style="color:#808080">></span><span style="color:#D4D4D4">…</span><span style="color:#808080"></</span><span style="color:#569CD6">aside</span><span style="color:#808080">></span></span></code></pre>
<p>Each plugin’s reference page documents which attributes it supports.</p>
<h5 id="css-classes-the-plugins-manage">CSS classes the plugins manage</h5>
<p>
The plugins toggle a small set of CSS classes that you can also style or react
to:
</p>
<table>
<thead>
<tr>
<th>Class</th>
<th>Set by</th>
<th>Where</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>sidebar-collapse</code></td>
<td>PushMenu</td>
<td><code><body></code></td>
<td>Sidebar collapsed (desktop mini state, or mobile-closed)</td>
</tr>
<tr>
<td><code>sidebar-open</code></td>
<td>PushMenu</td>
<td><code><body></code></td>
<td>Mobile sidebar explicitly opened by user</td>
</tr>
<tr>
<td><code>sidebar-mini</code></td>
<td>PushMenu</td>
<td><code><