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`;
|
||
|
|
}
|
||
|
|
})();
|