import Vue from "vue"; import Router from "vue-router"; Vue.use(Router); /* Xeslint-disable */ // scrollBehavior: // - only available in html5 history mode // - defaults to no scroll behavior // - return false to prevent scroll const scrollBehavior = function(to, from, savedPosition) { if (savedPosition) { // savedPosition is only available for popstate navigations. return savedPosition; } else { const position = {}; // scroll to anchor by returning the selector if (to.hash) { position.selector = to.hash; // specify offset of the element if (to.hash === "#anchor2") { position.offset = { y: 100 }; } if (document.querySelector(to.hash)) { return position; } // if the returned position is falsy or an empty object, // will retain current scroll position. return false; } return new Promise(resolve => { // check if any matched route config has meta that requires scrolling to top if (to.matched.some(m => m.meta.scrollToTop)) { // coords will be used if no selector is provided, // or if the selector didn't match any element. position.x = 0; position.y = 0; } // wait for the out transition to complete (if necessary) this.app.$root.$once("triggerScroll", () => { // if the resolved position is falsy or an empty object, // will retain current scroll position. resolve(position); }); }); } }; /** * https://router.vuejs.org/guide/advanced/lazy-loading.html#grouping-components-in-the-same-chunk * * */ export default new Router({ mode: "history", base: process.env.BASE_URL, scrollBehavior, routes: [ { path: "/login", name: "login", meta: { scrollToTop: true }, //KEEP THIS AS AN EXAMPLE OF HOW TO USE WITH CODE ABOVE component: () => import(/* webpackChunkName: "home" */ "./views/login.vue") }, { path: "/home-dashboard", name: "home-dashboard", component: () => import(/* webpackChunkName: "home" */ "./views/home-dashboard.vue") }, { path: "/home-search/:ayatype", name: "home-search", component: () => import(/* webpackChunkName: "home" */ "./views/home-search.vue") }, { path: "/", redirect: "/login" }, //If someone goes blindly to the root of the app, then it should go to login { path: "/home-schedule", name: "home-schedule", component: () => import(/* webpackChunkName: "home" */ "./views/home-schedule.vue") }, { path: "/home-memos", name: "home-memos", component: () => import(/* webpackChunkName: "home" */ "./views/home-memos.vue") }, { path: "/home-reminders", name: "home-reminders", component: () => import(/* webpackChunkName: "home" */ "./views/home-reminders.vue") }, { path: "/home-locale", name: "home-locale", component: () => import(/* webpackChunkName: "home" */ "./views/home-locale.vue") }, { path: "/home-password", name: "home-password", component: () => import(/* webpackChunkName: "home" */ "./views/home-password.vue") }, { path: "/home-notify-subscriptions", name: "home-notify-subscriptions", component: () => import( /* webpackChunkName: "home" */ "./views/home-notify-subscriptions.vue" ) }, { path: "/cust-customers", name: "cust-customers", component: () => import(/* webpackChunkName: "cust" */ "./views/cust-customers.vue") }, { path: "/cust-headoffices", name: "cust-headoffices", component: () => import(/* webpackChunkName: "cust" */ "./views/cust-headoffices.vue") }, { path: "/svc-schedule", name: "svc-schedule", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-schedule.vue") }, { path: "/svc-workorders", name: "svc-workorders", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-workorders.vue") }, { path: "/svc-workorder-templates", name: "svc-workorder-templates", component: () => import( /* webpackChunkName: "svc" */ "./views/svc-workorder-templates.vue" ) }, { path: "/svc-quotes", name: "svc-quotes", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-quotes.vue") }, { path: "/svc-quote-templates", name: "svc-quote-templates", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-quote-templates.vue") }, { path: "/svc-pm-list", name: "svc-pm-list", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-pm-list.vue") }, { path: "/svc-pm-templates", name: "svc-pm-templates", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-pm-templates.vue") }, { path: "/svc-units", name: "svc-units", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-units.vue") }, { path: "/svc-unit-models", name: "svc-unit-models", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-unit-models.vue") }, { path: "/svc-loaners", name: "svc-loaners", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-loaners.vue") }, { path: "/svc-contracts", name: "svc-contracts", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-contracts.vue") }, { path: "/svc-csr-list", name: "svc-csr-list", component: () => import(/* webpackChunkName: "svc" */ "./views/svc-csr-list.vue") }, { path: "/inv-parts", name: "inv-parts", component: () => import(/* webpackChunkName: "inv" */ "./views/inv-parts.vue") }, { path: "/inv-part-inventory", name: "inv-part-inventory", component: () => import(/* webpackChunkName: "inv" */ "./views/inv-part-inventory.vue") }, { path: "/inv-part-requests", name: "inv-part-requests", component: () => import(/* webpackChunkName: "inv" */ "./views/inv-part-requests.vue") }, { path: "/inv-purchase-orders", name: "inv-purchase-orders", component: () => import(/* webpackChunkName: "inv" */ "./views/inv-purchase-orders.vue") }, { path: "/inv-purchase-order-receipts", name: "inv-purchase-order-receipts", component: () => import( /* webpackChunkName: "inv" */ "./views/inv-purchase-order-receipts.vue" ) }, { path: "/inv-adjustments", name: "inv-adjustments", component: () => import(/* webpackChunkName: "inv" */ "./views/inv-adjustments.vue") }, { path: "/vendors", name: "vendors", component: () => import(/* webpackChunkName: "vendors" */ "./views/vendors.vue") }, { path: "/acc-accounting", name: "acc-accounting", component: () => import(/* webpackChunkName: "acc" */ "./views/acc-accounting.vue") }, { path: "/adm-global-settings", name: "adm-global-settings", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-global-settings.vue") }, { path: "/adm-license", name: "adm-license", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-license.vue") }, { path: "/adm-users", name: "adm-users", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-users.vue") }, { path: "/adm-localized-text", name: "adm-localized-text", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-localized-text.vue") }, { path: "/adm-report-templates", name: "adm-report-templates", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-report-templates.vue") }, { path: "/adm-attachments", name: "adm-attachments", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-attachments.vue") }, { path: "/adm-history", name: "adm-history", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-history.vue") }, { path: "/adm-statistics", name: "adm-statistics", component: () => import(/* webpackChunkName: "adm" */ "./views/adm-statistics.vue") }, { path: "/ops-backup", name: "ops-backup", component: () => import(/* webpackChunkName: "ops" */ "./views/ops-backup.vue") }, { path: "/ops-jobs", name: "ops-jobs", component: () => import(/* webpackChunkName: "ops" */ "./views/ops-jobs.vue") }, { path: "/ops-log", name: "ops-log", component: () => import(/* webpackChunkName: "ops" */ "./views/ops-log.vue") }, { path: "/ops-metrics", name: "ops-metrics", component: () => import(/* webpackChunkName: "ops" */ "./views/ops-metrics.vue") }, { path: "/ops-notification-settings", name: "ops-notification-settings", component: () => import( /* webpackChunkName: "ops" */ "./views/ops-notification-settings.vue" ) }, //**********************************GENERAL */ { path: "/ay-about", name: "ay-about", // route level code-splitting // this generates a separate chunk (about.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import(/* webpackChunkName: "ay" */ "./views/ay-about.vue") }, { path: "/ay-log", name: "ay-log", component: () => import(/* webpackChunkName: "ay" */ "./views/ay-log.vue") }, { path: "/ay-customize/:formCustomTemplateKey", name: "ay-customize", component: () => import(/* webpackChunkName: "ay" */ "./views/ay-customize.vue") }, { //TEST WIDGETS path: "/testinventory", name: "testinventory", component: () => import(/* webpackChunkName: "test" */ "./views/test-inventory.vue") }, { //TEST WIDGET EDIT FORM path: "/inventory/widget/edit/:id", name: "inventory-widget-edit", component: () => import( /* webpackChunkName: "test" */ "./views/test-inventory-widget-edit.vue" ) }, { //404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 404 path: "*", name: "notfound", component: () => import(/* webpackChunkName: "home" */ "./views/notfound.vue") } ] });