From 8dd6457765c9a472a757ca99188a21e4bf201771 Mon Sep 17 00:00:00 2001 From: MuK IT GmbH Date: Tue, 6 Nov 2018 00:39:36 +0000 Subject: [PATCH] publish muk_web_utils - 12.0 --- muk_web_utils/__manifest__.py | 2 +- muk_web_utils/static/src/js/core/dropzone.js | 99 ++++++++++++++++++++ muk_web_utils/static/src/js/libs/jquery.js | 51 ++++++++++ muk_web_utils/template/assets.xml | 2 + 4 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 muk_web_utils/static/src/js/core/dropzone.js create mode 100644 muk_web_utils/static/src/js/libs/jquery.js diff --git a/muk_web_utils/__manifest__.py b/muk_web_utils/__manifest__.py index 4cd8a25..bf4cddb 100644 --- a/muk_web_utils/__manifest__.py +++ b/muk_web_utils/__manifest__.py @@ -20,7 +20,7 @@ { "name": "MuK Web Utils", "summary": """Utility Features""", - "version": "12.0.2.4.1", + "version": "12.0.2.4.2", "category": "Extra Tools", "license": "AGPL-3", "author": "MuK IT", diff --git a/muk_web_utils/static/src/js/core/dropzone.js b/muk_web_utils/static/src/js/core/dropzone.js new file mode 100644 index 0000000..d3876ef --- /dev/null +++ b/muk_web_utils/static/src/js/core/dropzone.js @@ -0,0 +1,99 @@ +/********************************************************************************** +* +* Copyright (C) 2017 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +odoo.define('muk_web_utils.dropzone', function (require) { +"use strict"; + +var core = require('web.core'); + +var _t = core._t; +var QWeb = core.qweb; + +var DropzoneMixin = { + _checkDropzoneEvent: function(event) { + return true; + }, + _renderDropzone: function($dropzone) { + this.$dropzone = $dropzone; + this.$dropzone.dndHover().on({ + 'dndHoverStart': this._hoverDropzoneEnter.bind(this), + 'dndHoverEnd': this._hoverDropzoneLeave.bind(this), + }); + + }, + _toggleDropzone: function(state) { + this.$dropzone.toggleClass('mk_dropzone', state); + }, + _hoverDropzoneEnter: function(event) { + if(this._checkDropzoneEvent(event)) { + this._toggleDropzone(true); + event.preventDefault(); + return false; + } + }, + _hoverDropzoneLeave: function(event) { + this._toggleDropzone(false); + event.stopPropagation(); + event.preventDefault(); + return false; + }, + _handleDrag: function(event) { + }, + _handleDrop: function(event) { + }, + _dragenterDropzone: function(event) { + if(this._checkDropzoneEvent(event)) { + event.preventDefault(); + } + }, + _dragoverDropzone: function(event) { + if(this._checkDropzoneEvent(event)) { + event.preventDefault(); + this._handleDrag(); + } + }, + _dragleaveDropzone: function(event) { + if(this._checkDropzoneEvent(event)) { + event.preventDefault(); + } + }, + _dropDropzone: function(event) { + if(this._checkDropzoneEvent(event)) { + event.preventDefault(); + event.stopPropagation(); + this._handleDrop(); + } + } +}; + +var FileDropzoneMixin = { + _checkDropzoneEvent: function(event) { + return window.File && window.FileReader && window.FileList && window.Blob; + }, + _handleDrag: function(event) { + event.originalEvent.dataTransfer.dropEffect = 'copy'; + }, +}; + +return { + DropzoneMixin: DropzoneMixin, + FileDropzoneMixin: FileDropzoneMixin, +}; + +}); \ No newline at end of file diff --git a/muk_web_utils/static/src/js/libs/jquery.js b/muk_web_utils/static/src/js/libs/jquery.js new file mode 100644 index 0000000..8069ef0 --- /dev/null +++ b/muk_web_utils/static/src/js/libs/jquery.js @@ -0,0 +1,51 @@ +/********************************************************************************** +* +* Copyright (C) 2018 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +$.fn.textWidth = function(text, font) { + if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('').hide().appendTo(document.body); + $.fn.textWidth.fakeEl.text(text || this.val() || this.text()).css('font', font || this.css('font')); + return $.fn.textWidth.fakeEl.width(); +}; + +$.fn.dndHover = function(options) { + return this.each(function() { + var self = $(this); + var collection = $(); + self.on('dragenter', function(event) { + if (collection.size() === 0) { + self.trigger('dndHoverStart'); + } + collection = collection.add(event.target); + }); + self.on('dragleave', function(event) { + setTimeout(function() { + collection = collection.not(event.target); + if (collection.size() === 0) { + self.trigger('dndHoverEnd'); + } + }, 1); + }); + self.on('drop', function(event) { + setTimeout(function() { + collection = $(); + self.trigger('dndHoverEnd'); + }, 1); + }); + }); +}; diff --git a/muk_web_utils/template/assets.xml b/muk_web_utils/template/assets.xml index 9325b4e..cfd0a63 100644 --- a/muk_web_utils/template/assets.xml +++ b/muk_web_utils/template/assets.xml @@ -38,7 +38,9 @@ + +