From f9e862aa900b128459a2fb494ad9fa1ed2063a57 Mon Sep 17 00:00:00 2001 From: Rob Gietema Date: Mon, 10 Jun 2024 14:30:26 +0200 Subject: [PATCH] Fix deselecting lists. (#6080) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Víctor Fernández de Alba --- packages/volto-slate/news/6080.bugfix | 1 + packages/volto-slate/src/utils/blocks.js | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 packages/volto-slate/news/6080.bugfix diff --git a/packages/volto-slate/news/6080.bugfix b/packages/volto-slate/news/6080.bugfix new file mode 100644 index 0000000000..284e43b595 --- /dev/null +++ b/packages/volto-slate/news/6080.bugfix @@ -0,0 +1 @@ +Fix removal of slate formatting applied to text when toggling the list buttons @robgietema diff --git a/packages/volto-slate/src/utils/blocks.js b/packages/volto-slate/src/utils/blocks.js index 127d9a721e..4175ebeddb 100644 --- a/packages/volto-slate/src/utils/blocks.js +++ b/packages/volto-slate/src/utils/blocks.js @@ -264,7 +264,7 @@ export const toggleBlock = (editor, format, allowedChildren) => { } else if (!isListItem && !wantsList) { toggleFormat(editor, format, allowedChildren); } else if (isListItem && wantsList && isActive) { - clearFormatting(editor); + clearList(editor); } else { console.warn('toggleBlock case not covered, please examine:', { wantsList, @@ -298,6 +298,21 @@ export const switchListType = (editor, format) => { Transforms.wrapNodes(editor, block); }; +/* + * Clear list by exploding the block + */ +export const clearList = (editor) => { + const { slate } = config.settings; + Transforms.unwrapNodes(editor, { + match: (n) => slate.listTypes.includes(n.type), + split: true, + }); + Transforms.setNodes(editor, { + type: 'p', + }); + Editor.normalize(editor); +}; + export const changeBlockToList = (editor, format) => { const { slate } = config.settings; const [match] = Editor.nodes(editor, {