Toolbar Extensions
Through toolbar extensions, you can add custom menu groups to the toolbar for personalized configuration. You can also integrate with the page aside to add custom content or manually control the toolbar’s visibility.
Use Cases
- Group toolbar actions by business domain (office tools / review / AI, etc.)
- Role-based toolbars: show different entries for editors, reviewers, and read-only users
- Promote high-frequency actions into first-level entry points (export, tables, asset library)
- Inject enterprise-specific buttons via slots (approve, archive, publish, sync to external systems)
- Reuse one editor across products with different
menusconfigurations
Works Well With
- Page Aside: the toolbar triggers actions, the aside hosts complex UI and workflows: Page Aside
- AI: surface Assistant/Chat entry points and keep full interactions in the aside: AI
- Import/Export: put common import/export actions into dedicated groups: Import, Export
- Track Changes and Comments: give reviewers clear one-click review entry points: Track Changes, Comments
- Content Locking and Templates: make lock/unlock/apply template actions easy to reach: Content Locking, Template Management
Default Configuration
const defaultOptions = {
// Toolbar extension configuration
toolbar: {
menus: [
'base',
'insert',
'table',
'tools',
'page',
'view',
'import',
'export',
],
extensions: [],
},
}Configuration Description
toolbar.extensions
Description:Toolbar menu group extension.
Type:Array
Default Value:[]
Example
extensions: [
{ title: 'Office Assistant', key: 'office' },
{ title: 'Extension Plugins', key: 'plugins' },
]Each item in the array represents a group.
Configuration Items
title:Group display name.key:Group unique identifier, is the important basis for slot injection, must be unique and cannot be duplicated with default group identifier. Values such asbase,insert,table,tools,page, andexportcannot be set.
Slot Configuration
The slot setting is the same as the standard toolbar slot format, the identifier is #toolbar_{key} and is processed based on the key value in the extension configuration item.
Other toolbar slot configurations see Slot List.
Example
<template #toolbar_office="props">
<span>toolbar_office slot:{{ props }}</span>
</template>
<template #toolbar_plugins="props">
<span>toolbar_plugins slot:{{ props }}</span>
</template>