Pushmenu Plugin

The PushMenu plugin toggles the sidebar between expanded and collapsed states. It handles responsive behavior, optional localStorage persistence, and overlay management on mobile.

Usage

This plugin is activated via data attributes on the sidebar element and toggle buttons.

Data API

Add data-lte-toggle="sidebar" to any button or link to toggle the sidebar.

<a href="#" data-lte-toggle="sidebar">Toggle Sidebar</a>
Configuration

Configure the sidebar via data attributes on the .app-sidebar element:

AttributeDefaultDescription
data-sidebar-breakpoint991.98Screen width (px) below which the sidebar is considered mobile.
data-enable-persistencefalseSave sidebar state to localStorage across page loads.
<aside class="app-sidebar" data-enable-persistence="true" data-sidebar-breakpoint="768">
  <!-- sidebar content -->
</aside>
Responsive Behavior
  • Desktop (above breakpoint): Sidebar is expanded by default. Collapse is remembered if persistence is enabled.
  • Mobile (at or below breakpoint): Sidebar is collapsed by default. An overlay appears when the sidebar is open, clicking it collapses the sidebar.
CSS Classes
ClassApplied toDescription
sidebar-collapse<body>Sidebar is collapsed.
sidebar-open<body>Sidebar is explicitly open on mobile.
sidebar-mini<body>Enables mini sidebar mode (icons only when collapsed).
sidebar-without-hover<body>Prevents collapsed sidebar from expanding on hover.
sidebar-expand-{breakpoint}<body>Sets the responsive breakpoint (sm, md, lg, xl, xxl).
Events
EventDescription
open.lte.push-menuFired when the sidebar is expanded.
collapse.lte.push-menuFired when the sidebar is collapsed.

Both events bubble. Listen on document for a global hook:

document.addEventListener("open.lte.push-menu", () => {
  console.log("Sidebar opened")
})
Programmatic API

Import the class and instantiate it on any element (typically the sidebar toggle button or document.body):

import { PushMenu } from "admin-lte"

const sidebar = new PushMenu(document.querySelector('[data-lte-toggle="sidebar"]'), {
  sidebarBreakpoint: 991.98,
  enablePersistence: false
})
Methods
MethodReturnsDescription
toggle()voidExpands or collapses the sidebar based on current state. Persists state if enablePersistence is true.
expand()voidExpands the sidebar. Fires open.lte.push-menu.
collapse()voidCollapses the sidebar. Fires collapse.lte.push-menu.
isCollapsed()booleantrue if <body> has sidebar-collapse class.
isExplicitlyOpen()booleantrue if <body> has sidebar-open (mobile, user opened it).
isMiniMode()booleantrue if <body> has sidebar-mini.
isMobileSize()booleantrue if window.innerWidth ≤ sidebarBreakpoint.
saveSidebarState(state)voidManually save state to localStorage ("sidebar-open" or "sidebar-collapse").
loadSidebarState()voidRead state from localStorage and apply it.
clearSidebarState()voidRemove saved state from localStorage.
updateStateByResponsiveLogic()voidRecompute correct state based on viewport size (collapse on mobile, expand on desktop unless mini). Called automatically on resize.
Storage key

When enablePersistence is enabled, the plugin reads/writes localStorage.getItem("lte.sidebar.state"). The stored value is one of:

  • "sidebar-open" — user wants the sidebar expanded
  • "sidebar-collapse" — user wants it collapsed
Example
Toggle Sidebar