From 134b1ad97cbc60cb883c72524d6e9bdd03ec694e Mon Sep 17 00:00:00 2001 From: Miu Razvan Date: Tue, 26 Mar 2024 15:42:10 +0200 Subject: [PATCH 1/5] fix(slate): fix insert/remove element edgecase bug in slate --- .../volto-slate/src/elementEditor/utils.js | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/volto-slate/src/elementEditor/utils.js b/packages/volto-slate/src/elementEditor/utils.js index 9f0a76c06e..8f0badaeb6 100644 --- a/packages/volto-slate/src/elementEditor/utils.js +++ b/packages/volto-slate/src/elementEditor/utils.js @@ -45,13 +45,16 @@ export const _insertElement = (elementType) => (editor, data) => { match: (node) => { return Node.string(node).length !== 0; }, - }, //, + }, ); } const sel = JSON.parse(JSON.stringify(rangeRef.current)); - Transforms.select(editor, sel); - editor.setSavedSelection(sel); + + setTimeout(() => { + Transforms.select(editor, sel); + editor.setSavedSelection(sel); + }); return true; } @@ -69,10 +72,26 @@ export const _insertElement = (elementType) => (editor, data) => { * @returns {Object|null} - current node */ export const _unwrapElement = (elementType) => (editor) => { - const [link] = Editor.nodes(editor, { - at: editor.selection, + const selection = editor.selection || editor.getSavedSelection(); + let [link] = Editor.nodes(editor, { + at: selection, match: (node) => node?.type === elementType, }); + const isAtStart = + selection.anchor.offset === 0 && selection.focus.offset === 0; + + if (!link && !isAtStart) return false; + + if (!link) { + try { + link = Editor.previous(editor, { + at: selection.anchor.path, + }); + } catch (ex) { + link = []; + } + } + const [, path] = link; const [start, end] = Editor.edges(editor, path); const range = { anchor: start, focus: end }; From ada5f7e7b2903f35fe07d4e9f6c2e87e2d5bcb3f Mon Sep 17 00:00:00 2001 From: Miu Razvan Date: Tue, 26 Mar 2024 15:43:48 +0200 Subject: [PATCH 2/5] add changelog --- packages/volto/news/5926.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/volto/news/5926.bugfix diff --git a/packages/volto/news/5926.bugfix b/packages/volto/news/5926.bugfix new file mode 100644 index 0000000000..1aee77612c --- /dev/null +++ b/packages/volto/news/5926.bugfix @@ -0,0 +1 @@ +Fix insert/remove element edgecase bug in slate. @razvanMiu \ No newline at end of file From 03a4ce37fdbc37eef2a65ec12f1f463ab9a4b89f Mon Sep 17 00:00:00 2001 From: Miu Razvan Date: Tue, 26 Mar 2024 15:48:54 +0200 Subject: [PATCH 3/5] move changelog to volto-slate --- packages/{volto => volto-slate}/news/5926.bugfix | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/{volto => volto-slate}/news/5926.bugfix (100%) diff --git a/packages/volto/news/5926.bugfix b/packages/volto-slate/news/5926.bugfix similarity index 100% rename from packages/volto/news/5926.bugfix rename to packages/volto-slate/news/5926.bugfix From 36e3ca9a76b2eaa3754dec6f7a082b4ef9b53624 Mon Sep 17 00:00:00 2001 From: Miu Razvan Date: Tue, 26 Mar 2024 17:26:19 +0200 Subject: [PATCH 4/5] update changelog --- packages/volto-slate/news/5926.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/volto-slate/news/5926.bugfix b/packages/volto-slate/news/5926.bugfix index 1aee77612c..14399fbc91 100644 --- a/packages/volto-slate/news/5926.bugfix +++ b/packages/volto-slate/news/5926.bugfix @@ -1 +1 @@ -Fix insert/remove element edgecase bug in slate. @razvanMiu \ No newline at end of file +Fix removing an element in slate when cursor is at the end of the element to be removed; Fix losing selection when adding an element. @razvanMiu \ No newline at end of file From e8f50fa85cc7910b5bf26ca55d958dae61e620b8 Mon Sep 17 00:00:00 2001 From: Miu Razvan Date: Wed, 27 Mar 2024 01:14:34 +0200 Subject: [PATCH 5/5] update changelog --- packages/volto-slate/news/{5926.bugfix => 5928.bugfix} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/volto-slate/news/{5926.bugfix => 5928.bugfix} (100%) diff --git a/packages/volto-slate/news/5926.bugfix b/packages/volto-slate/news/5928.bugfix similarity index 100% rename from packages/volto-slate/news/5926.bugfix rename to packages/volto-slate/news/5928.bugfix