Skip to content

Instantly share code, notes, and snippets.

@johannschopplich
Created June 7, 2023 17:19
Show Gist options
  • Save johannschopplich/474164c923fcdf915ba61fa04f9095eb to your computer and use it in GitHub Desktop.
Save johannschopplich/474164c923fcdf915ba61fa04f9095eb to your computer and use it in GitHub Desktop.
Nuxt plugin for `vue-router-better-scroller` with with Suspense route resolution
import { createRouterScroller } from 'vue-router-better-scroller'
interface ScrollPositionCoordinates {
behavior?: ScrollOptions['behavior']
left?: number
top?: number
}
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(
createRouterScroller({
selectors: {
// window: true,
'#scroll-container': ({ type, savedPosition }) =>
new Promise<ScrollPositionCoordinates>((resolve) => {
// Handle Suspense route resolution
nuxtApp.hooks.hookOnce('page:finish', () => {
if (type === 'push') {
resolve({ top: 0, left: 0 })
} else if (type === 'history') {
resolve(savedPosition || { top: 0, left: 0 })
}
})
}),
},
})
)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment