elk/plugins/scroll-to-top.ts
2023-01-07 18:29:36 +01:00

16 lines
512 B
TypeScript

export default defineNuxtPlugin((nuxt) => {
return {
provide: {
scrollToTop: (evt?: MouseEvent | KeyboardEvent) => {
const path = evt?.composedPath?.() as HTMLElement[]
const el = path?.find(el => el.tagName?.toUpperCase() === 'A') as HTMLAnchorElement
if (el && el.href) {
if (nuxt.$preventScrollToTop(new URL(el.href, import.meta.url).pathname))
return
}
window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })
},
},
}
})