syncfusion-javascript-stepper
Implementing Syncfusion TypeScript Stepper Control
Complete Table of Contents
1. Getting Started
2. API Reference
- Complete API Reference
- Stepper Properties (15 properties)
- Stepper Methods (12 methods)
- Stepper Events (5 events)
- Step Properties (8 properties)
- Enums & Types (4 enums)
- Animation Settings (3 properties)
- Event Arguments (4 argument interfaces)
3. Core Concepts
-
- Adding & Managing Steps
- Step Properties (label, iconCss, text, disabled, optional, status, isValid)
- Disabling Steps
- Setting Read-Only Mode
- Setting Active Step
- Icon-Only, Label-Only, and Hybrid Steps
- Validation States
-
- Default Type (Icons + Labels)
- Label-Only Type
- Indicator-Only Type
- Label Positioning (Top, Bottom, Start, End)
- Type Comparison & Selection
- Switching Types Dynamically
-
- Horizontal Orientation (Default)
- Vertical Orientation
- Responsive Behavior
- Dynamic Layout Switching
- Layout-Specific Styling
4. Advanced Features
-
- All 5 Events:
- created
- beforeStepRender
- stepClick
- stepChanging (with cancellation)
- stepChanged
- Event Arguments & Properties
- Event Handling Patterns
- Validation with Events
- User Interaction Detection
- All 5 Events:
-
- Custom Step Templates
- Template Context Variables
- Template Data Binding
- Tooltip Customization
- Animation Configuration
- Animation Duration & Delay
- Animation Enable/Disable
-
- Step Validation (isValid states)
- Linear Flow Enforcement
- Preventing Invalid Transitions
- Localization (L10n, Locale)
- Right-to-Left (RTL) Support
- Multi-Language Support
- Accessibility (ARIA, Keyboard Navigation)
5. Utilities & Patterns
- Troubleshooting & Best Practices
- Common Setup Issues
- Event Handling Best Practices
- Form Validation Patterns
- CSS Customization
- Theme Integration
- Performance Optimization
- Edge Cases & Solutions
When to Use This Skill
Use the Syncfusion TypeScript Stepper skill when you need to:
- Display a multi-step process or wizard workflow
- Create a progress indicator showing completion status
- Build a form wizard with validation between steps
- Show step-by-step guided experiences (checkout, onboarding, setup)
- Add step navigation with back/forward controls
- Implement linear workflow validation
- Create checkpoint-based processes with tracking
- Enable step customization with icons, labels, and templates
- Handle step events and user interactions
- Support multiple orientations (horizontal/vertical layouts)
Stepper Overview
The Stepper is a navigation control that displays a series of logical steps to guide users through a workflow. Each step can have:
- Indicators (numbers, icons, or shapes)
- Labels (text descriptions)
- Status tracking (active, completed, disabled)
- Event handlers for step transitions
- Custom templates for rich content
- Flexible styling with themes
Key Characteristics
| Aspect | Description |
|---|---|
| Component | Navigation control for multi-step workflows |
| Steps | Array of step objects with properties |
| Indicators | Numbered or icon-based step markers |
| Orientations | Horizontal (default) or Vertical layouts |
| Types | Default (icon+label), Label-only, Indicator-only |
| Events | created, beforeStepRender, stepClick, stepChanging, stepChanged |
| Methods | 12 control methods (nextStep, previousStep, reset, etc.) |
| Properties | 15 stepper + 8 step properties |
| Customization | Templates, animations, themes, CSS styling |
Documentation and Navigation Guide
📚 Learning Path (Recommended Order)
-
Start Here: Getting Started
- Installation and npm package setup
- Dependencies (ej2-navigations, ej2-base, ej2-popups)
- Development environment configuration
- Basic stepper initialization with code examples
- CSS imports and theme setup
-
Fundamentals: Steps Configuration
- Adding steps to the stepper
- Step properties (iconCss, text, label, cssClass, disabled, status)
- Using StepModel interface for type safety
- Step arrays and dynamic step updates
- Accessing and modifying steps at runtime
-
Data Organization: Step Types
- Default type: icons with labels
- Label-only type: text descriptions only
- Indicator-only type: numbers or icons only
- Label positions (top, bottom, start, end)
- Choosing the right type for your use case
-
UI Layout: Orientations and Layout
- Horizontal orientation (default, side-by-side)
- Vertical orientation (stacked, one above another)
- Responsive behavior and switching
- Layout-specific styling
-
Interactivity: Events and Interaction
- stepChanged: when step successfully changes
- stepChanging: before step change (can cancel)
- stepClick: user clicked a step
- beforeStepRender: before rendering each step
- created: initialization complete
- Event arguments and patterns
-
Enhancements: Templates and Animation
- Custom HTML templates for step content
- Template data binding
- Animation settings and timing
- Animation duration and delay
- Tooltip customization
-
Production: Validation and Globalization
- Form validation patterns
- Linear workflow enforcement
- Multi-language support
- Right-to-left (RTL) support
- Accessibility compliance
-
Troubleshooting: Best Practices
- Common issues and solutions
- Performance optimization
- CSS customization
- Theme integration
- Edge cases
🔍 Quick Navigation by Topic
By Feature:
- 📄 Steps Configuration - Working with steps
- 📄 Step Types - Display options
- 📄 Orientations - Layout options
- 📄 Events & Interaction - Handling user actions
By Use Case:
- 🧩 Form Wizard: See Events & Interaction and Validation
- 🛒 Checkout Flow: See Steps Configuration and Events
- 🎨 Custom Styling: See Templates & Animation and Best Practices
- 🌍 Multi-Language: See Validation & Globalization
By API Lookup:
- 🔗 Complete API Reference - All properties, methods, events, and enums
Quick Start Example
Here's a minimal stepper setup to get started immediately:
import { Stepper } from '@syncfusion/ej2-navigations';
// Create a basic stepper with 4 steps
let stepper: Stepper = new Stepper({
steps: [
{ label: 'Cart' },
{ label: 'Shipping' },
{ label: 'Payment' },
{ label: 'Confirmation' }
]
});
// Render to DOM
stepper.appendTo('#stepper');
<nav id="stepper"></nav>
Common Patterns
Pattern 1: Icon + Label Steps (Default)
import { Stepper, StepModel } from '@syncfusion/ej2-navigations';
let steps: StepModel[] = [
{ iconCss: 'sf-icon-cart', label: 'Cart' },
{ iconCss: 'sf-icon-truck', label: 'Shipping' },
{ iconCss: 'sf-icon-payment', label: 'Payment' }
];
let stepper: Stepper = new Stepper({ steps: steps });
stepper.appendTo('#stepper');
Pattern 2: Vertical Workflow with Events
import { Stepper } from '@syncfusion/ej2-navigations';
let stepper: Stepper = new Stepper({
steps: [{}, {}, {}, {}],
orientation: 'Vertical',
stepChanged: (args) => console.log('Changed to step:', args.activeStep),
stepChanging: (args) => {
if (!validateCurrentStep()) args.cancel = true;
}
});
stepper.appendTo('#stepper');
Pattern 3: Form Wizard with Validation
import { Stepper, StepperChangingEventArgs } from '@syncfusion/ej2-navigations';
let stepper: Stepper = new Stepper({
steps: [
{ label: 'Personal Info' },
{ label: 'Address' },
{ label: 'Review' }
],
linear: true, // Must complete steps in order
stepChanging: (args: StepperChangingEventArgs) => {
// Validate current step before allowing transition
if (!isCurrentStepValid()) {
args.cancel = true; // Prevent step change
}
}
});
stepper.appendTo('#stepper');
Pattern 4: Dynamic Step Management
import { Stepper } from '@syncfusion/ej2-navigations';
let stepper: Stepper = new Stepper({
steps: [{}, {}, {}, {}],
activeStep: 0
});
stepper.appendTo('#stepper');
// Navigate with methods
stepper.nextStep(); // Move to next step
stepper.previousStep(); // Move to previous step
stepper.reset(); // Return to first step
// Update properties
stepper.activeStep = 2;
stepper.dataBind(); // Apply changes
Key Properties at a Glance
Stepper Control Properties
| Property | Type | Default | Description |
|---|---|---|---|
steps |
StepModel[] | [] | Array of step definitions |
activeStep |
number | 0 | Currently active step (zero-based) |
stepType |
string | 'Default' | Type: Default, Label, or Indicator |
orientation |
string | 'Horizontal' | Layout: Horizontal or Vertical |
labelPosition |
string | 'Bottom' | Label placement: Top, Bottom, Start, End |
linear |
boolean | false | Enforce sequential navigation |
readOnly |
boolean | false | Disable all interactions |
showTooltip |
boolean | false | Show tooltips on steps |
animation |
object | {...} | Animation settings (enable, duration, delay) |
locale |
string | 'en-US' | Language/region code |
enableRtl |
boolean | false | Right-to-left rendering |
enablePersistence |
boolean | false | Save state in localStorage |
Step Properties
| Property | Type | Default | Description |
|---|---|---|---|
label |
string | '' | Step label text |
text |
string | '' | Step description |
iconCss |
string | '' | Step icon CSS class |
status |
string | 'NotStarted' | NotStarted, InProgress, Completed |
isValid |
boolean | null | null | Validation state (true/false/null) |
disabled |
boolean | false | Disable this step |
optional |
boolean | false | Step is optional |
cssClass |
string | '' | Custom CSS class |
Common Use Cases
Checkout Wizard: Multi-step purchase flow with cart, shipping, payment, and confirmation steps.
Form Wizard: Split long forms across multiple steps with validation at each stage.
Onboarding Flow: Guide new users through setup steps with progress indication.
Task Workflow: Track progress through a series of tasks or milestones.
Process Tracker: Display current position in a documented process flow.
Multi-Page Survey: Distribute survey questions across steps with progress tracking.
API Reference Quick Links
- Complete API Documentation
- Stepper Properties (15 total)
- Stepper Methods (12 total)
- Stepper Events (5 total)
- Step Properties (8 total)
- Enums (4 types)
- Animation Settings
- Event Arguments
🚀 Ready to implement? Start with Getting Started to set up your first stepper, or jump to the API Reference for complete documentation.
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