UNPKG

alpinejs-scroll-to

Version:

Easily add scroll to functionality with options, powered by Alpine JS 🐭

2 lines (1 loc) 677 B
(()=>{function i(t,{offsetHeader:e=!1,useSmooth:o=!0}){let n=t.href.split("#")[1],l=document.getElementById(n).getBoundingClientRect(),c=0;e&&(c=document.querySelector("[x-scroll-to-header]").clientHeight),window.scrollTo({top:l.top-c,left:0,behavior:o?"smooth":"auto"})}function s({targetId:t,offsetHeader:e=!1,useSmooth:o=!0}){let r=document.getElementById(t).getBoundingClientRect(),l=0;e&&(l=document.querySelector("[x-scroll-to-header]").clientHeight),window.scrollTo({top:r.top-l,left:0,behavior:o?"smooth":"auto"})}function u(t){t.magic("scrollTo",(e,{})=>o=>{if(o.targetId)return s(o);i(e,o)})}document.addEventListener("alpine:init",()=>window.Alpine.plugin(u));})();