Files

60 lines
2.1 KiB
JavaScript

(function () {
"use strict";
// ---- Alternância de tema (persistida em localStorage) ----
function currentTheme() {
var explicit = document.documentElement.getAttribute("data-theme");
if (explicit) return explicit;
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
}
var toggle = document.getElementById("themeToggle");
if (toggle) {
toggle.addEventListener("click", function () {
var next = currentTheme() === "dark" ? "light" : "dark";
document.documentElement.setAttribute("data-theme", next);
try { localStorage.setItem("theme", next); } catch (e) {}
});
}
// ---- Área de upload (clique + arrastar/soltar + nome dos arquivos) ----
var drop = document.getElementById("filedrop");
var input = document.getElementById("fileInput");
var label = document.getElementById("filedropText");
var form = document.getElementById("uploadForm");
var btn = document.getElementById("uploadBtn");
function describe(files) {
if (!files || !files.length) return "Clique ou arraste arquivos aqui";
if (files.length === 1) return files[0].name;
return files.length + " arquivos selecionados";
}
if (input && label) {
input.addEventListener("change", function () {
label.textContent = describe(input.files);
});
}
if (drop && input) {
["dragenter", "dragover"].forEach(function (ev) {
drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.add("drag"); });
});
["dragleave", "drop"].forEach(function (ev) {
drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.remove("drag"); });
});
drop.addEventListener("drop", function (e) {
if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {
input.files = e.dataTransfer.files;
if (label) label.textContent = describe(input.files);
}
});
}
if (form && btn) {
form.addEventListener("submit", function () {
if (input && input.files && input.files.length) {
btn.disabled = true;
btn.textContent = "Processando…";
}
});
}
})();