From f3ad331f64d40c9a935bb92257ee55faa6293faf Mon Sep 17 00:00:00 2001 From: Antoine Guenet Date: Thu, 1 Dec 2022 12:37:59 +0000 Subject: [PATCH] [FIX] web_editor: check if closestElement returns element `getInSelection` had a check that depended on `closestElement` returning an element (and not `undefined` or `null`). closes odoo/odoo#107061 X-original-commit: 0eeff8266ab1c3bdd15d4587aaf83e299811c3fa Signed-off-by: David Monjoie (dmo) --- .../src/js/editor/odoo-editor/src/utils/utils.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js index f94de27cec9..ac4af60e681 100644 --- a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js +++ b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js @@ -1391,13 +1391,17 @@ export function containsUnremovable(node) { export function getInSelection(document, selector) { const selection = document.getSelection(); const range = selection && !!selection.rangeCount && selection.getRangeAt(0); - return ( - range && - (closestElement(range.startContainer, selector) || - [...closestElement(range.commonAncestorContainer).querySelectorAll(selector)].find( + if (range) { + const selectorInStartAncestors = closestElement(range.startContainer, selector); + if (selectorInStartAncestors) { + return selectorInStartAncestors; + } else { + const commonElementAncestor = closestElement(range.commonAncestorContainer); + return commonElementAncestor && [...commonElementAncestor.querySelectorAll(selector)].find( node => range.intersectsNode(node), - )) - ); + ); + } + } } /**