50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
import camelCase from 'lodash/camelCase'
|
|
import upperFirst from 'lodash/upperFirst'
|
|
import CustomError404 from '@/views/CustomError404'
|
|
import CustomError403 from '@/views/CustomError403'
|
|
import CustomAppError from '@/views/CustomAppError'
|
|
import ResourceIndex from '@/views/Index'
|
|
import ResourceDetail from '@/views/Detail'
|
|
import Attach from '@/views/Attach'
|
|
import UpdateAttached from '@/views/UpdateAttached'
|
|
// import Lens from '@/views/Lens'
|
|
|
|
/**
|
|
* @typedef {import('./nova').default} NovaApp
|
|
*/
|
|
|
|
/**
|
|
* @param {NovaApp} app
|
|
*/
|
|
export function registerViews(app) {
|
|
// Manually register some views...
|
|
app.component('CustomError403', CustomError403)
|
|
app.component('CustomError404', CustomError404)
|
|
app.component('CustomAppError', CustomAppError)
|
|
app.component('ResourceIndex', ResourceIndex)
|
|
app.component('ResourceDetail', ResourceDetail)
|
|
app.component('AttachResource', Attach)
|
|
app.component('UpdateAttachedResource', UpdateAttached)
|
|
|
|
const requireComponent = require.context(
|
|
'./components',
|
|
true,
|
|
/[A-Z]\w+\.(vue)$/
|
|
)
|
|
|
|
requireComponent.keys().forEach(fileName => {
|
|
const componentConfig = requireComponent(fileName)
|
|
|
|
const componentName = upperFirst(
|
|
camelCase(
|
|
fileName
|
|
.split('/')
|
|
.pop()
|
|
.replace(/\.\w+$/, '')
|
|
)
|
|
)
|
|
|
|
app.component(componentName, componentConfig.default || componentConfig)
|
|
})
|
|
}
|