@hperchec/scorpion-ui-template-default
Version:
Scorpion UI - Default template
104 lines (90 loc) • 2.71 kB
JavaScript
/**
* Packages
*/
// vue-awesome
import Icon from 'vue-awesome/components/Icon'
import 'vue-awesome/icons/brands/discord'
import 'vue-awesome/icons/brands/facebook'
import 'vue-awesome/icons/brands/twitter'
import 'vue-awesome/icons/envelope'
import 'vue-awesome/icons/external-link-alt'
import 'vue-awesome/icons/sort-up'
import 'vue-awesome/icons/sort-down'
// tailwindcss
import 'tailwindcss/base.css'
import 'tailwindcss/components.css'
import 'tailwindcss/utilities.css'
import 'animate-sass/_animate.scss'
// scorpion-ui
import { utils } from '@hperchec/scorpion-ui'
/**
* Template
*/
import config from './config/config'
import components from './components'
import directives from './directives'
import i18n from './i18n'
import models from './models'
import plugins from './plugins'
import router from './router'
import store from './store'
import rootInstance from './root-instance'
// Styles
import './style/index.scss'
const mergeContext = (obj, key, value) => {
obj[key] = utils.deepMerge(obj[key], value)
}
/**
* Template
*/
export default function (Core) {
/* eslint-disable dot-notation */
// Vue
const Vue = Core.Vue // eslint-disable-line no-unused-vars
/**
* Custom config keys
*/
Core.configure(config)
/**
* Contextualize models
*/
Core.context.models.User = models.User
/**
* i18n
*/
mergeContext(Core.context.services['i18n'], 'messages', i18n.messages)
/**
* Router
*/
mergeContext(Core.context.services['router'], 'routes', router.routes)
mergeContext(Core.context.services['router'], 'middlewares', router.middlewares)
/**
* Store
*/
mergeContext(Core.context.services['store'], 'modules', store.modules)
mergeContext(Core.context.services['store'], 'plugins', store.plugins)
/**
* Vue
*/
// Expose plugins options to make customizing possible
Core.registerVuePlugin('VueTailwind', plugins.VueTailwind.plugin, plugins.VueTailwind.options)
// Directives
mergeContext(Core.context.vue, 'directives', directives)
// Components
mergeContext(Core.context.vue, 'components', components)
// Define vue root instance prototype in '$app' namespace
mergeContext(Core.context.vue.rootInstance.prototype, 'app', rootInstance.prototype.app)
// Extend root-instance options
mergeContext(Core.context.vue.rootInstance, 'options', rootInstance.options)
/**
* Extend boot
*/
Core.onAppBoot(async () => {
// Check if user is authenticated
await Core.service('store').dispatch('Auth/check')
})
/**
* Global Vue components
*/
Vue.component('v-icon', Icon)
}