feat: initialize warpbox.dev project structure and backend
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.
This commit is contained in:
42
backend/static/js/app.js
Normal file
42
backend/static/js/app.js
Normal file
@@ -0,0 +1,42 @@
|
||||
(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`;
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user