ldc-supportweb/resources/js/vue.js
Jérémy Munsch 40c38fa7d6
Secure Front APP
- Remove external JS and CSS dependencies
- Use Vuejs runtime
- Add xss sanitizer
- Normalize Laravel mix + add cleaner
- Update npm deps
- Upgrade bootswatch theme
2022-05-23 17:41:14 +02:00

85 lines
2.3 KiB
JavaScript
Vendored

import Vue from 'vue'
import vSelect from 'vue-select'
import moment from 'moment'
import 'moment/locale/fr'
let bootstrap = require('bootstrap')
// enable bs tooltips
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
moment.locale('fr')
window.Vue = Vue
if (window.vueDebug) {
Vue.config.devtools = true;
Vue.config.debug = true;
}
Vue.prototype.moment = moment
Vue.prototype.bootstrap = bootstrap
// v-select
Vue.component('v-select', vSelect)
// Register modules
const modules = require.context("./modules", true, /\.js$/i);
modules.keys().map(key => {
Vue.mixin(modules(key).default)
})
window.confirmJS = modules('./confirm.js').default.methods.confirm
// Register vue function
Vue.filter('str_limit', function (value, size) {
if (!value) return ''
value = value.toString()
if (value.length <= size) {
return value;
}
return value.substr(0, size) + '...';
})
Vue.filter('ucfirst', function (value) {
return value.charAt(0).toUpperCase() + value.slice(1)
})
document.addEventListener('DOMContentLoaded', () => {
// Register components
const vues = require.context("./components", true, /\.vue$/i)
vues.keys().map(key => {
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) {
new Vue({
el: el,
json: el.dataset.json ?? {},
// * For runtime vuejs
render: createElement => createElement(vues(key).default)
})
}
for (let grpEl of elGroup) {
// * Hack to prevent loop weirdness
setTimeout(() => {
new Vue({
el: grpEl,
json: grpEl.dataset.json,
// * For runtime vuejs
render: createElement => createElement(vues(key).default)
})
}, 1000)
}
})
})