drag and drop upload working
This commit is contained in:
		
							parent
							
								
									4840f6360d
								
							
						
					
					
						commit
						4ca534378c
					
				| 
						 | 
				
			
			@ -7,7 +7,7 @@
 | 
			
		|||
## Roadmap
 | 
			
		||||
 | 
			
		||||
+ [x] Rename files
 | 
			
		||||
+ [ ] Upload files and drag & drop
 | 
			
		||||
+ [x] Upload files and drag & drop
 | 
			
		||||
+ [x] Delete files
 | 
			
		||||
+ [x] Download files
 | 
			
		||||
+ [x] Preview files
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -348,38 +348,6 @@ var localizeDatetime = function (e, index, ar) {
 | 
			
		|||
 e.textContent = d.toLocaleString();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var dragAndDrop = function () {
 | 
			
		||||
 let drop = document.getElementById("listing");
 | 
			
		||||
 | 
			
		||||
 if (!drop) return false;
 | 
			
		||||
 | 
			
		||||
 let files = document.querySelectorAll('.item[data-dir="false"]');
 | 
			
		||||
 let dirs = document.querySelectorAll('.item[data-dir="true"]');
 | 
			
		||||
 | 
			
		||||
 Array.from(dirs).forEach(dir => {
 | 
			
		||||
     dir.addEventListener("dragenter", event => {
 | 
			
		||||
         dir.style.boxShadow = "0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)";
 | 
			
		||||
     }, false);
 | 
			
		||||
 | 
			
		||||
     dir.addEventListener("dragleave", event => {
 | 
			
		||||
         dir.style.boxShadow = "0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.12)";
 | 
			
		||||
     }, false);
 | 
			
		||||
 });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 document.addEventListener("dragover", (event) => {
 | 
			
		||||
  Array.from(files).forEach(file => {
 | 
			
		||||
   file.style.opacity = 0.5;
 | 
			
		||||
  });
 | 
			
		||||
 }, false);
 | 
			
		||||
 | 
			
		||||
 document.addEventListener("dragend", (event) => {
 | 
			
		||||
  Array.from(files).forEach(file => {
 | 
			
		||||
   file.style.opacity = 1;
 | 
			
		||||
  });
 | 
			
		||||
 }, false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
document.addEventListener("DOMContentLoaded", function (event) {
 | 
			
		||||
 var timeList = Array.prototype.slice.call(document.getElementsByTagName("time"));
 | 
			
		||||
 timeList.forEach(localizeDatetime);
 | 
			
		||||
| 
						 | 
				
			
			@ -403,53 +371,38 @@ document.addEventListener("DOMContentLoaded", function (event) {
 | 
			
		|||
  });
 | 
			
		||||
 }
 | 
			
		||||
 document.getElementById("delete").addEventListener("click", deleteEvent);
 | 
			
		||||
 document.getElementById("rename").addEventListener("click", renameEvent);
 | 
			
		||||
 document.getElementById("download").addEventListener("click", downloadEvent);
 | 
			
		||||
 | 
			
		||||
 let drop = document.getElementById("listing");
 | 
			
		||||
 dragAndDrop();
 | 
			
		||||
 let rename = document.getElementById("rename");
 | 
			
		||||
 if (rename) {
 | 
			
		||||
     rename.addEventListener("click", renameEvent);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("drag", function (event) {
 | 
			
		||||
 if (document.getElementById("listing")) {
 | 
			
		||||
  document.addEventListener("dragover", function (event) {
 | 
			
		||||
   event.preventDefault();
 | 
			
		||||
  }, false);
 | 
			
		||||
 | 
			
		||||
 }, false);
 | 
			
		||||
  document.addEventListener("dragover", (event) => {
 | 
			
		||||
   Array.from(items).forEach(file => {
 | 
			
		||||
    file.style.opacity = 0.5;
 | 
			
		||||
   });
 | 
			
		||||
  }, false);
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("dragstart", function (event) {
 | 
			
		||||
  document.addEventListener("dragleave", (event) => {
 | 
			
		||||
   Array.from(items).forEach(file => {
 | 
			
		||||
    file.style.opacity = 1;
 | 
			
		||||
   });
 | 
			
		||||
  }, false);
 | 
			
		||||
 | 
			
		||||
  // store a ref. on the dragged elem
 | 
			
		||||
  //dragged = event.target;
 | 
			
		||||
  // make it half transparent
 | 
			
		||||
  event.target.style.opacity = .5;
 | 
			
		||||
 }, false);
 | 
			
		||||
  document.addEventListener("drop", function (event) {
 | 
			
		||||
   event.preventDefault();
 | 
			
		||||
   var dt = event.dataTransfer;
 | 
			
		||||
   var files = dt.files;
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("dragend", function (event) {
 | 
			
		||||
  // reset the transparency
 | 
			
		||||
  event.target.style.opacity = "";
 | 
			
		||||
 }, false);
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("dragover", function (event) {
 | 
			
		||||
  event.preventDefault();
 | 
			
		||||
 }, false);
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("dragenter", function (event) {
 | 
			
		||||
  // highlight potential drop target when the draggable element enters it
 | 
			
		||||
  //event.target.style.boxShadow = "0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important";
 | 
			
		||||
 }, false);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("dragleave", function (event) {
 | 
			
		||||
  // reset background of potential drop target when the draggable element leaves it
 | 
			
		||||
 | 
			
		||||
 }, false);
 | 
			
		||||
 | 
			
		||||
 drop.addEventListener("drop", function (event) {
 | 
			
		||||
  // prevent default action (open as link for some elements)
 | 
			
		||||
  event.preventDefault();
 | 
			
		||||
  var dt = event.dataTransfer;
 | 
			
		||||
  var files = dt.files;
 | 
			
		||||
 | 
			
		||||
  handleFiles(files);
 | 
			
		||||
 | 
			
		||||
 }, false);
 | 
			
		||||
   handleFiles(files);
 | 
			
		||||
  }, false);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 return false;
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
 <div class="listing">
 | 
			
		||||
  <div class="container" id="listing">
 | 
			
		||||
   {{- range .Items}}
 | 
			
		||||
   <div class="item" data-dir="{{- if .IsDir}}true{{ else }}false{{ end }}" id="{{.URL}}" draggable="true">
 | 
			
		||||
   <div class="item" data-dir="{{- if .IsDir}}true{{ else }}false{{ end }}" id="{{.URL}}">
 | 
			
		||||
    <div>
 | 
			
		||||
     <a href="{{.URL}}">
 | 
			
		||||
      {{- if .IsDir}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue