syncfusion-javascript-ribbon
Syncfusion JavaScript Ribbon Control
Overview
The Syncfusion JavaScript Ribbon control is a hierarchical navigation component that organizes commands into:
- Tabs: Top-level categories (Home, Insert, View)
- Groups: Related command sets within tabs (Clipboard, Font, Tables)
- Collections: Organizing containers within groups
- Items: Individual controls (buttons, dropdowns, galleries, etc.)
Key Features:
- 8 built-in item types with rich configuration options
- 2 layout modes: Classic (multi-row) and Simplified (single-row)
- Advanced features: File Menu, Backstage, Contextual Tabs, Gallery items
- Keyboard navigation with customizable keytips
- Automatic responsive resizing with overflow handling
- Extensive event system for user interactions
- Module-based architecture for selective feature loading
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Installing Ribbon package
- Basic ribbon setup and initialization
- Module injection (default and selective modules)
- Creating tabs, groups, collections, and items
- CSS imports and theme configuration
- First working example with multiple tabs
Ribbon Architecture
📄 Read: references/tabs-and-groups.md
- Adding tabs with custom headers
- Defining groups with headers and icons
- Group orientation (Row vs Column layout)
- Adding collections and organizing items
- Group launcher icons (showLauncherIcon, launcherIconCss for customization)
- Collapsible groups and priority order
- Group overflow behavior
Built-in Items
📄 Read: references/built-in-items.md
- Button items (standard and toggle buttons)
- CheckBox items (labels, checked state, label position)
- DropDown items (target content, item customization, popup on demand)
- SplitButton items (primary action + dropdown menu)
- ComboBox items (data binding, filtering, templates)
- ColorPicker items (color selection with presets)
- GroupButton items (single/multiple selection)
- Comparing item types and when to use each
Gallery Items
📄 Read: references/gallery-items.md
- Gallery overview and use cases
- Organizing items into groups
- Defining item content, icons, and attributes
- Customizing gallery item appearance (cssClass)
- Disabling specific gallery items
- Setting group headers and item dimensions
- Configuring displayed item count
- Pre-selecting items (selectedItemIndex)
- Setting popup dimensions
- Custom templates for items and popup
Layouts and Display
📄 Read: references/layouts.md
- Classic layout (multi-row display)
- Simplified layout (single-row display)
- Defining item sizes (Large, Medium, Small)
- Setting allowed sizes for items
- Item orientation (Row vs Column)
- Group icons and customization
- Enabling launcher icons
- Group collapsible state and priority
- Enabling group overflow popup
- Minimized state (collapse/expand)
- Showing/hiding layout switcher
- Tab animation configurations
Note: For handling layout changes, see the ribbonLayoutSwitched event in references/events-and-api.md
File Menu
📄 Read: references/file-menu.md
- File menu visibility and configuration
- Adding menu items with icons
- Submenu on click (showItemOnClick)
- Customizing file menu header text
- Menu item templates
- File menu events (beforeOpen, select, close)
Backstage Menu
📄 Read: references/backstage.md
- Backstage overview and use cases
- Adding backstage items with content
- Footer items (isFooter property)
- Adding separators between items
- Back button customization (text, icon)
- Setting backstage target element
- Using templates for custom layouts
- Configuring width and height
- Backstage events (item click, open, close)
Contextual Tabs
📄 Read: references/contextual-tabs.md
- Contextual tabs overview
- Controlling tab visibility
- Adding contextual tabs dynamically
- Setting selected contextual tabs (isSelected)
- Use cases (table editing, image editing, chart tools)
Keytips
📄 Read: references/keytips.md
- Enabling keytip navigation
- Assigning keytips to tabs, groups, and items
- Keytip display (Alt + Windows/Command keys)
- Customizing keytip content
- Keytip navigation flow
Tooltips and Help Pane
📄 Read: references/tooltip-and-help.md
- Adding tooltip titles to items
- Setting tooltip content with descriptions
- Adding icons to tooltips
- Customizing tooltip appearance (cssClass)
- Configuring help pane template
- Help pane positioning and content
Resizing Behavior
📄 Read: references/resizing.md
- Automatic resizing in Classic mode
- Automatic resizing in Simplified mode
- Defining constant item sizes (allowedSizes)
- Setting initial item size (activeSize)
- Understanding item size transitions
Events and API
📄 Read: references/events-and-api.md
- Tab selection events (tabSelected, tabSelecting)
- Ribbon expand/collapse events
- Layout switched event (ribbonLayoutSwitched - responds to Classic/Simplified mode changes)
- Launcher icon click events
- Overflow popup events (open, close)
- Button, CheckBox, and DropDown item events
- SplitButton, ColorPicker, and Gallery events
- ComboBox filtering and selection events
- Common API methods (addTab, removeTab, addGroup, addItem, etc.)
- Advanced API methods (selectTab, getItem, getRootElement, refreshLayout, updateTab/Group/Item/Collection)
Quick Start Example
import { Ribbon, RibbonTabModel, RibbonItemType, RibbonFileMenu } from "@syncfusion/ej2-ribbon";
import { MenuItemModel } from "@syncfusion/ej2-navigations";
// Inject required modules
Ribbon.Inject(RibbonFileMenu);
// Define tabs with groups and items
let tabs: RibbonTabModel[] = [{
header: "Home",
groups: [{
header: "Clipboard",
collections: [{
items: [{
type: RibbonItemType.SplitButton,
splitButtonSettings: {
iconCss: "e-icons e-paste",
content: "Paste",
items: [
{ text: "Keep Source Format" },
{ text: "Merge Format" },
{ text: "Keep Text Only" }
]
}
}]
}, {
items: [{
type: RibbonItemType.Button,
buttonSettings: {
content: "Cut",
iconCss: "e-icons e-cut"
}
}, {
type: RibbonItemType.Button,
buttonSettings: {
content: "Copy",
iconCss: "e-icons e-copy"
}
}]
}]
}]
}, {
header: "Insert",
groups: [{
header: "Tables",
collections: [{
items: [{
type: RibbonItemType.DropDown,
dropDownSettings: {
iconCss: "e-icons e-table",
content: "Table",
items: [
{ text: "Insert Table" },
{ text: "Draw Table" }
]
}
}]
}]
}]
}];
// Define file menu items
let fileMenuItems: MenuItemModel[] = [
{ text: "New", iconCss: "e-icons e-file-new", id: "new" },
{ text: "Open", iconCss: "e-icons e-folder-open", id: "open" },
{ text: "Save", iconCss: "e-icons e-save", id: "save" }
];
// Create Ribbon instance
let ribbon: Ribbon = new Ribbon({
tabs: tabs,
fileMenu: {
menuItems: fileMenuItems,
visible: true
}
});
// Render to element
ribbon.appendTo("#ribbon");
Common Patterns
Adding a New Tab Dynamically
// Add a new tab to existing ribbon
ribbon.addTab({
header: "View",
groups: [{
header: "Views",
collections: [{
items: [{
type: RibbonItemType.Button,
buttonSettings: {
content: "Print Layout",
iconCss: "e-icons e-print"
}
}]
}]
}]
});
Switching Between Layouts
// Switch to Simplified layout
ribbon.activeLayout = "Simplified";
// Switch to Classic layout
ribbon.activeLayout = "Classic";
Handling Item Click Events
let tabs: RibbonTabModel[] = [{
header: "Home",
groups: [{
header: "Actions",
collections: [{
items: [{
type: RibbonItemType.Button,
buttonSettings: {
content: "Save",
iconCss: "e-icons e-save",
clicked: () => {
console.log("Save button clicked");
// Your save logic here
}
}
}]
}]
}]
}];
Enabling Contextual Tabs
let ribbon: Ribbon = new Ribbon({
tabs: tabs,
contextualTabs: [{
visible: true,
isSelected: true,
tabs: [{
header: "Table Design",
groups: [{
header: "Styles",
collections: [{
items: [{
type: RibbonItemType.Gallery,
gallerySettings: {
groups: [{
header: "Table Styles",
items: [
{ content: "Light" },
{ content: "Dark" }
]
}]
}
}]
}]
}]
}]
}]
});
Key Properties
tabs: Array of tab configurations (required)activeLayout: "Classic" | "Simplified" (default: "Classic")fileMenu: File menu configuration with menu itemsbackStageMenu: Backstage configuration with items and contentcontextualTabs: Array of contextual tab configurationsenableKeyTips: Enable/disable keytip navigation (default: false)isMinimized: Show only tab headers when true (default: false)hideLayoutSwitcher: Show/hide layout switcher button (default: false)helpPaneTemplate: Custom template for help pane on the rightlauncherIconCss: CSS class for group launcher iconsselectedTab: Index of currently selected tab (default: 0)
Common Use Cases
Use Case 1: Document Editor Ribbon
When user needs a full-featured document editor with text formatting:
- Create Home tab with Font, Paragraph, and Styles groups
- Use ComboBox for font family and size selection
- Add GroupButton for text formatting (bold, italic, underline)
- Include ColorPicker for text and highlight colors
- Implement Insert tab with Tables and Pictures groups
- Add File menu for New, Open, Save operations
Use Case 2: Data Grid Application
When user needs a data-focused ribbon interface:
- Create Home tab with basic operations (Add, Edit, Delete)
- Add Data tab with Import/Export, Filter, and Sort groups
- Use Gallery items for predefined data templates
- Implement View tab with display options (grid styles, zoom)
- Add contextual tabs for when rows are selected
- Use Simplified layout for compact display
Use Case 3: Design Tool with Contextual Tabs
When user needs object-specific commands:
- Create base tabs for general tools (Home, Insert, View)
- Add contextual tabs for selected objects (Image Tools, Shape Tools)
- Use Gallery for style presets and templates
- Implement backstage for file operations and settings
- Enable keytips for keyboard power users
- Add help pane with undo/redo buttons
Use Case 4: Mobile-Responsive Application
When user needs ribbon to work on smaller screens:
- Use Simplified layout as default
- Enable group overflow popups (enableGroupOverflow: true)
- Set item priorities for intelligent collapsing
- Define allowedSizes for critical items
- Use minimized state for maximum content space
- Implement overflow popup events for analytics
Use Case 5: Keyboard-Driven Workflow
When user prioritizes keyboard navigation:
- Enable keytips (enableKeyTips: true)
- Assign logical keytips to all tabs, groups, and items
- Add tooltips with keyboard shortcut hints
- Implement tab selection events for keyboard feedback
- Use CheckBox items for toggleable options
- Add help pane with keyboard shortcut reference
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