From f46cbb1eb7b4ffae8754a245060b78bd7a6b5e3f Mon Sep 17 00:00:00 2001 From: AlbertHilb Date: Wed, 25 Oct 2017 07:31:28 +0200 Subject: [PATCH] Don't stop propagation of drag events. (#1278) --- .../slate-react/src/components/content.js | 14 +++++++++++++ packages/slate-react/src/plugins/before.js | 20 +------------------ 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/packages/slate-react/src/components/content.js b/packages/slate-react/src/components/content.js index a844fc764..676e5db5d 100644 --- a/packages/slate-react/src/components/content.js +++ b/packages/slate-react/src/components/content.js @@ -252,6 +252,20 @@ class Content extends React.Component { } } + // Don't handle drag events coming from embedded editors. + if ( + handler == 'onDragEnd' || + handler == 'onDragEnter' || + handler == 'onDragExit' || + handler == 'onDragLeave' || + handler == 'onDragOver' || + handler == 'onDragStart' + ) { + const { target } = event + const targetEditorNode = findClosestNode(target, '[data-slate-editor]') + if (targetEditorNode !== this.element) return + } + // Some events require being in editable in the editor, so if the event // target isn't, ignore them. if ( diff --git a/packages/slate-react/src/plugins/before.js b/packages/slate-react/src/plugins/before.js index 25f4a80d9..ab3157bd1 100644 --- a/packages/slate-react/src/plugins/before.js +++ b/packages/slate-react/src/plugins/before.js @@ -150,9 +150,6 @@ function BeforePlugin() { */ function onDragEnd(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - isDragging = false debug('onDragEnd', { event }) @@ -167,9 +164,6 @@ function BeforePlugin() { */ function onDragEnter(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - debug('onDragEnter', { event }) } @@ -182,9 +176,6 @@ function BeforePlugin() { */ function onDragExit(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - debug('onDragExit', { event }) } @@ -197,9 +188,6 @@ function BeforePlugin() { */ function onDragLeave(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - debug('onDragLeave', { event }) } @@ -212,11 +200,8 @@ function BeforePlugin() { */ function onDragOver(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - // If a drag is already in progress, don't do this again. - if (!isDragging) return true + if (isDragging) return true isDragging = true event.nativeEvent.dataTransfer.dropEffect = 'move' @@ -236,9 +221,6 @@ function BeforePlugin() { */ function onDragStart(event, change, editor) { - // Stop propagation so the event isn't visible to parent editors. - event.stopPropagation() - isDragging = true debug('onDragStart', { event })