From e8609af6a76cdc24387fbabb5a0e8c8f1700a617 Mon Sep 17 00:00:00 2001 From: zheyujie Date: Fri, 10 Apr 2020 06:56:17 +1200 Subject: [PATCH] fix: dnd freezes an event intermittently (#1631) * Fixed an issue where dnd freezes an event intermittently * Make sure OnEnd is called no matter if it's being dragged --- src/addons/dragAndDrop/EventContainerWrapper.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/addons/dragAndDrop/EventContainerWrapper.js b/src/addons/dragAndDrop/EventContainerWrapper.js index ec0cc985b..53eb96f76 100644 --- a/src/addons/dragAndDrop/EventContainerWrapper.js +++ b/src/addons/dragAndDrop/EventContainerWrapper.js @@ -133,6 +133,7 @@ class EventContainerWrapper extends React.Component { _selectable = () => { let node = findDOMNode(this) + let isBeingDragged = false let selector = (this._selector = new Selection(() => node.closest('.rbc-time-view') )) @@ -177,16 +178,22 @@ class EventContainerWrapper extends React.Component { this.handleDropFromOutside(point, bounds) }) - selector.on('selectStart', () => this.context.draggable.onStart()) + selector.on('selectStart', () => { + isBeingDragged = true + this.context.draggable.onStart() + }) selector.on('select', point => { const bounds = getBoundsForNode(node) - + isBeingDragged = false if (!this.state.event || !pointInColumn(bounds, point)) return this.handleInteractionEnd() }) - selector.on('click', () => this.context.draggable.onEnd(null)) + selector.on('click', () => { + if (isBeingDragged) this.reset() + this.context.draggable.onEnd(null) + }) selector.on('reset', () => { this.reset()