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