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:

Attribute Default Description
data-sidebar-breakpoint 992 Screen width (px) below which the sidebar is considered mobile.
data-enable-persistence false Save 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
Class Applied to Description
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
Event Description
open.lte.push-menu Fired when the sidebar is expanded.
collapse.lte.push-menu Fired 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: 992,
  enablePersistence: false
})
Methods
Method Returns Description
toggle() void Expands or collapses the sidebar based on current state. Persists state if enablePersistence is true.
expand() void Expands the sidebar. Fires open.lte.push-menu.
collapse() void Collapses the sidebar. Fires collapse.lte.push-menu.
isCollapsed() boolean true if <body> has sidebar-collapse class.
isExplicitlyOpen() boolean true if <body> has sidebar-open (mobile, user opened it).
isMiniMode() boolean true if <body> has sidebar-mini.
isMobileSize() boolean true if window.innerWidth ≤ sidebarBreakpoint.
saveSidebarState(state) void Manually save state to localStorage ("sidebar-open" or "sidebar-collapse").
loadSidebarState() void Read state from localStorage and apply it.
clearSidebarState() void Remove saved state from localStorage.
updateStateByResponsiveLogic() void Recompute 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