Updated WYSIWYG callout shortcut to handle child elems

- Will now search for a callout on/above the selected node rather than
only using the selected node.
- Issues previously where callout shortcut would not cycle if called
when child formatting was currently selected inside the callout.

For #2061
This commit is contained in:
Dan Brown 2020-04-26 09:26:41 +01:00
parent 2ec4ad1181
commit 468fec80de
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9

View File

@ -98,21 +98,15 @@ function registerEditorShortcuts(editor) {
// Loop through callout styles
editor.shortcuts.add('meta+9', '', function() {
let selectedNode = editor.selection.getNode();
let formats = ['info', 'success', 'warning', 'danger'];
const selectedNode = editor.selection.getNode();
const callout = selectedNode ? selectedNode.closest('.callout') : null;
if (!selectedNode || selectedNode.className.indexOf('callout') === -1) {
editor.formatter.apply('calloutinfo');
return;
}
const formats = ['info', 'success', 'warning', 'danger'];
const currentFormatIndex = formats.findIndex(format => callout && callout.classList.contains(format));
const newFormatIndex = (currentFormatIndex + 1) % formats.length;
const newFormat = formats[newFormatIndex];
for (let i = 0; i < formats.length; i++) {
if (selectedNode.className.indexOf(formats[i]) === -1) continue;
let newFormat = (i === formats.length -1) ? formats[0] : formats[i+1];
editor.formatter.apply('callout' + newFormat);
return;
}
editor.formatter.apply('p');
editor.formatter.apply('callout' + newFormat);
});
}