Sha256: 5c87ae2afd77100cafa36ef40d5e9d4ed6f6fb36645425b880a37deec90069f7
Contents?: true
Size: 1.48 KB
Versions: 3
Compression:
Stored size: 1.48 KB
Contents
document.addEventListener("turbo:visit", () => { let main = document.querySelector("main"); if (main.dataset.turboTransition == "false") return; let [movement, scale] = ["15px", "0.99"]; if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) { [movement, scale] = ["7px", "1"]; } main.style.transformOrigin = "50% 0%"; main.dataset.animatingOut = true; main.animate( [ { opacity: 1, transform: "translateY(0px) scale(1)" }, { opacity: 0, transform: `translateY(${movement}) scale(${scale})` }, ], { duration: 300, easing: "cubic-bezier(0.45, 0, 0.55, 1)", fill: "forwards", }, ); Promise.all(main.getAnimations().map((animation) => animation.finished)).then( () => { if (main.dataset.animatingOut) main.style.visibility = "hidden"; }, ); }); document.addEventListener("turbo:load", () => { let main = document.querySelector("main"); if (main.dataset.turboTransition == "false") return; let [movement, scale] = ["-10px", "0.99"]; if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) { [movement, scale] = ["-5px", "1"]; } main.style.visibility = "visible"; main.style.transformOrigin = "50% 0%"; delete main.dataset.animatingOut; main.animate( [ { opacity: 0, transform: `translateY(${movement}) scale(${scale})` }, { opacity: 1, transform: "translateY(0px) scale(1)" }, ], { duration: 150, easing: "cubic-bezier(0.45, 0, 0.55, 1)" }, ); });
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
staticky-0.2.0 | site_template/frontend/turbo_transitions.js |
staticky-0.1.1 | site_template/frontend/turbo_transitions.js |
staticky-0.1.0 | site_template/frontend/turbo_transitions.js |