From 105e33c9c4e3eb15ab679a379fc6a23bf5f9163e Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Fri, 29 Apr 2016 11:57:40 -0700 Subject: [PATCH] fix(mail-merge): Fix drag and drop for files vs. chips --- internal_packages/composer/lib/composer-editor.jsx | 5 ++++- internal_packages/composer/stylesheets/composer.less | 1 + src/components/contenteditable/contenteditable.cjsx | 5 +++++ src/components/drop-zone.cjsx | 3 +++ src/pro | 2 +- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/internal_packages/composer/lib/composer-editor.jsx b/internal_packages/composer/lib/composer-editor.jsx index 7b935a28e..f569cc914 100644 --- a/internal_packages/composer/lib/composer-editor.jsx +++ b/internal_packages/composer/lib/composer-editor.jsx @@ -217,6 +217,9 @@ class ComposerEditor extends Component { this.refs.contenteditable._onDragOver(event) } + _shouldAcceptDrop(event) { + return this.refs.contenteditable._shouldAcceptDrop(event) + } // Helpers _scrollToBottom = ()=> { @@ -302,7 +305,7 @@ class ComposerEditor extends Component { className="composer-inner-wrap" onDrop={::this._onDrop} onDragOver={::this._onDragOver} - shouldAcceptDrop={() => true} + shouldAcceptDrop={::this._shouldAcceptDrop} > @dispatchEventToExtensions("onDrop", event) + _shouldAcceptDrop: (event) => + for extension in [].concat(@props.extensions, @coreExtensions) + return true if extension.shouldAcceptDrop?.call(extension, {event}) + return false + # We must set the `inCompositionEvent` flag in addition to tearing down # the selecton listeners. While the composition event is in progress, we # want to ignore any input events we get. diff --git a/src/components/drop-zone.cjsx b/src/components/drop-zone.cjsx index 070fba2d5..70a086276 100644 --- a/src/components/drop-zone.cjsx +++ b/src/components/drop-zone.cjsx @@ -31,6 +31,7 @@ class DropZone extends React.Component @_dragCounter += 1 if @_dragCounter is 1 and @props.onDragStateChange @props.onDragStateChange(isDropping: true) + e.stopPropagation() return _onDragLeave: (e) => @@ -38,6 +39,7 @@ class DropZone extends React.Component @_dragCounter -= 1 if @_dragCounter is 0 and @props.onDragStateChange @props.onDragStateChange(isDropping: false) + e.stopPropagation() return _onDrop: (e) => @@ -46,6 +48,7 @@ class DropZone extends React.Component @props.onDragStateChange(isDropping: false) @_dragCounter = 0 @props.onDrop(e) + e.stopPropagation() return module.exports = DropZone diff --git a/src/pro b/src/pro index ebef587e6..c9b197246 160000 --- a/src/pro +++ b/src/pro @@ -1 +1 @@ -Subproject commit ebef587e6eeef3c3e76bb6c25a52b93e08ee9a00 +Subproject commit c9b1972462e7b09b047456bb96a49db0b62443e3