用途
Syncfusion Angular Ribbon 是一个专业的命令界面组件,用于在 Angular 应用中创建类似 Microsoft Office 的功能区(Ribbon)界面,将应用命令按选项卡式功能区进行组织。
主要能力
- 层级化命令组织:采用 选项卡(Tabs)→ 组(Groups)→ 集合(Collections)→ 项目(Items)的结构,便于逻辑化地组织命令。
- 7 种内置项目类型:Button、CheckBox、DropDown、SplitButton、ComboBox、ColorPicker、GroupButton 以及 Gallery。
- 双布局模式:经典(多行)布局与简化(可折叠)布局,并支持自动调整尺寸。
- 文件菜单与 Backstage 视图:提供传统文件菜单或现代 Backstage 界面,用于文档操作。
- 上下文选项卡:可根据用户选择或上下文动态显示选项卡。
- 响应式调整:根据可用宽度自动调整项目尺寸(Large、Medium、Small)。
- 键盘导航:完整的 keytips 支持,面向键盘优先的工作流。
- 无障碍特性:符合 WCAG,支持 ARIA 属性与屏幕阅读器。
- RTL 支持:面向阿拉伯语、希伯来语、波斯语和乌尔都语的从右到左布局。
- 画廊项目:用于主题、样式和配色方案的视觉选择面板。
- 帮助窗格:可自定义的帮助窗格,支持模板。
- 高级事件系统:涵盖选项卡选择、折叠/展开、启动器点击和项目交互等事件。
- 高度可配置:提供 20 多个功能区属性、30 多个项目属性和 10 多个事件。
核心概念与层级
- 选项卡(Tabs):组织主要功能类别(如 Home、Insert、View)。
- 组(Groups):在选项卡内对相关命令进行分组(如 Clipboard、Font、Alignment)。
- 集合(Collections):组内的视觉分组,便于更好地组织。
- 项目(Items):单个命令,共 7 种类型(Button、DropDown、ColorPicker 等)。
- 布局(Layouts):经典(多行)或简化(可折叠),支持自动切换。
- 文件菜单/Backstage:应用级操作(New、Open、Save、Print)。
使用方式
快速开始示例
以下是一个包含 Home 和 Insert 选项卡的最小 Ribbon 示例:
import { Component } from "@angular/core";
import { RibbonModule } from '@syncfusion/ej2-angular-ribbon';
import { RibbonButtonSettingsModel, RibbonSplitButtonSettingsModel } from '@syncfusion/ej2-angular-ribbon';
@Component({
imports: [ RibbonModule ],
standalone: true,
selector: "app-root",
template: `
<ejs-ribbon id="ribbon">
<e-ribbon-tabs>
<e-ribbon-tab header="Home">
<e-ribbon-groups>
<e-ribbon-group header="Clipboard" orientation="Row">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="SplitButton" [splitButtonSettings]="pasteSettings"></e-ribbon-item>
</e-ribbon-items>
</e-ribbon-collection>
<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-items>
</e-ribbon-collection>
</e-ribbon-collections>
</e-ribbon-group>
</e-ribbon-groups>
</e-ribbon-tab>
<e-ribbon-tab header="Insert">
<e-ribbon-groups>
<e-ribbon-group header="Illustrations" orientation="Row">
<e-ribbon-collections>
<e-ribbon-collection>
<e-ribbon-items>
<e-ribbon-item type="Button" [buttonSettings]="chartButton"></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>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
public pasteSettings = {
iconCss: "e-icons e-paste",
items: [{ text: "Keep Source Format" }, { text: "Merge format" }],
content: "Paste"
};
public cutButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-cut", content: "Cut" };
public copyButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-copy", content: "Copy" };
public chartButton: RibbonButtonSettingsModel = { iconCss: "e-icons e-chart", content: "Chart" };
}
常见模式
- 多选项卡命令界面:为主要功能定义多个选项卡,在每个选项卡内添加组,配置集合以视觉化组织项目,使用合适的项目类型,设置 activeLayout 为 Classic 或 Simplified,处理 tabSelected 事件。
- 文件菜单与 Backstage 集成:配置 fileMenu 或 backStageMenu 用于文档操作,添加 New、Open、Save、Print、Export 菜单项,使用 iconCss 设置图标,处理菜单项点击事件,使用页脚项,配置返回按钮。
- 带尺寸优先级的响应式调整:在项目上设置 allowedSizes 数组,配置 activeSize 作为初始显示尺寸,Ribbon 会根据宽度自动调整项目尺寸,处理 ribbonCollapsing 事件。
- 上下文选项卡:定义 contextualTabs 数组,根据用户选择设置 visible 属性,使用 isSelected 以编程方式激活上下文选项卡。
- 键盘导航与 Keytips:启用 enableKeyTips,为选项卡分配 keyTip 属性,为组和项目添加 keytips,配置 layoutSwitcherKeyTip。
- 画廊项目:配置 type="Gallery",定义 gallerySettings,设置 itemCount、popupWidth、popupHeight,使用模板自定义渲染。
关键属性
核心配置包括 tabs、activeLayout、selectedTab、isMinimized;布局与外观包括 width、cssClass、hideLayoutSwitcher、tabAnimation;键盘与无障碍包括 enableKeyTips、layoutSwitcherKeyTip、launcherIconCss;文件菜单与 Backstage 包括 fileMenu、backStageMenu;高级特性包括 contextualTabs、helpPaneTemplate;全球化包括 locale、enableRtl、enablePersistence。
关键事件
包括 tabSelected、tabSelecting、ribbonCollapsing、ribbonExpanded、launcherClick、overflowPopupOpen、overflowPopupClose、layoutSwitched、backStageItemClick,以及文件菜单的 beforeOpen、open、beforeClose、close、beforeItemRender、select 事件。
适用场景
适用于需要在 Angular 应用中构建专业命令界面的场景,例如文档编辑器、设计工具、数据管理应用等需要类似 Office 功能区交互的界面。
限制
资料中未提供关于收费、价格、平台兼容性、性能指标或具体使用步骤的更多信息,相关内容暂未提供。