Created
January 18, 2019 02:58
-
-
Save Juhlinus/2f15c899f36c9c814ff07b699a3161df to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mounted(){ | |
/* | |
Determine if drag and drop functionality is capable in the browser | |
*/ | |
this.dragAndDropCapable = this.determineDragAndDropCapable(); | |
/* | |
If drag and drop capable, then we continue to bind events to our elements. | |
*/ | |
if( this.dragAndDropCapable ){ | |
/* | |
Listen to all of the drag events and bind an event listener to each | |
for the fileform. | |
*/ | |
['drag', 'dragstart', 'dragend', 'dragover', 'dragenter', 'dragleave', 'drop'].forEach( function( evt ) { | |
/* | |
For each event add an event listener that prevents the default action | |
(opening the file in the browser) and stop the propagation of the event (so | |
no other elements open the file in the browser) | |
*/ | |
this.$refs.fileform.addEventListener(evt, function(e){ | |
e.preventDefault(); | |
e.stopPropagation(); | |
}.bind(this), false); | |
}.bind(this)); | |
/* | |
Add an event listener for drop to the form | |
*/ | |
this.$refs.fileform.addEventListener('drop', function(e){ | |
/* | |
Capture the files from the drop event and add them to our local files | |
array. | |
*/ | |
for( let i = 0; i < e.dataTransfer.files.length; i++ ){ | |
this.files.push( e.dataTransfer.files[i] ); | |
} | |
}.bind(this)); | |
} | |
}, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment