Initialize the repository with the core Go backend architecture and a frontend mockup for warpbox.dev, a self-hosted file-sharing application. - Set up Go backend modules for configuration, HTTP server, middleware, handlers, and templates. - Add local development scripts, environment templates, and basic project configuration. - Include a React-based frontend mockup under the docs directory.
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
(function () {
|
|
const dropZone = document.querySelector(".drop-zone");
|
|
const fileInput = document.querySelector("#file-input");
|
|
|
|
if (!dropZone || !fileInput) {
|
|
return;
|
|
}
|
|
|
|
["dragenter", "dragover"].forEach((eventName) => {
|
|
dropZone.addEventListener(eventName, (event) => {
|
|
event.preventDefault();
|
|
dropZone.classList.add("is-dragging");
|
|
});
|
|
});
|
|
|
|
["dragleave", "drop"].forEach((eventName) => {
|
|
dropZone.addEventListener(eventName, (event) => {
|
|
event.preventDefault();
|
|
dropZone.classList.remove("is-dragging");
|
|
});
|
|
});
|
|
|
|
dropZone.addEventListener("drop", (event) => {
|
|
if (event.dataTransfer && event.dataTransfer.files.length > 0) {
|
|
fileInput.files = event.dataTransfer.files;
|
|
updateDropLabel(event.dataTransfer.files.length);
|
|
}
|
|
});
|
|
|
|
fileInput.addEventListener("change", () => {
|
|
updateDropLabel(fileInput.files.length);
|
|
});
|
|
|
|
function updateDropLabel(count) {
|
|
const title = dropZone.querySelector(".drop-title");
|
|
if (!title) {
|
|
return;
|
|
}
|
|
|
|
title.textContent = count === 1 ? "1 file selected" : `${count} files selected`;
|
|
}
|
|
})();
|