0.1.24 • Published 5 years ago

syncobox_layout_backstage v0.1.24

Weekly downloads
3
License
MIT
Repository
-
Last release
5 years ago

syncobox-layout-backstage

Provides general layout for syncobox backstage to each micro front-end services.

Install

Using @vue/cli v4.0.0 above, you can select vue-router as pre-set plugin. Then as following:

vue add vuetify
npm i syncobox_layout_backstage

otherwise

npm i vuetify
npm i vue-router
npm i syncobox_layout_backstage

update

update packages to latest version

npm update syncobox_layout_backstage

Folder Structure

│
├── layouts
│   ├── Main.vue
│   └── FullPage.vue
├── views
│   ├── Home.vue
│   ├── About.vue
│   └── pages ──── Login.vue
│        └── Error404.vue
├── router
│   └── index.js
│
├── App.vue
├── main.js
│

Get started

App.vue

//main.js

<template>
  <router-view></router-view>
</template>

<script>
export default {
  name: "App"
};
</script>

Import in main.js

//main.js

import Vue from 'vue';
import syncobox_layout from 'syncobox_layout_backstage';
import "syncobox_layout_backstage/dist/syncobox-layout.css"

Vue.use(syncobox_layout);

new Vue({
  ...
});

router/index.js

//router/index.js

import Vue from "vue";
import VueRouter from "vue-router";

const originPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject)
    return originPush.call(this, location, onResolve, onReject);
  return originPush.call(this, location).catch(err => err);
};

Vue.use(VueRouter);

let projectName = "SyncoBox";

const routes = [
  {
    path: "",
    component: () => import("../layouts/Main.vue"),
    children: [
      {
        path: "/",
        name: "Home",
        component: () => import("../views/Home.vue")
      },
      {
        path: "/about",
        name: "About",
        component: () => import("../views/About.vue")
      }
    ]
  },
  {
    path: "",
    component: () => import("../layouts/FullPage.vue"),
    children: []
  },
  // Redirect to 404 page, if no match found
  {
    path: "*",
    redirect: "/pages/error-404"
  }
];

const router = new VueRouter({
  mode: "history",
  base: process.env.BASE_URL,
  routes
});

router.afterEach((to, from, next) => {
  document.title = to.name + " - " + projectName;
});

export default router;

Main.vue

//Main.vue

<template>
  <sb-main
    :iconUrl="iconUrl"
    :textUrl="txtUrl"
    :navMenuItems="navMenuItems"
    :navbarVerticalItems="navbarVerticalItems"
  ></sb-main>
</template>

<script>
export default {
  data() {
    return {
      //1. set url of logo's icon and logo's text (url expecting in public)
      // icon: 44 * 50
      // text: 130 * 29
      iconUrl: "/logo-icon.png",
      txtUrl: "/logo-text.png",

      //2. set left side menu's data
      navMenuItems: [
        {
          url: "/",
          name: "Home",
          icon: "mdi-home-variant",
          text: "Main page",
          i18n: "home",
          submenu: []
        },
        {
          url: "/about",
          name: "About",
          icon: "mdi-id-card",
          text: "About page",
          i18n: "about",
          submenu: []
        }
      ],

      //3. set right side account's menu data
      navbarVerticalItems: [
        {
          url: "/pages/profile",
          name: "profile",
          icon: "mdi-account-badge",
          text: "Profile",
          i18n: "profile"
        },
        {
          url: "/pages/login",
          name: "logout",
          icon: "mdi-logout",
          text: "Logout",
          i18n: "logout"
        }
      ]
    };
  }
};
</script>

FullPage.vue

//FullPage.vue

<template>
  <sb-full-page></sb-full-page>
</template>

navMenuItems.json

[
  {
    "header": "",
    "url": "/",
    "name": "Home",
    "icon": "mdi-home-outline",
    "text": "Main page",
    "i18n": "home",
    "submenu": [
      {
        "header": "main",
        "url": "/",
        "name": "Home",
        "icon": "mdi-home-outline",
        "text": "Main page",
        "i18n": "home",
        "submenu": [
          {
            "header": "main",
            "url": "/",
            "name": "Home",
            "icon": "mdi-home-outline",
            "text": "Main page",
            "i18n": "home",
            "submenu": []
          }
        ]
      }
    ]
  },
  {
    "header": "main",
    "url": "/about",
    "name": "About",
    "icon": "mdi-id-card",
    "text": "About page",
    "i18n": "about",
    "submenu": []
  }
]

navbarVerticalItems.json

[
  {
    "url": "/pages/profile",
    "name": "profile",
    "icon": "mdi-account-badge-outline",
    "text": "Profile",
    "i18n": "profile"
  },
  {
    "url": "/pages/login",
    "name": "logout",
    "icon": "mdi-logout",
    "text": "Logout",
    "i18n": "logout"
  }
]