diff --git a/frontend/app.js b/frontend/app.js index 1c08349..0043698 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -59,6 +59,7 @@ function noteApp() { expandedFolders: new Set(), draggedNote: null, draggedFolder: null, + dragOverFolder: null, // Track which folder is being hovered during drag // Scroll sync state isScrolling: false, @@ -441,15 +442,25 @@ function noteApp() {
@@ -665,12 +676,21 @@ function noteApp() { // Move mode: drag to move note this.draggedNote = notePath; event.dataTransfer.effectAllowed = 'move'; + // Make drag image semi-transparent + if (event.target) { + event.target.style.opacity = '0.5'; + } } }, onNoteDragEnd() { this.draggedNote = null; this.draggedNoteForLink = null; + this.dragOverFolder = null; + // Reset opacity of all note items + document.querySelectorAll('.note-item').forEach(el => { + el.style.opacity = '1'; + }); }, // Handle dragover on editor to show cursor position @@ -776,12 +796,21 @@ function noteApp() { }, // Folder drag handlers - onFolderDragStart(folderPath) { + onFolderDragStart(folderPath, event) { this.draggedFolder = folderPath; + // Make drag image semi-transparent + if (event && event.target) { + event.target.style.opacity = '0.5'; + } }, onFolderDragEnd() { this.draggedFolder = null; + this.dragOverFolder = null; + // Reset opacity of all folder items + document.querySelectorAll('.folder-item').forEach(el => { + el.style.opacity = '1'; + }); }, async onFolderDrop(targetFolderPath) { diff --git a/frontend/index.html b/frontend/index.html index c4e1030..766a701 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -350,6 +350,7 @@ /* Folder tree styling */ .folder-item { user-select: none; + transition: all 0.2s ease; } .folder-item:hover { @@ -362,6 +363,29 @@ .note-item { padding-left: 1.5rem; + transition: all 0.2s ease; + } + + /* Drag and drop improvements */ + .note-item[draggable="true"], + .folder-item[draggable="true"] { + cursor: grab; + } + + .note-item[draggable="true"]:active, + .folder-item[draggable="true"]:active { + cursor: grabbing; + } + + /* Smooth transitions for drag states */ + .folder-item, + .note-item { + transition: opacity 0.2s ease, transform 0.15s ease, background-color 0.15s ease, border-color 0.15s ease; + } + + /* Better drop zone visibility */ + .folder-item:has(+ .folder-contents) { + position: relative; } .hover-buttons { @@ -893,13 +917,19 @@
-
- 📂 Drop here to move to root folder +
+ 📂 + Drop here to move to root folder