Skip to content

Instantly share code, notes, and snippets.

@Juhlinus
Created January 18, 2019 02:58
Show Gist options
  • Save Juhlinus/2f15c899f36c9c814ff07b699a3161df to your computer and use it in GitHub Desktop.
Save Juhlinus/2f15c899f36c9c814ff07b699a3161df to your computer and use it in GitHub Desktop.
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