q42-cms-components
Version:
75 lines (59 loc) • 2.61 kB
JavaScript
require('object-fit-cover');
require('./resources/icomoon/style.css');
require('./tools/vuedraggable.scss');
require('./tools/vue-delete.scss');
require('./style.scss');
import { doc } from './docs/doc.js';
var moment = require('moment');
moment.locale('nl');
export var Vue = window.Vue = require('vue');
import VueRouter from 'vue-router'
Vue.options.replace = true;
Vue.use(VueRouter);
Vue.use(require('./tools/vue-scroll-stop.js'));
Vue.component('drop-down', require('./shared/dropdown-menu.vue'));
Vue.component('schema-component-part', require('./schema/schema-component-part.vue'));
Vue.component('redirect-test-button', require('./schema/fields/redirect-test-button.vue'));
Vue.component('redirect-to', require('./schema/fields/redirect-to.vue'));
const routes = [
{ path: '/', redirect: '/pages' }
]
import { statusStore } from './tools/status-store.js';
import { crudFactory } from './crud/crud-factory.js';
export const routeComponent = doc((path, component) => {
routes.push({
path,
component,
children: component.children
});
}, `Koppel het component aan het pad <code>path</code> incl. de <code>children</code> (subroutes) van het component. Gebruik eigen componenten of
gebruik één van de functies uit crud-factory.js.`);
export const runCms = doc(() => {
routeComponent('/assets', require('./assets/assets.vue'));
routeComponent('/pages', require('./pages/pages.vue'));
routeComponent('/cms-docs', require('./docs/docs.vue'));
routeComponent('/redirects', crudFactory({ itemName: 'redirect', fields: ['description', 'from'], customFields: {'Redirect naar': 'redirect-to', 'Testen': 'redirect-test-button'} }));
const router = new VueRouter({
mode: 'history',
linkActiveClass: 'active',
routes
});
// Inject alerter
const routerViewEl = document.querySelector('router-view');
const alerter = document.createElement('alerter');
alerter.setAttribute('ref', 'alerter');
routerViewEl.parentNode.insertBefore(alerter, routerViewEl);
window.app = new Vue({
el: '#cms-app',
router,
...require('./root-component.vue')
});
// Keep the login session alive.
window.setInterval(() => {
statusStore.ping();
}, 5 * 60 * 1000);
}, `Start het CMS.`);
export const runCmsOnLoad = doc(() => {
document.addEventListener("DOMContentLoaded", runCms);
}, `Start <code>runCms</code> op het <code>DOMContentLoaded</code> event. Hiermee kan je <code>q42-cms-components</code>
requiren in een script die in de <code><head></code> staat.`)