From bde002e6b7d3b33d5ca53cc2a1b11e644c74761c Mon Sep 17 00:00:00 2001 From: nate smith Date: Sat, 17 Aug 2024 14:27:45 -0500 Subject: [PATCH] improve dragdrop experience --- web/assets/main.js | 29 ++++++++++++++++++++--------- web/web.go | 2 -- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/web/assets/main.js b/web/assets/main.js index b9cf798..bdd5443 100644 --- a/web/assets/main.js +++ b/web/assets/main.js @@ -155,15 +155,7 @@ class PoemLine extends HTMLDivElement { const lid = Math.floor(Math.random()*100); this.setAttribute("id", `line-${lid}`); - this.addEventListener("dragover", (e) => { - e.preventDefault(); - e.dataTransfer.dropEffect = "move"; - }); - this.addEventListener("drop", (e) => { - e.preventDefault(); - const lid = e.dataTransfer.getData("text/plain"); - this.closest(".line").before(document.getElementById(lid)); - }); + this.addEventListener("dragstart", (e) => { e.dataTransfer.dropEffect = "move"; e.dataTransfer.setData("text/plain", this.getAttribute("id")); @@ -223,6 +215,25 @@ class PoemLines extends HTMLDivElement { e.preventDefault(); } }); + this.addEventListener("dragenter", (e) => { + e.preventDefault(); + $$(".movetarget").forEach((el) => { + el.classList.remove("movetarget"); + }) + const pl = e.target.closest("div.line"); + pl.classList.add("movetarget"); + }); + this.addEventListener("dragover", (e) => { + e.preventDefault(); + e.dataTransfer.dropEffect = "move"; + }); + this.addEventListener("drop", (e) => { + e.preventDefault(); + const pl = e.target.closest("div.line"); + pl.classList.remove("movetarget"); + const lid = e.dataTransfer.getData("text/plain"); + pl.before(document.getElementById(lid)); + }); } init() { diff --git a/web/web.go b/web/web.go index 43b18ca..4137c50 100644 --- a/web/web.go +++ b/web/web.go @@ -14,8 +14,6 @@ import ( "github.com/vilmibm/trunkless/db" ) -// TODO detect max id on startup - type source struct { ID string Name string