diff options
Diffstat (limited to 'src/router/index.ts')
-rw-r--r-- | src/router/index.ts | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..8165667 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,71 @@ +import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router"; +import Home from "../views/Home.vue"; +import NotFound from "../views/NotFound.vue"; +import redirects from "./redirects"; + +const routes: Array<RouteRecordRaw> = [ + { + path: "/", + name: "home", + component: Home, + }, + { + path: "/news", + name: "news", + component: () => import(/* webpackChunkName: "news" */ "../views/NewsArchive.vue"), + }, + { + path: "/about", + name: "about", + component: () => import(/* webpackChunkName: "about" */ "../views/About.vue"), + }, + { + path: "/support", + name: "support", + component: () => import(/* webpackChunkName: "support" */ "../views/Support.vue"), + }, + { + path: "/recover/password:emailToken(.*)", + alias: ["/recover/username:emailToken(.*)"], + name: "account recovery", + component: () => import(/* webpackChunkName: "recovery" */ "../views/AccountRecovery.vue"), + }, + { + path: "/register", + name: "registration", + component: () => import(/* webpackChunkName: "registration" */ "../views/Registration.vue"), + }, + { + path: "/404:pathMatch(.*)", + alias: "/:pathMatch(.*)", + name: "not found", + component: NotFound, + }, + ...redirects, +]; + +const router = createRouter({ + history: createWebHistory(process.env.BASE_URL), + routes, +}); + +router.afterEach((to,) => { + const mainTitle = document.querySelector("#app > .content > h1"); + + // scroll to the title if we're below it + if (mainTitle) { + mainTitle.scrollIntoView({ + block: "nearest", // FIXME: weird behaviour in firefox! + inline: "nearest", + behavior: "smooth", + }); + } + + if (to.name && typeof to.name === "string" && to.path !== "/") { + document.title = `${process.env.VUE_APP_TITLE} - ${to.name[0].toUpperCase() + to.name.slice(1)}`; + } else { + document.title = process.env.VUE_APP_TITLE; + } +}); + +export default router; |