@ckeditor/ckeditor5-table
Version:
Table feature for CKEditor 5.
64 lines (63 loc) • 2.3 kB
JavaScript
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module table/tabletoolbar
*/
import { Plugin } from 'ckeditor5/src/core.js';
import { WidgetToolbarRepository } from 'ckeditor5/src/widget.js';
import { getSelectedTableWidget, getTableWidgetAncestor } from './utils/ui/widget.js';
/**
* The table toolbar class. It creates toolbars for the table feature and its content (for now only for the table cell content).
*
* The table toolbar shows up when a table widget is selected. Its components (e.g. buttons) are created based on the
* {@link module:table/tableconfig~TableConfig#tableToolbar `table.tableToolbar` configuration option}.
*
* Table content toolbar shows up when the selection is inside the content of a table. It creates its component based on the
* {@link module:table/tableconfig~TableConfig#contentToolbar `table.contentToolbar` configuration option}.
*/
export default class TableToolbar extends Plugin {
/**
* @inheritDoc
*/
static get requires() {
return [WidgetToolbarRepository];
}
/**
* @inheritDoc
*/
static get pluginName() {
return 'TableToolbar';
}
/**
* @inheritDoc
*/
static get isOfficialPlugin() {
return true;
}
/**
* @inheritDoc
*/
afterInit() {
const editor = this.editor;
const t = editor.t;
const widgetToolbarRepository = editor.plugins.get(WidgetToolbarRepository);
const tableContentToolbarItems = editor.config.get('table.contentToolbar');
const tableToolbarItems = editor.config.get('table.tableToolbar');
if (tableContentToolbarItems) {
widgetToolbarRepository.register('tableContent', {
ariaLabel: t('Table toolbar'),
items: tableContentToolbarItems,
getRelatedElement: getTableWidgetAncestor
});
}
if (tableToolbarItems) {
widgetToolbarRepository.register('table', {
ariaLabel: t('Table toolbar'),
items: tableToolbarItems,
getRelatedElement: getSelectedTableWidget
});
}
}
}