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) } }) })