2023-09-20 17:34:33 +02:00
|
|
|
import '/resources/js_vue3/assets/app.scss';
|
|
|
|
|
|
|
|
import { createApp } from 'vue'
|
2023-09-22 12:00:16 +02:00
|
|
|
import { i18nVue } from 'laravel-vue-i18n'
|
2023-09-22 15:07:47 +02:00
|
|
|
import { createPinia } from 'pinia'
|
2023-09-20 17:34:33 +02:00
|
|
|
import App from './App.vue'
|
|
|
|
import router from './router'
|
2023-09-21 17:10:12 +02:00
|
|
|
import Notifications from '@kyvg/vue3-notification'
|
2023-09-22 13:10:42 +02:00
|
|
|
import FontAwesomeIcon from './icons'
|
2023-09-20 17:34:33 +02:00
|
|
|
|
|
|
|
const app = createApp(App)
|
|
|
|
|
2023-09-22 11:32:24 +02:00
|
|
|
// Immutable app properties provided by the laravel blade view
|
2023-09-27 10:19:48 +02:00
|
|
|
const $2fauth = {
|
|
|
|
prefix: '2fauth_',
|
2023-09-22 17:21:18 +02:00
|
|
|
config: window.appConfig, //{"proxyAuth":false,"proxyLogoutUrl":false,"subdirectory":""}
|
2023-09-22 11:32:24 +02:00
|
|
|
version: window.appVersion,
|
|
|
|
isDemoApp: window.isDemoApp,
|
|
|
|
isTestingApp: window.isTestingApp,
|
2023-09-27 10:19:48 +02:00
|
|
|
langs: window.appLocales,
|
2023-09-22 11:32:24 +02:00
|
|
|
}
|
2023-09-27 10:19:48 +02:00
|
|
|
app.provide('2fauth', readonly($2fauth))
|
|
|
|
|
|
|
|
const pinia = createPinia()
|
|
|
|
pinia.use(({ store }) => {
|
|
|
|
store.$2fauth = $2fauth;
|
|
|
|
});
|
|
|
|
app.use(pinia)
|
2023-09-22 11:32:24 +02:00
|
|
|
|
2023-09-20 17:34:33 +02:00
|
|
|
app.use(router)
|
2023-09-22 12:00:16 +02:00
|
|
|
app.use(i18nVue, {
|
2023-09-22 17:14:00 +02:00
|
|
|
lang: document.documentElement.lang.substring(0, 2),
|
2023-09-22 12:00:16 +02:00
|
|
|
resolve: async lang => {
|
|
|
|
const langs = import.meta.glob('../lang/*.json');
|
2023-09-22 17:14:00 +02:00
|
|
|
if (lang.includes('php_')) {
|
|
|
|
return await langs[`../lang/${lang}.json`]();
|
|
|
|
}
|
2023-09-22 12:00:16 +02:00
|
|
|
}
|
|
|
|
})
|
2023-09-21 17:10:12 +02:00
|
|
|
app.use(Notifications)
|
2023-09-22 17:21:18 +02:00
|
|
|
|
|
|
|
import ResponsiveWidthWrapper from '@/layouts/ResponsiveWidthWrapper.vue'
|
|
|
|
import FormWrapper from '@/layouts/FormWrapper.vue'
|
|
|
|
import Footer from '@/layouts/Footer.vue'
|
|
|
|
|
|
|
|
// Components registration
|
2023-09-22 15:35:58 +02:00
|
|
|
app
|
|
|
|
.component('font-awesome-icon', FontAwesomeIcon)
|
|
|
|
.component('responsive-width-wrapper', ResponsiveWidthWrapper)
|
|
|
|
.component('form-wrapper', FormWrapper)
|
2023-09-22 17:21:18 +02:00
|
|
|
.component('vue-footer', Footer)
|
2023-09-22 13:10:42 +02:00
|
|
|
|
2023-09-22 17:21:18 +02:00
|
|
|
// App mounting
|
2023-09-20 17:34:33 +02:00
|
|
|
app.mount('#app')
|