Skip to content
Snippets Groups Projects
Commit 4f0d7275 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

drag and drop

parent 460b37a8
No related branches found
No related tags found
1 merge request!8Vueify messages
Pipeline #10956 failed
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
:id="`message_${message.id}`" :id="`message_${message.id}`"
:class="isMessageRead(message) ? 'read' : 'unread'" :class="isMessageRead(message) ? 'read' : 'unread'"
draggable="true" draggable="true"
@dragstart="dragStart(message)" @dragend="dragStop()" @dragstart="dragStart(message, $event)" @dragend="dragStop()"
> >
<td class="hidden-small-down"> <td class="hidden-small-down">
<input type="checkbox" :checked="messageIsSelected(message)" :value="message.id" @click="selectedMessage(message)"> <input type="checkbox" :checked="messageIsSelected(message)" :value="message.id" @click="selectedMessage(message)">
...@@ -82,13 +82,18 @@ ...@@ -82,13 +82,18 @@
<sidebar-widget :title="$gettext('Schlagwörter')"> <sidebar-widget :title="$gettext('Schlagwörter')">
<template #content> <template #content>
<ul class="widget-list widget-links sidebar-views"> <ul class="widget-list widget-links sidebar-views">
<li class="active"> <li :class="{active: !selectedTag}">
<a href="#" @click.prevent> <a href="#" @click.prevent="selectedTag = null">
{{ $gettext('Alle Nachrichten') }} {{ $gettext('Alle Nachrichten') }}
</a> </a>
</li> </li>
<li v-for="tag in tags" :key="`tag-${tag}`" :class="{dropzone: isDragging}" @drop="drop()"> <li v-for="tag in tags" :key="`tag-${tag}`"
<a href="#" @click.prevent> :class="{active: selectedTag === tag, dropzone: isDragging, draggedover: draggedOverTag === tag}"
@drop="drop(tag, $event)"
@dragover.prevent="draggedOver(tag)" @dragenter.prevent
@dragleave="draggedOver(null)"
>
<a href="#" @click.prevent="selectedTag = tag">
{{ tag }} {{ tag }}
</a> </a>
</li> </li>
...@@ -118,6 +123,8 @@ export default { ...@@ -118,6 +123,8 @@ export default {
data () { data () {
return { return {
selected: [], selected: [],
selectedTag: null,
draggedOverTag: null,
pageOptions: { pageOptions: {
offset: 0, offset: 0,
limit: 30, limit: 30,
...@@ -230,15 +237,23 @@ export default { ...@@ -230,15 +237,23 @@ export default {
this.observed = element; this.observed = element;
this.observer.observe(this.observed); this.observer.observe(this.observed);
}, },
dragStart(message) { dragStart(message, event) {
this.isDragging = true; this.isDragging = true;
event.dataTransfer.dropEffect = 'move';
event.dataTransfer.effectAllowed = 'move';
event.dataTransfer.setData('messageId', message.id);
}, },
dragStop(message) { dragStop(message) {
this.isDragging = false; this.isDragging = false;
}, },
drop() { drop(tag, event) {
console.log('dropped'); const messageId = event.dataTransfer.getData('messageId');
console.log('dropped message on tag', messageId, tag);
}, },
draggedOver(tag) {
this.draggedOverTag = tag;
}
}, },
computed: { computed: {
...mapGetters({ ...mapGetters({
...@@ -267,7 +282,10 @@ export default { ...@@ -267,7 +282,10 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.dropzone { .dropzone {
background-color: var(--red); background-color: var(--red-20);
}
.dropzone.draggedover {
background-color: var(--red-80);
} }
.fade-enter-active, .fade-enter-active,
......
...@@ -23,7 +23,6 @@ export default new Vuex.Store({ ...@@ -23,7 +23,6 @@ export default new Vuex.Store({
actions: { actions: {
async [LOAD_TAGS]({ commit }) { async [LOAD_TAGS]({ commit }) {
const response = await jsonapiClient.get('/messages/tags'); const response = await jsonapiClient.get('/messages/tags');
console.log('response', response);
commit(SET_TAGS, await response.data); commit(SET_TAGS, await response.data);
}, },
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment