diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-11-15 14:22:59 -0800 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-11-15 14:22:59 -0800 |
commit | da599a19ba32493d4ab5f9e21d5abfb06e3087cb (patch) | |
tree | cc39945b88440f2ca9e6ec0cf43c1586f4568d9c /client/lib/dropImage.js | |
parent | cb3bd86396e4d19e1f05fcb94e3527f81e70412e (diff) | |
parent | eaf2afb44cb9de64b1ed13cb795efd0f44c541ec (diff) | |
download | wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.tar.gz wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.tar.bz2 wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.zip |
Merge GitHub PR #387
Diffstat (limited to 'client/lib/dropImage.js')
-rw-r--r-- | client/lib/dropImage.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/client/lib/dropImage.js b/client/lib/dropImage.js new file mode 100644 index 00000000..592d5c8f --- /dev/null +++ b/client/lib/dropImage.js @@ -0,0 +1,62 @@ +/* eslint-disable */ + +// ------------------------------------------------------------------------ +// Created by STRd6 +// MIT License +// https://github.com/distri/jquery-image_reader/blob/master/drop.coffee.md +// +// Raymond re-write it to javascript + +(function($) { + $.event.fix = (function(originalFix) { + return function(event) { + event = originalFix.apply(this, arguments); + if (event.type.indexOf('drag') === 0 || event.type.indexOf('drop') === 0) { + event.dataTransfer = event.originalEvent.dataTransfer; + } + return event; + }; + })($.event.fix); + + const defaults = { + callback: $.noop, + matchType: /image.*/, + }; + + return $.fn.dropImageReader = function(options) { + if (typeof options === 'function') { + options = { + callback: options, + }; + } + options = $.extend({}, defaults, options); + const stopFn = function(event) { + event.stopPropagation(); + return event.preventDefault(); + }; + return this.each(function() { + const element = this; + $(element).bind('dragenter dragover dragleave', stopFn); + return $(element).bind('drop', function(event) { + stopFn(event); + const files = event.dataTransfer.files; + for(let i=0; i<files.length; i++) { + const f = files[i]; + if(f.type.match(options.matchType)) { + const reader = new FileReader(); + reader.onload = function(evt) { + return options.callback.call(element, { + dataURL: evt.target.result, + event: evt, + file: f, + name: f.name, + }); + }; + reader.readAsDataURL(f); + return; + } + } + }); + }); + }; +})(jQuery); |