60 lines
2.1 KiB
JavaScript
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…";
|
|
}
|
|
});
|
|
}
|
|
})();
|