import Vue from 'vue'; import topic from '@/pages/topic'; import article from '@/pages/article'; import instrument from '@/pages/instrument'; import instrumentOverview from '@/pages/instrumentOverview'; import p404 from '@/pages/p404'; import start from '@/pages/start'; import submission from '@/pages/studentSubmission'; import profilePage from '@/pages/profile'; import profile from '@/components/profile/Profile'; import myClass from '@/pages/myClass'; import activity from '@/pages/activity'; import Router from 'vue-router'; import surveyPage from '@/pages/survey'; import styleGuidePage from '@/pages/styleguide'; import checkEmail from '@/pages/check-email'; import emailVerification from '@/pages/email-verification'; import licenseActivation from '@/pages/license-activation'; import forgotPassword from '@/pages/forgot-password'; import joinClass from '@/pages/joinClass'; import oldClasses from '@/pages/oldClasses'; import createClass from '@/pages/createClass'; import showCode from '@/pages/showCode'; import news from '@/pages/news'; import moduleRoutes from './module.routes'; import portfolioRoutes from './portfolio.routes'; import onboardingRoutes from './onboarding.routes'; import authRoutes from './auth.routes'; import roomRoutes from './room.routes'; import store from '@/store/index'; const routes = [ { path: '/', name: 'home', component: start, }, ...moduleRoutes, ...authRoutes, ...roomRoutes, {path: '/article/:slug', name: 'article', component: article, meta: {layout: 'simple'}}, { path: '/instruments/', name: 'instrument-overview', component: instrumentOverview, }, {path: '/instrument/:slug', name: 'instrument', component: instrument, meta: {layout: 'simple'}}, {path: '/submission/:id', name: 'submission', component: submission, meta: {layout: 'simple'}}, ...portfolioRoutes, {path: '/topic/:topicSlug', name: 'topic', component: topic, alias: '/book/topic/:topicSlug'}, { path: '/me', component: profilePage, children: [ {path: 'profile', name: 'profile', component: profile, meta: {isProfile: true}}, {path: 'my-class', name: 'my-class', component: myClass, meta: {isProfile: true}}, {path: 'activity', name: 'activity', component: activity, meta: {isProfile: true}}, {path: '', name: 'profile-activity', component: activity, meta: {isProfile: true}}, { path: 'old-classes', name: 'old-classes', component: oldClasses, meta: {isProfile: true}, }, {path: 'create-class', name: 'create-class', component: createClass, meta: {layout: 'simple'}}, {path: 'show-code', name: 'show-code', component: showCode, meta: {layout: 'simple'}}, ], }, {path: 'join-class', name: 'join-class', component: joinClass, meta: {layout: 'public'}}, { path: '/survey/:id', component: surveyPage, name: 'survey', props: true, meta: {layout: 'simple'}, }, { path: '/check-email', component: checkEmail, name: 'checkEmail', meta: { public: true, layout: 'public', }, }, { path: '/verify-email', component: emailVerification, name: 'emailVerification', meta: { public: true, layout: 'public', }, }, { path: '/license-activation', component: licenseActivation, name: 'licenseActivation', meta: { layout: 'public', }, }, { path: '/forgot-password', component: forgotPassword, name: 'forgotPassword', meta: { layout: 'public', public: true, }, }, { path: '/news', component: news, name: 'news', }, ...onboardingRoutes, {path: '/styleguide', component: styleGuidePage}, { path: '*', component: p404, meta: { layout: 'blank', }, }, ]; Vue.use(Router); const router = new Router({ routes, mode: 'history', scrollBehavior(to, from, savedPosition) { if (savedPosition) { return savedPosition; } return {x: 0, y: 0}; }, }); router.afterEach((to, from) => { store.dispatch('showMobileNavigation', false); }); export default router;