feat: make the dropzone responsive

This commit is contained in:
2025-09-01 00:08:11 +02:00
parent 3172f90999
commit 6db6127522

View File

@@ -1,7 +1,6 @@
(() => { (() => {
"use strict"; "use strict";
const DEFAULT_DROPZONE_TEXT = "Drag & drop files here or click to select";
const state = { const state = {
config: null, config: null,
files: {}, files: {},
@@ -187,13 +186,14 @@
// ===== ui =============================== // ===== ui ===============================
function uiBindEvents() { function uiBindEvents() {
window.addEventListener(
"resize",
() => (state.ui.dropzone.innerHTML = uiGetDropzoneText())
);
state.ui.dropzone.addEventListener("click", () => state.ui.dropzone.addEventListener("click", () =>
state.ui.fileInput.click() state.ui.fileInput.click()
); );
state.ui.fileInput.addEventListener("change", () => {
if (state.ui.fileInput.files.length > 0)
uploadStart(state.ui.fileInput.files);
});
state.ui.dropzone.addEventListener("dragover", (e) => { state.ui.dropzone.addEventListener("dragover", (e) => {
e.preventDefault(); e.preventDefault();
state.ui.dropzone.style.borderColor = "#0fff50"; state.ui.dropzone.style.borderColor = "#0fff50";
@@ -206,6 +206,11 @@
state.ui.dropzone.style.borderColor = "#888"; state.ui.dropzone.style.borderColor = "#888";
if (e.dataTransfer.files.length > 0) uploadStart(e.dataTransfer.files); if (e.dataTransfer.files.length > 0) uploadStart(e.dataTransfer.files);
}); });
state.ui.fileInput.addEventListener("change", () => {
if (state.ui.fileInput.files.length > 0)
uploadStart(state.ui.fileInput.files);
});
} }
function uiBuildElements() { function uiBuildElements() {
@@ -222,7 +227,7 @@
const divDropzone = document.createElement("div"); const divDropzone = document.createElement("div");
divDropzone.className = "dropzone"; divDropzone.className = "dropzone";
divDropzone.id = "dropzone"; divDropzone.id = "dropzone";
divDropzone.innerHTML = DEFAULT_DROPZONE_TEXT; divDropzone.innerHTML = uiGetDropzoneText();
divDropzone.style.display = "none"; divDropzone.style.display = "none";
document.body.appendChild(divDropzone); document.body.appendChild(divDropzone);
@@ -317,6 +322,14 @@
return (bytesPerSec / (1024 * 1024)).toFixed(2) + " MB/s"; return (bytesPerSec / (1024 * 1024)).toFixed(2) + " MB/s";
} }
function uiGetDropzoneText() {
if (window.innerWidth <= 480) {
return "Tap to upload files";
}
return "Drag & drop files here or click to upload";
}
function uiInitProgress() { function uiInitProgress() {
state.ui.overallProgressContainer.style.display = "block"; state.ui.overallProgressContainer.style.display = "block";
state.ui.overallProgress.value = 0; state.ui.overallProgress.value = 0;
@@ -335,7 +348,7 @@
if (state.errorTimeout) clearTimeout(state.errorTimeout); if (state.errorTimeout) clearTimeout(state.errorTimeout);
state.errorTimeout = setTimeout(() => { state.errorTimeout = setTimeout(() => {
state.ui.dropzone.innerHTML = DEFAULT_DROPZONE_TEXT; state.ui.dropzone.innerHTML = uiGetDropzoneText();
state.ui.dropzone.classList.remove(type); state.ui.dropzone.classList.remove(type);
state.errorTimeout = null; state.errorTimeout = null;
}, duration); }, duration);