From b8210c63fc857d103c9006117ecc4248da60fc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Nystro=CC=88m?= Date: Mon, 13 Jun 2016 21:47:16 +0200 Subject: [PATCH 1/2] Fix onDragLeave bug by remove elements check --- src/services/FileDrop.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/FileDrop.js b/src/services/FileDrop.js index 662f6ce..ec995a8 100644 --- a/src/services/FileDrop.js +++ b/src/services/FileDrop.js @@ -72,7 +72,6 @@ export default (FileDirective) => { * Event handler */ onDragLeave(event) { - if(event.currentTarget === this.element[0]) return; this._preventAndStop(event); forEach(this.uploader._directives.over, this._removeOverClass, this); } From 226e6e6a410c063615186ad7ae7d74456f5b3098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Nystro=CC=88m?= Date: Tue, 14 Jun 2016 17:42:39 +0200 Subject: [PATCH 2/2] Fix onDragLeave flickering bug by wrapping into $timeout for 50ms --- src/services/FileDrop.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/services/FileDrop.js b/src/services/FileDrop.js index ec995a8..18315be 100644 --- a/src/services/FileDrop.js +++ b/src/services/FileDrop.js @@ -10,7 +10,7 @@ let { } = angular; -export default (FileDirective) => { +export default (FileDirective,$timeout) => { class FileDrop extends FileDirective { @@ -67,13 +67,18 @@ export default (FileDirective) => { transfer.dropEffect = 'copy'; this._preventAndStop(event); forEach(this.uploader._directives.over, this._addOverClass, this); + $timeout.cancel(this.onDragLeaveTimer); } /** * Event handler */ onDragLeave(event) { - this._preventAndStop(event); - forEach(this.uploader._directives.over, this._removeOverClass, this); + var that = this; + $timeout.cancel(that.onDragLeaveTimer); + that.onDragLeaveTimer = $timeout(function(){ + that._preventAndStop(event); + forEach(that.uploader._directives.over, that._removeOverClass, that); + },50); } /** * Helper @@ -122,5 +127,6 @@ export default (FileDirective) => { module.exports.$inject = [ - 'FileDirective' + 'FileDirective', + '$timeout' ]; \ No newline at end of file