Ribbon Contextual Tabs
27 Aug 202524 minutes to read
Ribbon Contextual Tabs are special tabs that appear only when a specific object or context is selected, such as a table, image, or chart. They provide users with a set of tools relevant only to the selected item. These tabs can host all built-in and custom Ribbon items to perform specific actions.
Visible tabs
You can control the initial visibility of a contextual tab by setting the visible property to true
or false
within the e-ribbon-contextual-tab
directive.
Adding Contextual Tabs
Add contextual tabs to the Ribbon by using the e-ribbon-contextual-tabs
tag directive. You can define multiple contextual tabs, each containing one or more standard Ribbon tabs.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RibbonModule, RibbonContextualTabService } from '@syncfusion/ej2-angular-ribbon'
import { Component } from "@angular/core";
import { RibbonButtonSettingsModel, DisplayMode } from '@syncfusion/ej2-angular-ribbon';
@Component({
imports: [ RibbonModule],
providers: [ RibbonContextualTabService ],
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public copyButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-copy", content: "Copy" };
public cutButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Cut" };
public formatButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Format Painter" };
public headerButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-text-header", content: "Text Header" };
public wrapButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-text-wrap", content: "Text Wrap" };
public annotationButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-text-annotation", content: "Text Annotation" };
public altButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-text-alternative", content: "Alt Text" };
public forwardButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-bring-forward", content: "Bring Forward" };
public backwardButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-send-backward", content: "Send Backward" };
public selectionButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-show-hide-panel", content: "Selection Pane" };
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
<ejs-ribbon id="ribbon">
<e-ribbon-contextual-tabs>
<e-ribbon-contextual-tab [visible]="true">
<e-ribbon-tabs>
<e-ribbon-tab header="Shape Format">
<e-ribbon-groups>
<e-ribbon-group header="Text decoration" [showLauncherIcon]="true">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="headerButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="wrapButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="annotationButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
<e-ribbon-group header="Accessibility">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="altButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
<e-ribbon-group header="Arrange" [showLauncherIcon]="true">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="forwardButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="backwardButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="selectionButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
</e-ribbon-contextual-tab>
</e-ribbon-contextual-tabs>
<e-ribbon-tabs>
<e-ribbon-tab header="Home">
<e-ribbon-groups>
<e-ribbon-group header="Clipboard" groupIconCss="e-icons e-paste">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="cutButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="copyButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="formatButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
</ejs-ribbon>
Selected tabs
The isSelected property determines which contextual tab is active upon initialization. Setting this property to true
makes the corresponding tab the currently selected one.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RibbonModule, RibbonContextualTabService } from '@syncfusion/ej2-angular-ribbon'
import { Component } from "@angular/core";
import { RibbonButtonSettingsModel, DisplayMode } from '@syncfusion/ej2-angular-ribbon';
@Component({
imports: [ RibbonModule],
providers: [ RibbonContextualTabService ],
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public copyButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-copy", content: "Copy" };
public cutButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Cut" };
public formatButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Format Painter" };
public styleButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-style", content: "Style" };
public textButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-font-name", content: "Text Box" };
public paintButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-paint-bucket", content: "Paint" };
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
<ejs-ribbon id="ribbon">
<e-ribbon-tabs>
<e-ribbon-tab header="Home">
<e-ribbon-groups>
<e-ribbon-group header="Clipboard" groupIconCss="e-icons e-paste">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="cutButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="copyButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="formatButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
<e-ribbon-contextual-tabs>
<e-ribbon-contextual-tab [isSelected]="true" [visible]="true">
<e-ribbon-tabs>
<e-ribbon-tab header="Styles">
<e-ribbon-groups>
<e-ribbon-group header="Style" [showLauncherIcon]="true">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="styleButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="textButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="paintButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
</e-ribbon-contextual-tab>
</e-ribbon-contextual-tabs>
</ejs-ribbon>
Methods
The Ribbon provides methods to dynamically manage the visibility of contextual tabs after the component has been initialized.
Show Tab
The showTab method makes a specific contextual tab visible in the Ribbon.
Hide Tab
The hideTab method hides a specific contextual tab in the Ribbon.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { RibbonModule, RibbonContextualTabService } from '@syncfusion/ej2-angular-ribbon'
import { Component, ViewChild } from "@angular/core";
import { RibbonButtonSettingsModel, RibbonComponent } from '@syncfusion/ej2-angular-ribbon';
@Component({
imports: [ RibbonModule],
providers: [ RibbonContextualTabService ],
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild('ribbon') ribbon!: RibbonComponent;
@ViewChild('showContextual') showElement!: HTMLElement;
@ViewChild('hideContextual') hideElement!: HTMLElement;
public copyButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-copy", content: "Copy" };
public cutButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Cut" };
public formatButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Format Painter" };
public forwardButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-bring-forward", content: "Bring Forward" };
public backwardButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-send-backward", content: "Send Backward" };
public selectionButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-show-hide-panel", content: "Selection Pane" };
toggleRibbonTabs = (value: string) => {
(this.ribbon as any)[value]('ArrangeView', true);
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
<button (click)="toggleRibbonTabs('showTab')" class="e-btn"> Show tab </button>
<button (click)="toggleRibbonTabs('hideTab')" class="e-btn"> Hide tab </button>
<ejs-ribbon #ribbon id="ribbon" style="margin-top: 30px;">
<e-ribbon-tabs>
<e-ribbon-tab header="Home">
<e-ribbon-groups>
<e-ribbon-group header="Clipboard" groupIconCss="e-icons e-paste">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="cutButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="copyButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="formatButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
<e-ribbon-contextual-tabs>
<e-ribbon-contextual-tab>
<e-ribbon-tabs>
<e-ribbon-tab id="ArrangeView" header="Arrange & View">
<e-ribbon-groups>
<e-ribbon-group header="Arrange" [showLauncherIcon]="true">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="forwardButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="backwardButton"> </e-ribbon-item>
<e-ribbon-item type="Button" [buttonSettings]="selectionButton"> </e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
</e-ribbon-tabs>
</e-ribbon-contextual-tab>
</e-ribbon-contextual-tabs>
</ejs-ribbon>