diff --git a/lang/en/editor.php b/lang/en/editor.php index bf0ea4656..de9aa0ece 100644 --- a/lang/en/editor.php +++ b/lang/en/editor.php @@ -83,6 +83,7 @@ return [ 'delete_table' => 'Delete table', 'table_clear_formatting' => 'Clear table formatting', 'resize_to_contents' => 'Resize to contents', + 'row_header' => 'Row header', 'insert_row_before' => 'Insert row before', 'insert_row_after' => 'Insert row after', 'delete_row' => 'Delete row', diff --git a/resources/js/wysiwyg/plugins-table-additions.js b/resources/js/wysiwyg/plugins-table-additions.js index fcb774af1..a1cf84247 100644 --- a/resources/js/wysiwyg/plugins-table-additions.js +++ b/resources/js/wysiwyg/plugins-table-additions.js @@ -3,6 +3,25 @@ */ function register(editor) { editor.ui.registry.addIcon('tableclearformatting', ''); + + const tableFirstRowContextSpec = { + items: ' | tablerowheader', + predicate(elem) { + const isTable = elem.nodeName.toLowerCase() === 'table'; + const selectionNode = editor.selection.getNode(); + const parentTable = selectionNode.closest('table'); + if (!isTable || !parentTable) { + return false; + } + + const firstRow = parentTable.querySelector('tr'); + return firstRow.contains(selectionNode); + }, + position: 'node', + scope: 'node', + }; + editor.ui.registry.addContextToolbar('customtabletoolbarfirstrow', tableFirstRowContextSpec); + editor.addCommand('tableclearformatting', () => { const table = editor.dom.getParent(editor.selection.getStart(), 'table'); if (!table) {