From 8a7dcbe7bff4f240db8756454582c81ed0d5f5cf Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 20 Mar 2025 00:13:09 -0400 Subject: [PATCH] enhanced folder management helper --- README.md | 2 +- index.html | 35 +++++++++++++++++++---------------- main.js | 23 +++++++++++++++++++---- styles.css | 44 +++++++++++++++++++++++++++++--------------- 4 files changed, 68 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index f2f0238..43f08a2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Multi File Upload Editor is a lightweight, secure web application for uploading, --- -# Features +## Features - **Multiple File/Folder Uploads with Progress:** - Users can select and upload multiple files & folders at once. diff --git a/index.html b/index.html index fe8dc37..59e30cd 100644 --- a/index.html +++ b/index.html @@ -151,10 +151,17 @@ - + +
-
-
Folder Navigation & Management
+
+ +
+ Folder Navigation & Management + +
@@ -204,19 +211,15 @@
-
-
- - info - Folder Navigation & Management Help Info - -
    -
  • Click on a folder in the tree to view its files.
  • -
  • Use [-] to collapse and [+] to expand folders.
  • -
  • Select a folder and click "Create Folder" to add a subfolder.
  • -
  • To rename or delete a folder, select it and then click the appropriate button.
  • -
-
+ +
diff --git a/main.js b/main.js index 989b556..d5eead0 100644 --- a/main.js +++ b/main.js @@ -24,7 +24,7 @@ function loadCsrfToken() { // Set global variables. window.csrfToken = data.csrf_token; window.SHARE_URL = data.share_url; - + // Update (or create) the CSRF meta tag. let metaCSRF = document.querySelector('meta[name="csrf-token"]'); if (!metaCSRF) { @@ -33,7 +33,7 @@ function loadCsrfToken() { document.head.appendChild(metaCSRF); } metaCSRF.setAttribute('content', data.csrf_token); - + // Update (or create) the share URL meta tag. let metaShare = document.querySelector('meta[name="share-url"]'); if (!metaShare) { @@ -123,6 +123,21 @@ document.addEventListener("DOMContentLoaded", function () { initFileActions(); initUpload(); loadFolderTree(); + const helpBtn = document.getElementById("folderHelpBtn"); + const helpTooltip = document.getElementById("folderHelpTooltip"); + helpBtn.addEventListener("click", function () { + // Toggle display of the tooltip. + if (helpTooltip.style.display === "none" || helpTooltip.style.display === "") { + helpTooltip.style.display = "block"; + } else { + helpTooltip.style.display = "none"; + } + // Set the icon color based on dark mode. + const helpIcon = document.querySelector("#folderHelpBtn > i.material-icons.folder-help-icon"); + if (helpIcon) { + helpIcon.style.color = document.body.classList.contains("dark-mode") ? "#ffa500" : "orange"; + } + }); } else { console.warn("User not authenticated. Data loading deferred."); } @@ -131,9 +146,9 @@ document.addEventListener("DOMContentLoaded", function () { // --- Auto-scroll During Drag --- // Adjust these values as needed: const SCROLL_THRESHOLD = 50; // pixels from edge to start scrolling - const SCROLL_SPEED = 10; // pixels to scroll per event + const SCROLL_SPEED = 20; // pixels to scroll per event - document.addEventListener("dragover", function(e) { + document.addEventListener("dragover", function (e) { if (e.clientY < SCROLL_THRESHOLD) { window.scrollBy(0, -SCROLL_SPEED); } else if (e.clientY > window.innerHeight - SCROLL_THRESHOLD) { diff --git a/styles.css b/styles.css index b334ef0..94eb93a 100644 --- a/styles.css +++ b/styles.css @@ -183,6 +183,30 @@ body.dark-mode header { background-color: rgba(255, 255, 255, 0.2); } +/* Folder Help Tooltip - Light Mode */ +.folder-help-tooltip { + background-color: #fff; + color: #333; + border: 1px solid #ccc; + border-radius: 4px; + padding: 10px; + box-shadow: 2px 2px 6px rgba(0,0,0,0.2); +} + +/* Folder Help Tooltip - Dark Mode */ +body.dark-mode .folder-help-tooltip { + background-color: #333 !important; + color: #eee !important; + border: 1px solid #555 !important; +} +#folderHelpBtn i.material-icons.folder-help-icon { + -webkit-text-fill-color: orange !important; + color: inherit !important; +} + +body.dark-mode #folderHelpBtn i.material-icons.folder-help-icon { + -webkit-text-fill-color: #ffa500 !important; /* or another color for dark mode */ +} /************************************************************/ /* RESPONSIVE HEADER FIXES */ /************************************************************/ @@ -1561,21 +1585,6 @@ body.dark-mode #searchInput { border: 1px solid #555; } -.folder-explanation { - margin-top: 5px; - padding: 5px; - font-size: 12px; - color: #555; - background-color: solid transparent; - border: 1px solid transparent; - border-radius: 2px; -} - -body.dark-mode .folder-explanation { - color: #ddd; - background-color: solid transparent; - border: 1px solid transparent; -} body.dark-mode .CodeMirror { background: #1e1e1e !important; @@ -1635,4 +1644,9 @@ body.dark-mode .CodeMirror-matchingbracket { .drop-hover { background-color: #e0e0e0; border: 1px dashed #666; +} + +body.dark-mode .drop-hover { + background-color: rgba(255, 255, 255, 0.1) !important; + border-bottom: 1px dashed #ffffff !important; } \ No newline at end of file