Light router based on folder tree packaged as a vue plugin
$ npm install vue-easy-router
This packages provides a <easy-state-machine>
component managing a small state machine for UI management
Declare as Webpack plugin:
plugins: [
new VueAutoRoutingPlugin({
// Path to the directory that contains your page components.
pages: "resources/js/pages",
// A string that will be added to importing component path (default @/pages/).
importPrefix: "@/pages/",
dynamicImport: false
})
];
Declare as Vue plugin in your application:
import VueRouter from "vue-router";
Vue.use(VueRouter);
import VueEasyRouter from "vue-easy-router";
Vue.use(VueEasyRouter, VueRouter, {
catchAllRoute: "/errors/404",
loginRoute: "/login",
userRoles: () => ["guest"]
});
Each state can handle following items:
{
"catchAllRoute": "...",
"loginRoute" : "...",
"userRoles": () => []
}
- Type:
String
- Default:
undefined
- Details: Default vue/route to display if requested route not found
- Restrictions: Can be vue name or path to vue
- Type:
String
- Default:
undefined
- Details: Indicates login vue/route to redirect to in case of protected vue/route
- Restrictions: Can be vue name or path to vue
- Type:
Array
- Default:
[]
- Details: Indicates state to start with
- Restrictions: Only one
true
entry per state table. If multiple entries, only the first one is taken.
This plugin injects directives to handle special features
This directive sets route meta variable isModal
to true:
<div v-modal>
...
</div>
to be reused in another component as:
<div v-if="!$route.meta.isModal.value">
...
</div>
This directive specifies how a protected part of a vue that require appropriate role du be displayed (ex: admin
role, xxx
role, yyy
role) should be handled when current user role is not matched.
<div v-protect:blur.admin.xxx.yyy>
...
</div>
- Usage:
v-protect:blur
- Details: If current user Role is not matched, blur the component.
- Restrictions: blur via css, can be de-activated :)
- Usage:
v-protect:disable
- Details: If current user Role is not matched, disable the component.
- Restrictions: disable via css, can be de-activated :)
- Usage:
v-protect:hide
- Details: If current user Role is not matched, hide the component.
- Restrictions: disable via css, can be de-activated :)
- Usage:
v-protect:reroute
- Details: If current user Role is not matched, immediately reroute to
loginRoute
- Restrictions: none