ldc-loue/resources/js/vue.js
Jérémy Munsch 0751114f4a
BO News, Tags, Sliders
CKeditor + word counter + Image Input + Taggable VUE3
Better Xss Sanitizer
Handle Video Youtube + Image Upload + Inline Image from url
Better Image Input component with reset, easizer resize
Full Responsive BO
2022-06-04 15:55:36 +02:00

56 lines
1.6 KiB
JavaScript

import { createApp } from 'vue'
// Register modules
const modules = require.context("./modules", true, /\.js$/i)
document.addEventListener('DOMContentLoaded', () => {
let setupApp = (app) => {
if (window.vueDebug) {
app.config.devtools = true
app.config.debug = true
}
app.config.globalProperties.window = window
app.config.globalProperties.document = document
modules.keys().map(key => {
app.mixin(modules(key).default)
})
}
// Register components
const vues = require.context("./components", true, /\.vue$/i);
vues.keys().map(key => {
let app
let htmlKey = key.split('/')
.pop()
.split('.')[0]
.replace(/\.?([A-Z])/g, function (x, y) {
return '-' + y.toLowerCase();
})
.replace(/^-/, '')
.replace('-component', '')
let el = document.getElementById(htmlKey),
elGroup = document.getElementsByClassName(htmlKey)
if (el) {
app = createApp(
vues(key).default,
{ json: el.dataset.json ?? {} }
)
setupApp(app)
app.mount(el)
}
for (let grpEl of elGroup) {
// * Hack to prevent loop weirdness
setTimeout(() => {
app = createApp(
vues(key).default,
{ json: grpEl.dataset.json ?? {} }
)
setupApp(app)
app.mount(grpEl)
}, 1000)
}
})
})