vue-material/docs/src/index.js

76 lines
1.7 KiB
JavaScript
Raw Normal View History

2016-07-21 21:56:06 +00:00
/* Third Party */
import Vue from 'vue';
import VueRouter from 'vue-router';
2016-07-21 21:56:06 +00:00
/* Configs */
import './config.js';
import routes from './routes.js';
2016-08-30 15:41:16 +00:00
import App from './App';
import PageContent from './components/PageContent';
import DocsComponent from './components/DocsComponent';
import ExampleBox from './components/ExampleBox';
import ApiTable from './components/ApiTable';
import CodeBlock from './components/CodeBlock';
2016-08-16 02:34:05 +00:00
Vue.component('page-content', PageContent);
Vue.component('docs-component', DocsComponent);
Vue.component('example-box', ExampleBox);
Vue.component('api-table', ApiTable);
Vue.component('code-block', CodeBlock);
2016-08-30 15:41:16 +00:00
Vue.use(VueRouter);
let router = new VueRouter({
2016-12-23 20:36:53 +00:00
mode: 'hash',
2016-12-23 19:12:27 +00:00
base: window.location.pathname,
2016-08-30 15:41:16 +00:00
routes
});
2016-07-21 21:56:06 +00:00
2016-08-30 15:41:16 +00:00
let Docs = Vue.component('app', App);
2016-11-21 06:09:42 +00:00
let handleSectionTheme = (currentRoute) => {
2016-12-13 01:36:41 +00:00
let theme = 'default';
2016-12-23 21:13:57 +00:00
let name = currentRoute.name;
2016-12-13 01:36:41 +00:00
2016-12-23 21:13:57 +00:00
if (name) {
if (name === 'getting-started') {
theme = 'indigo';
} else if (name.indexOf('themes') >= 0) {
theme = 'cyan';
} else if (name.indexOf('ui-elements') >= 0) {
theme = 'purple';
} else if (name === 'changelog') {
theme = 'orange';
} else if (name === 'about') {
theme = 'green';
} else if (name === 'error') {
theme = 'red';
}
2016-09-26 04:13:27 +00:00
}
2016-12-13 01:36:41 +00:00
Vue.material.setCurrentTheme(theme);
2016-09-26 04:13:27 +00:00
};
2016-07-21 21:56:06 +00:00
2016-08-30 15:41:16 +00:00
Docs = new Docs({
el: '#app',
router
});
2016-09-26 04:13:27 +00:00
handleSectionTheme(router.currentRoute);
2016-12-13 01:07:56 +00:00
router.beforeEach((to, from, next) => {
Vue.nextTick(() => {
let mainContent = document.querySelector('.main-content');
2016-09-09 19:59:55 +00:00
if (mainContent) {
mainContent.scrollTop = 0;
}
Docs.closeSidenav();
2016-11-21 06:09:42 +00:00
handleSectionTheme(to);
2016-12-13 01:07:56 +00:00
next();
});
2016-08-30 15:41:16 +00:00
});