mirror of
https://github.com/koodiklinikka/nimilaput.git
synced 2026-01-26 11:24:02 +00:00
90 lines
2.0 KiB
JavaScript
90 lines
2.0 KiB
JavaScript
function handleImage(file, element) {
|
|
if (file && file.type.startsWith("image/")) {
|
|
const reader = new FileReader();
|
|
reader.onload = (event) => {
|
|
if (event.target) {
|
|
element.src = event.target.result;
|
|
}
|
|
};
|
|
reader.readAsDataURL(file);
|
|
} else {
|
|
alert("Please drop an image file.");
|
|
}
|
|
}
|
|
|
|
function handleUpload(event) {
|
|
event.preventDefault();
|
|
const element = event.target.parentElement.querySelector("img");
|
|
handleImage(event.target.files[0], element);
|
|
}
|
|
|
|
const handleDrop = (e) => {
|
|
e.preventDefault();
|
|
const element = e.currentTarget;
|
|
const file = e.dataTransfer.files[0];
|
|
handleImage(file, element);
|
|
};
|
|
|
|
const handleDragOver = (e) => {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
};
|
|
|
|
function slideCardIn(node) {
|
|
node.animate(
|
|
[
|
|
{ opacity: 0, transform: "translateY(-10%)" },
|
|
{ opacity: 1, transform: "" },
|
|
],
|
|
{
|
|
duration: 200,
|
|
fill: "both",
|
|
easing: "ease-out",
|
|
},
|
|
);
|
|
}
|
|
|
|
function slideCardOut(node) {
|
|
return new Promise((resolve) => {
|
|
const anim = node.animate(
|
|
[
|
|
{ opacity: 1, transform: "" },
|
|
{ opacity: 0, transform: "translateY(40%)" },
|
|
],
|
|
{
|
|
duration: 200,
|
|
fill: "both",
|
|
easing: "ease-in",
|
|
},
|
|
);
|
|
anim.onfinish = resolve;
|
|
});
|
|
}
|
|
|
|
function addCard() {
|
|
const laput = document.querySelector(".laput");
|
|
const template = document.querySelector("#lappu-template");
|
|
const lisalappuButton = document.querySelector(".lisalappu");
|
|
const clone = template.content.firstElementChild.cloneNode(true);
|
|
return laput.insertBefore(clone, lisalappuButton);
|
|
}
|
|
|
|
const handleClickAdd = () => {
|
|
const node = addCard();
|
|
slideCardIn(node);
|
|
};
|
|
|
|
async function handleYeet(event) {
|
|
const lappu = event.target.closest(".lappu");
|
|
if (lappu) {
|
|
await slideCardOut(lappu);
|
|
lappu.parentNode.removeChild(lappu);
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
|
|
const handleBoot = () => {
|
|
addCard();
|
|
document.querySelector(".hakulappu").hidden = !window.crypto.subtle;
|
|
};
|