update
All checks were successful
release-tag / release-image (push) Successful in 1m52s

This commit is contained in:
2025-11-08 21:21:22 +01:00
parent 8a4ec32861
commit c5a7f90226
58 changed files with 3260 additions and 540 deletions

8
assets/js/alpine.min.js vendored Normal file

File diff suppressed because one or more lines are too long

20
assets/js/chart.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
assets/js/collapse.js Normal file
View File

@@ -0,0 +1 @@
(function(){var triggers=document.querySelectorAll("[data-collapse-target]");var collapses=document.querySelectorAll("[data-collapse]");if(triggers&&collapses){Array.from(triggers).forEach(function(trigger){return Array.from(collapses).forEach(function(collapse){if(trigger.dataset.collapseTarget===collapse.dataset.collapse){trigger.addEventListener("click",function(){if(collapse.style.height&&collapse.style.height!=="0px"){collapse.style.height=0;collapse.style.overflow="hidden";trigger.removeAttribute("open")}else{collapse.style.height="".concat(collapse.children[0].clientHeight,"px");collapse.style.overflow="visible";trigger.setAttribute("open","")}})}})})}})();

50
assets/js/counter.js Normal file
View File

@@ -0,0 +1,50 @@
document.addEventListener("DOMContentLoaded", function () {
var elements = document.querySelectorAll(".scroll-counter")
elements.forEach(function (item) {
item.counterAlreadyFired = false
item.counterSpeed = item.getAttribute("data-counter-time") / 45
item.counterTarget = +item.innerText
item.counterCount = 0
item.counterStep = item.counterTarget / item.counterSpeed
item.updateCounter = function () {
console.log(45);
item.counterCount = item.counterCount + item.counterStep
item.innerText = Math.ceil(item.counterCount)
if (item.counterCount < item.counterTarget) {
setTimeout(item.updateCounter, item.counterSpeed)
} else {
item.innerText = item.counterTarget
}
}
})
var isElementVisible = function isElementVisible(el) {
var scroll = window.scrollY || window.pageYOffset
var boundsTop = el.getBoundingClientRect().top + scroll
var viewport = {
top: scroll,
bottom: scroll + window.innerHeight,
}
var bounds = {
top: boundsTop,
bottom: boundsTop + el.clientHeight,
}
return (
(bounds.bottom >= viewport.top && bounds.bottom <= viewport.bottom) ||
(bounds.top <= viewport.bottom && bounds.top >= viewport.top)
)
}
var handleScroll = function handleScroll() {
elements.forEach(function (item, id) {
if (true === item.counterAlreadyFired) return
if (!isElementVisible(item)) return
item.updateCounter()
item.counterAlreadyFired = true
})
}
window.addEventListener("scroll", handleScroll)
})