feat: folder upload - deel 3

This commit is contained in:
kodi
2026-03-14 07:10:49 +01:00
parent 287dddb7b3
commit f0b04fd4ee
6 changed files with 104 additions and 11 deletions
+42 -6
View File
@@ -325,7 +325,11 @@ function infoElements() {
function uploadElements() {
return {
menu: document.getElementById("upload-menu"),
button: document.getElementById("upload-btn"),
menuToggle: document.getElementById("upload-menu-toggle"),
menuPopup: document.getElementById("upload-menu-popup"),
folderButton: document.getElementById("upload-folder-btn"),
input: document.getElementById("upload-input"),
progress: document.getElementById("upload-progress"),
target: document.getElementById("upload-target"),
@@ -477,6 +481,25 @@ function setUploadProgressVisible(visible) {
uploadElements().progress.classList.toggle("hidden", !visible);
}
function closeUploadMenu() {
const elements = uploadElements();
if (!elements.menuPopup || !elements.menuToggle) {
return;
}
elements.menuPopup.classList.add("hidden");
elements.menuToggle.setAttribute("aria-expanded", "false");
}
function toggleUploadMenu() {
const elements = uploadElements();
if (!elements.menuPopup || !elements.menuToggle) {
return;
}
const nextOpen = elements.menuPopup.classList.contains("hidden");
elements.menuPopup.classList.toggle("hidden", !nextOpen);
elements.menuToggle.setAttribute("aria-expanded", nextOpen ? "true" : "false");
}
function resetUploadProgress() {
const elements = uploadElements();
uploadState.active = false;
@@ -523,6 +546,7 @@ function openUploadPicker() {
if (uploadState.active) {
return;
}
closeUploadMenu();
uploadState.targetPath = activePaneState().currentPath;
const elements = uploadElements();
elements.input.value = "";
@@ -533,6 +557,7 @@ function openFolderPicker() {
if (uploadState.active) {
return;
}
closeUploadMenu();
folderUploadPlanState = {
targetPane: state.activePane,
targetPath: activePaneState().currentPath,
@@ -3040,6 +3065,11 @@ function clearSelectionForActivePane() {
}
function handleKeyboardShortcuts(event) {
if (event.key === "Escape" && !uploadElements().menuPopup.classList.contains("hidden")) {
event.preventDefault();
closeUploadMenu();
return;
}
if (isInfoOpen()) {
if (event.key === "Escape") {
event.preventDefault();
@@ -3264,13 +3294,12 @@ function setupEvents() {
setupPaneEvents("right");
document.addEventListener("keydown", handleKeyboardShortcuts);
document.getElementById("theme-toggle").onclick = toggleTheme;
document.getElementById("upload-btn").onclick = (event) => {
if (event.altKey) {
openFolderPicker();
return;
}
openUploadPicker();
document.getElementById("upload-btn").onclick = openUploadPicker;
document.getElementById("upload-menu-toggle").onclick = (event) => {
event.stopPropagation();
toggleUploadMenu();
};
document.getElementById("upload-folder-btn").onclick = openFolderPicker;
document.getElementById("settings-btn").onclick = () => openSettings("general");
document.getElementById("view-btn").onclick = openViewer;
document.getElementById("edit-btn").onclick = openEditor;
@@ -3280,6 +3309,13 @@ function setupEvents() {
document.getElementById("move-btn").onclick = openF6Flow;
document.getElementById("mkdir-btn").onclick = createFolderForActivePane;
uploadElements().input.onchange = handleUploadSelection;
document.addEventListener("click", (event) => {
const elements = uploadElements();
if (!elements.menu || elements.menu.contains(event.target)) {
return;
}
closeUploadMenu();
});
const rename = renameElements();
rename.closeButton.onclick = closeRenamePopup;