component.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. function init_components_dropimage(input){
  2. if(input.data('picker')){
  3. var picker = input.data('picker')
  4. }else{
  5. var picker = $('<div class="data-type-dropimage"><div class="dropimage-image"></div><input class="hidden" type="file"><div class="dropimage-edit" ><i class="fas fa-pencil-alt"></i></div></div>');
  6. input.after(picker);
  7. picker.find('.dropimage-image').append(input.detach());
  8. input.data('picker',picker).css('cursor','pointer');
  9. }
  10. var fileInput = picker.find('input');
  11. var imageInput = picker.find('.dropimage-image > img');
  12. fileInput.click(function(e){
  13. e.stopPropagation();
  14. });
  15. picker.click(function(e){
  16. e.preventDefault();
  17. fileInput.trigger('click');
  18. fileInput.change(function(){
  19. preloader(true);
  20. var file = fileInput.get(0).files[0];
  21. var reader = new FileReader();
  22. reader.addEventListener("load", function () {
  23. imageInput.attr('src',reader.result);
  24. if(imageInput.attr('data-callback')!=""){
  25. var callback = imageInput.attr('data-callback');
  26. window[callback](picker,reader.result);
  27. preloader(false);
  28. }
  29. }, false);
  30. reader.readAsDataURL(file);
  31. });
  32. });
  33. picker.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {
  34. e.preventDefault();
  35. e.stopPropagation();
  36. })
  37. picker.on('drop', function (e) {
  38. preloader(true);
  39. var droppedFiles = e.originalEvent.dataTransfer.files;
  40. var reader = new FileReader();
  41. reader.readAsDataURL(droppedFiles[0]);
  42. reader.onload = function () {
  43. input.attr('src',reader.result);
  44. if(input.attr('data-callback')!=""){
  45. var callback = input.attr('data-callback');
  46. window[callback](input,reader.result);
  47. preloader(false);
  48. }
  49. };
  50. reader.onerror = function (error) {
  51. console.log('Error: ', error);
  52. preloader(false);
  53. };
  54. });
  55. }