From fa96231b286d052cffe743911c6004d49f2a7d90 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Wed, 23 Mar 2022 08:54:48 +0000 Subject: [PATCH] drag and drop only accepts files and fix class handling (remove direct dom... --- resources/vue/components/BlubberThread.vue | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/resources/vue/components/BlubberThread.vue b/resources/vue/components/BlubberThread.vue index dcddc2887e4..5feb8bde17a 100644 --- a/resources/vue/components/BlubberThread.vue +++ b/resources/vue/components/BlubberThread.vue @@ -1,5 +1,5 @@ <template> - <div class="blubber_thread" + <div class="blubber_thread" :class="{dragover: dragging}" :id="'blubberthread_' + thread_data.thread_posting.thread_id" @dragover.prevent="dragover" @dragleave.prevent="dragleave" @drop.prevent="upload"> @@ -92,7 +92,8 @@ data: function () { return { already_loading_up: 0, - already_loading_down: 0 + already_loading_down: 0, + dragging: false }; }, props: ['thread_data'], @@ -211,7 +212,13 @@ }); }, upload (event) { - let files = typeof event.dataTransfer !== 'undefined' + const viaDragAndDrop = event.dataTransfer !== undefined; + + if (viaDragAndDrop && !event.dataTransfer.types.includes('Files')) { + return; + } + + let files = viaDragAndDrop ? event.dataTransfer.files // file drop : event.target.files; // upload button let thread = this; @@ -245,11 +252,11 @@ this.dragleave(); }, - dragover () { - $(this.$el).addClass('dragover'); + dragover (event) { + this.dragging = event.dataTransfer.types.includes('Files'); }, - dragleave () { - $(this.$el).removeClass('dragover'); + dragleave (event) { + this.dragging = false; }, getUserProfileURL (user_id, username) { if (username) { -- GitLab