- Remove external JS and CSS dependencies - Use Vuejs runtime - Add xss sanitizer - Normalize Laravel mix + add cleaner - Update npm deps - Upgrade bootswatch theme
85 lines
2.3 KiB
JavaScript
Vendored
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)
|
|
}
|
|
})
|
|
})
|