file-drop-behavior.html 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <link rel="import" href="file-selection-behavior.html">
  2. <script>
  3. 'use strict';
  4. window.Chat = window.Chat || {};
  5. Chat.FileDropBehaviorImpl = {
  6. attached: function() {
  7. var dropZone = this;
  8. dropZone.addEventListener('dragover', function(e) {
  9. e.stopPropagation();
  10. e.preventDefault();
  11. e.dataTransfer.dropEffect = 'copy';
  12. dropZone.style.transform = 'scale(1.2)';
  13. }, false);
  14. var dragEnd = function() {
  15. dropZone.style.transform = 'scale(1)';
  16. };
  17. dropZone.addEventListener('dragleave', dragEnd, false);
  18. dropZone.addEventListener('dragexit', dragEnd, false);
  19. dropZone.addEventListener('dragend', dragEnd, false);
  20. // Get file data on drop
  21. dropZone.addEventListener('drop', function(event) {
  22. event.stopPropagation();
  23. event.preventDefault();
  24. //drop is a dragend
  25. dragEnd();
  26. // Get files
  27. var files = event.dataTransfer.files;
  28. // Notify Selection
  29. this.notifyFilesSelection(files);
  30. });
  31. }
  32. };
  33. document.body.addEventListener('dragover', function(e) {
  34. e.stopPropagation();
  35. e.preventDefault();
  36. }, false);
  37. document.body.addEventListener('drop', function(event) {
  38. event.stopPropagation();
  39. event.preventDefault();
  40. });
  41. Chat.FileDropBehavior = [Chat.FileDropBehaviorImpl, Chat.FileSelectionBehavior];
  42. </script>