new feat übersetzer und faq
This commit is contained in:
53
backend/static/faq.js
Normal file
53
backend/static/faq.js
Normal file
@@ -0,0 +1,53 @@
|
||||
(() => {
|
||||
function initFaqItem(item) {
|
||||
const summary = item.querySelector("summary");
|
||||
const answer = item.querySelector(".faq-answer");
|
||||
if (!summary || !answer) {
|
||||
return;
|
||||
}
|
||||
|
||||
let isAnimating = false;
|
||||
|
||||
summary.addEventListener("click", (event) => {
|
||||
event.preventDefault();
|
||||
if (isAnimating) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!item.open) {
|
||||
item.open = true;
|
||||
item.classList.remove("is-closing");
|
||||
item.classList.add("is-opening");
|
||||
const finishOpen = () => {
|
||||
item.classList.remove("is-opening");
|
||||
isAnimating = false;
|
||||
};
|
||||
isAnimating = true;
|
||||
answer.addEventListener("animationend", finishOpen, { once: true });
|
||||
window.setTimeout(
|
||||
finishOpen,
|
||||
window.matchMedia("(prefers-reduced-motion: reduce)").matches ? 0 : 360,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
isAnimating = true;
|
||||
item.classList.remove("is-opening");
|
||||
item.classList.add("is-closing");
|
||||
const finishClose = () => {
|
||||
item.classList.remove("is-closing");
|
||||
item.open = false;
|
||||
isAnimating = false;
|
||||
};
|
||||
answer.addEventListener("animationend", finishClose, { once: true });
|
||||
window.setTimeout(
|
||||
finishClose,
|
||||
window.matchMedia("(prefers-reduced-motion: reduce)").matches ? 0 : 360,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.querySelectorAll(".faq-item").forEach(initFaqItem);
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user