From 44e8dcf680b9313abe550eacde42fd2adedfffba Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 15 Jun 2023 11:15:32 +0300 Subject: [PATCH] fix --- .../document/record-list-drag-n-drop.js | 296 +++++++++--------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/client/modules/crm/src/view-setup-handlers/document/record-list-drag-n-drop.js b/client/modules/crm/src/view-setup-handlers/document/record-list-drag-n-drop.js index fcb007bcf2..782696f2b5 100644 --- a/client/modules/crm/src/view-setup-handlers/document/record-list-drag-n-drop.js +++ b/client/modules/crm/src/view-setup-handlers/document/record-list-drag-n-drop.js @@ -26,186 +26,186 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('crm:view-setup-handlers/document/record-list-drag-n-drop', [], function () { +import _ from 'lib!underscore'; +import {Events as BullEvents} from 'lib!bullbone'; - let Handler = function (view) { - this.view = view; - }; +let Handler = function (view) { + this.view = view; +}; - _.extend(Handler.prototype, { +_.extend(Handler.prototype, { - process: function () { - this.listenTo(this.view, 'after:render', () => this.initDragDrop()); - this.listenTo(this.view, 'remove', () => this.disable()); - }, + process: function () { + this.listenTo(this.view, 'after:render', () => this.initDragDrop()); + this.listenTo(this.view, 'remove', () => this.disable()); + }, - disable: function () { - let $el = this.view.$el.parent(); - /** @type {Element} */ - let el = $el.get(0); + disable: function () { + let $el = this.view.$el.parent(); + /** @type {Element} */ + let el = $el.get(0); - $el.off('drop'); + $el.off('drop'); + + if (!el) { + return; + } + + if (!this.onDragoverBind) { + return; + } + + el.removeEventListener('dragover', this.onDragoverBind); + el.removeEventListener('dragenter', this.onDragenterBind); + el.removeEventListener('dragleave', this.onDragleaveBind); + }, + + initDragDrop: function () { + this.disable(); + + let $el = this.view.$el.parent(); + let el = $el.get(0); + + $el.on('drop', e => { + e.preventDefault(); + e.stopPropagation(); + + e = e.originalEvent; + + if ( + e.dataTransfer && + e.dataTransfer.files && + e.dataTransfer.files.length === 1 && + this.dropEntered + ) { + this.removeDrop(); + + this.create(e.dataTransfer.files[0]); - if (!el) { return; } - if (!this.onDragoverBind) { - return; - } + this.removeDrop($el); + }); - el.removeEventListener('dragover', this.onDragoverBind); - el.removeEventListener('dragenter', this.onDragenterBind); - el.removeEventListener('dragleave', this.onDragleaveBind); - }, - initDragDrop: function () { - this.disable(); + this.dropEntered = false; - let $el = this.view.$el.parent(); - let el = $el.get(0); + this.onDragoverBind = this.onDragover.bind(this); + this.onDragenterBind = this.onDragenter.bind(this); + this.onDragleaveBind = this.onDragleave.bind(this); - $el.on('drop', e => { - e.preventDefault(); - e.stopPropagation(); + el.addEventListener('dragover', this.onDragoverBind); + el.addEventListener('dragenter', this.onDragenterBind); + el.addEventListener('dragleave', this.onDragleaveBind); + }, - e = e.originalEvent; + renderDrop: function () { + this.dropEntered = true; - if ( - e.dataTransfer && - e.dataTransfer.files && - e.dataTransfer.files.length === 1 && - this.dropEntered - ) { - this.removeDrop(); + let $backdrop = + $('
') + .css('pointer-events', 'none') + .append('') + .append(' ') + .append( + $('') + .text(this.view.getLanguage().translate('Create Document', 'labels', 'Document')) + ); - this.create(e.dataTransfer.files[0]); + this.view.$el.append($backdrop); + }, + + removeDrop: function () { + this.view.$el.find('> .dd-backdrop').remove(); + + this.dropEntered = false; + }, + + create: function (file) { + this.view + .actionQuickCreate() + .then(view => { + let fileView = view.getRecordView().getFieldView('file'); + + if (!fileView) { + let msg = "No 'file' field on the layout."; + + Espo.Ui.error(msg); + console.error(msg); return; } - this.removeDrop($el); - }); + if (fileView.isRendered()) { + fileView.uploadFile(file); + return; + } - this.dropEntered = false; - - this.onDragoverBind = this.onDragover.bind(this); - this.onDragenterBind = this.onDragenter.bind(this); - this.onDragleaveBind = this.onDragleave.bind(this); - - el.addEventListener('dragover', this.onDragoverBind); - el.addEventListener('dragenter', this.onDragenterBind); - el.addEventListener('dragleave', this.onDragleaveBind); - }, - - renderDrop: function () { - this.dropEntered = true; - - let $backdrop = - $('
') - .css('pointer-events', 'none') - .append('') - .append(' ') - .append( - $('') - .text(this.view.getLanguage().translate('Create Document', 'labels', 'Document')) - ); - - this.view.$el.append($backdrop); - }, - - removeDrop: function () { - this.view.$el.find('> .dd-backdrop').remove(); - - this.dropEntered = false; - }, - - create: function (file) { - this.view - .actionQuickCreate() - .then(view => { - let fileView = view.getRecordView().getFieldView('file'); - - if (!fileView) { - let msg = "No 'file' field on the layout."; - - Espo.Ui.error(msg); - console.error(msg); - - return; - } - - if (fileView.isRendered()) { - fileView.uploadFile(file); - - return; - } - - this.listenToOnce(fileView, 'after:render', () => { - fileView.uploadFile(file); - }); + this.listenToOnce(fileView, 'after:render', () => { + fileView.uploadFile(file); }); - }, + }); + }, - /** - * @param {DragEvent} e - */ - onDragover: function (e) { - e.preventDefault(); - }, + /** + * @param {DragEvent} e + */ + onDragover: function (e) { + e.preventDefault(); + }, - /** - * @param {DragEvent} e - */ - onDragenter: function (e) { - e.preventDefault(); + /** + * @param {DragEvent} e + */ + onDragenter: function (e) { + e.preventDefault(); - if (!e.dataTransfer.types || !e.dataTransfer.types.length) { - return; - } + if (!e.dataTransfer.types || !e.dataTransfer.types.length) { + return; + } - if (!~e.dataTransfer.types.indexOf('Files')) { - return; - } + if (!~e.dataTransfer.types.indexOf('Files')) { + return; + } - if (!this.dropEntered) { - this.renderDrop(); - } - }, + if (!this.dropEntered) { + this.renderDrop(); + } + }, - /** - * @param {DragEvent} e - */ - onDragleave: function (e) { - e.preventDefault(); + /** + * @param {DragEvent} e + */ + onDragleave: function (e) { + e.preventDefault(); - if (!this.dropEntered) { - return; - } + if (!this.dropEntered) { + return; + } - let fromElement = e.fromElement || e.relatedTarget; + let fromElement = e.fromElement || e.relatedTarget; - if ( - fromElement && - $.contains(this.view.$el.parent().get(0), fromElement) - ) { - return; - } + if ( + fromElement && + $.contains(this.view.$el.parent().get(0), fromElement) + ) { + return; + } - if ( - fromElement && - fromElement.parentNode && - fromElement.parentNode.toString() === '[object ShadowRoot]' - ) { - return; - } + if ( + fromElement && + fromElement.parentNode && + fromElement.parentNode.toString() === '[object ShadowRoot]' + ) { + return; + } - this.removeDrop(); - }, - }); - - _.extend(Handler.prototype, Bull.Events); - - return Handler; + this.removeDrop(); + }, }); + +_.extend(Handler.prototype, BullEvents); + +export default Handler;