syncfusion-javascript-sidebar
Syncfusion TypeScript Sidebar
The Sidebar is an expandable and collapsible navigation component that acts as a side container alongside main content. It's ideal for building responsive navigation menus, dockable panels, and mobile-friendly layouts in TypeScript applications using Syncfusion Essential JS 2.
Key Features
- Four Expand Types: Over, Push, Slide, and Auto for flexible content interaction
- Docking Support: Reserve space for docked icons while maintaining full sidebar functionality
- Animations & Gestures: Smooth transitions with touch swipe and mobile gesture support
- Responsive Design: Auto-adjust behavior between desktop (Push) and mobile (Over) modes
- Custom Targeting: Position sidebar in any HTML container with implicit or explicit targeting
- Content Integration: Support for list views, tree views, and custom HTML content
Navigation Guide
Read the appropriate reference file based on your task:
Getting Started
📄 Read: references/getting-started.md (~150 lines)
- Package installation and dependencies
- Project setup with webpack
- HTML structure and initialization
- CSS imports and configuration
- Running your first sidebar
Target Property Behavior (Critical)
Two distinct modes for controlling which element the sidebar affects:
Implicit Targeting (Recommended - Default):
- Sidebar automatically targets the next sibling
<div> - No wrapper element needed
- Simple, clean code - use for most applications
Explicit Targeting (Advanced):
- Use
[target]="'#selector'"property - Requires inner
<div>wrapper inside target container for CSS transforms - Use when excluding elements (header, footer) or need fine-grained control
📄 Read: references/positioning-and-target.md (~160 lines)
- Target selectors and HTML structure
- Implicit vs explicit targeting patterns
- Fixed positioning and layout considerations
- Common target configuration scenarios
Sidebar Types and Positions
📄 Read: references/sidebar-types-and-positions.md (~180 lines, with TOC)
- Four expand types explained: Over, Push, Slide, Auto
- Position options: Left or Right
- Type comparison table and when to use each
- Type switching and responsive behavior
Open and Close Methods & Lifecycle Events
📄 Read: references/open-and-close.md (~250 lines)
show(),hide(),toggle()methods- State events:
open,close,changewith EventArgs properties - Lifecycle events:
created,destroyed - Managing sidebar state programmatically
- Preventing default behavior with
args.cancel - User interaction detection with
args.isInteracted
Auto-Close and Responsive Behavior
📄 Read: references/auto-close-responsive.md (~140 lines)
mediaQueryproperty for responsive breakpoints- Auto-close on document click behavior
- Close button implementation
- Mobile vs desktop viewport handling
Docking Sidebar
📄 Read: references/docking-sidebar.md (~170 lines, with TOC)
enableDockanddockSizeproperties- Showing icons only in docked state
- CSS for text visibility control
- Docked state use cases
Animations and Gestures
📄 Read: references/animations-and-gestures.md (~200 lines, with TOC)
animateproperty and timing configuration- Gesture support: swipe and touch interactions
- Mobile interaction patterns
- Performance optimization for animations
Content Integration
📄 Read: references/content-integration.md (~180 lines, with TOC)
- Sidebar with list view content
- Sidebar with tree view content
- Multiple sidebar instances
- Multiple sidebars in same position
- Custom HTML content patterns
Styling and Theming
📄 Read: references/styling-and-theming.md (~200 lines, with TOC)
- CSS classes and selectors (.e-sidebar, .e-open, .e-close, .e-dock)
- Customizing sidebars by type and position
- Backdrop styling and customization
- Responsive design and mobile styling
Troubleshooting
📄 Read: references/troubleshooting.md (~120 lines)
- Common issues and solutions
- Z-index and stacking context problems
- Performance optimization tips
- Gesture conflicts and gestures not working
- Mobile responsiveness debugging
API Methods and Properties Reference
📄 Read: references/api-methods-properties.md (~580 lines, comprehensive API coverage)
- All sidebar properties with defaults and types:
type,position,width,target,showBackdrop,animate,closeOnDocumentClick,enableGestures,enableDock,dockSize,mediaQuery,zIndex,isOpen,enableRtl,enablePersistence - All methods with working examples:
show(),hide(),toggle(),getRootElement(),destroy(),refresh(),dataBind() - Event listener management:
addEventListener(),removeEventListener() - Responsive configuration examples
- Persistence and state management
- RTL and internationalization support
Quick Start Example
Implicit Targeting (Recommended)
import { Sidebar } from '@syncfusion/ej2-navigations';
// Create sidebar - automatically targets next sibling div
let sidebar: Sidebar = new Sidebar({
type: 'Push',
width: '280px'
});
sidebar.appendTo('#sidebar');
// Toggle on button click
document.querySelector('#toggle')?.addEventListener('click', () => {
sidebar.toggle();
});
<!-- HTML Structure - sidebar targets main-content automatically -->
<aside id="sidebar">
<div class="title">Navigation Menu</div>
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</aside>
<!-- Next sibling - automatically becomes target -->
<div id="main-content">
<button id="toggle">Toggle Sidebar</button>
<div class="content">Main content here</div>
</div>
Explicit Targeting (With Inner Wrapper)
let sidebar: Sidebar = new Sidebar({
type: 'Push',
target: '#content-area', // Explicit target selector
width: '280px'
});
sidebar.appendTo('#sidebar');
<!-- Explicit target requires inner wrapper div -->
<aside id="sidebar">
<div class="title">Navigation</div>
</aside>
<div id="content-area"> <!-- Explicit target -->
<div> <!-- REQUIRED: Inner wrapper -->
<button id="toggle">Toggle</button>
<div class="content">Main content</div>
</div>
</div>
Common Patterns
Pattern 1: Mobile-Responsive Sidebar
let sidebar: Sidebar = new Sidebar({
type: 'Auto', // Over on mobile, Push on desktop
mediaQuery: window.matchMedia('(max-width: 768px)'),
width: '280px'
});
sidebar.appendTo('#sidebar');
Pattern 2: Docked Icon Sidebar
let sidebar: Sidebar = new Sidebar({
enableDock: true,
dockSize: '72px',
width: '220px'
});
sidebar.appendTo('#sidebar');
// CSS for docked state
// .e-dock.e-close span.e-text { display: none; }
// .e-dock.e-open span.e-text { display: inline-block; }
Pattern 3: Toggle with Events
let sidebar: Sidebar = new Sidebar({
open: (e) => console.log('Sidebar opened'),
close: (e) => console.log('Sidebar closed'),
showBackdrop: true
});
sidebar.appendTo('#sidebar');
// Programmatic control
document.querySelector('#open')?.addEventListener('click', () => sidebar.show());
document.querySelector('#close')?.addEventListener('click', () => sidebar.hide());
document.querySelector('#toggle')?.addEventListener('click', () => sidebar.toggle());
Key Properties Reference
| Property | Type | Default | Purpose |
|---|---|---|---|
type |
'Over' | 'Push' | 'Slide' | 'Auto' | 'Auto' | Expand behavior |
position |
'Left' | 'Right' | 'Left' | Sidebar position |
width |
string | '100%' | Sidebar width |
target |
string | null | Target element selector (explicit) |
enableDock |
boolean | false | Enable dock/collapsed state |
dockSize |
string | '52px' | Width when docked |
showBackdrop |
boolean | false | Show overlay backdrop |
animate |
boolean | true | Enable animations |
mediaQuery |
MediaQueryList | null | Responsive breakpoint |
isOpen |
boolean | false | Initial open state |
Common Use Cases
- Navigation Menu: Main app navigation with collapsible menu items
- Dockable Panel: Icon-based navigation that expands on hover/click
- Mobile Menu: Touch-friendly sidebar using gestures and Auto type
- Multi-Level Navigation: Sidebar with list or tree view hierarchy
- Admin Dashboard: Collapsible sidebar with role-based menu items
- Content Drawer: Side panel for filters, settings, or additional content
Next Steps: Choose a reference file based on your current task and read the detailed documentation. Start with "Getting Started" if this is your first time using the Sidebar component.
More from syncfusion/javascript-ui-controls-skills
syncfusion-javascript-gantt-chart
Implement Syncfusion Gantt Chart using JavaScript/TypeScript (Essential JS 2). Use this when working with ej2-gantt component for project scheduling, task dependencies, and timeline management. Covers full Gantt implementation including data binding, task scheduling, columns, resources, timeline configuration, WBS, resource view, critical path, baseline tracking, filtering, sorting, editing, and export functionality (Excel/PDF).
9syncfusion-javascript-maps
Guide to implementing Syncfusion Maps in TypeScript and JavaScript. Use this skill whenever the user needs to create interactive maps, add markers, visualize geographical data, work with map layers, apply color mapping, add annotations, configure legends, or handle map interactions and events. Works with TypeScript (module-based) and JavaScript (CDN/ES5).
8syncfusion-javascript-accumulation-chart
Implements Syncfusion JavaScript accumulation charts (Pie, Doughnut, Funnel, Pyramid) for proportional and percentage-based visualizations. Use when displaying categorical or proportional data. Covers legend and label configuration, interactivity, accessibility, and customization. Works with TypeScript (modules) and JavaScript (CDN/ES5).
8syncfusion-javascript-rich-text-editor
Implements the Syncfusion Rich Text Editor and Markdown Editor using TypeScript (ej2-richtexteditor). Supports both HTML (WYSIWYG) and Markdown modes via editorMode on a single RichTextEditor class. Use this skill for toolbar setup, image/media/table handling, inline or iframe editing, AI assistant, smart editing, import/export, and all content editor scenarios.
8syncfusion-javascript-chart
Implements Syncfusion JavaScript chart controls (Line, Area, Bar, Column, Pie, Polar, Radar, Waterfall, Stock). Use when building interactive data visualizations, dashboards, or real-time charts. Covers series and axes configuration, styling, animations, exporting, and technical indicators. Works with TypeScript (webpack/modules) and JavaScript (CDN/ES5).
8syncfusion-javascript-dropdowns
Comprehensive guide for implementing Syncfusion TypeScript dropdown components including AutoComplete, ComboBox, Mention, Dropdownlist and Multiselect. Use this when building selection interfaces, data binding, filtering, cascading dropdowns, custom templates, and accessible dropdown experiences.
7