32 lines
785 B
TypeScript
32 lines
785 B
TypeScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
import { forceInstanceChooser } from './guards'
|
|
import routes from './routes'
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(import.meta.env.VUE_APP_ROUTER_BASE_URL as string ?? '/'),
|
|
linkActiveClass: 'active',
|
|
routes,
|
|
|
|
scrollBehavior (to, from, savedPosition) {
|
|
if (to.meta.preserveScrollPosition) {
|
|
return savedPosition ?? { left: 0, top: 0 }
|
|
}
|
|
|
|
return new Promise(resolve => {
|
|
setTimeout(() => {
|
|
if (to.hash) {
|
|
resolve({ el: to.hash, behavior: 'smooth' })
|
|
}
|
|
|
|
resolve(savedPosition ?? { left: 0, top: 0 })
|
|
}, 100)
|
|
})
|
|
}
|
|
})
|
|
|
|
router.beforeEach((to, from, next) => {
|
|
return forceInstanceChooser(to, from, next)
|
|
})
|
|
|
|
export default router
|