mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-06-06 20:37:32 +00:00
0a6bde8bc6
vue
77 lines
2.6 KiB
TypeScript
77 lines
2.6 KiB
TypeScript
import './bootstrap';
|
|
import '../css/app.css';
|
|
import { createApp, h } from 'vue';
|
|
import { createInertiaApp, usePage } from '@inertiajs/vue3';
|
|
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
|
|
import { ZiggyVue } from '../../vendor/tightenco/ziggy';
|
|
import { createPinia } from 'pinia';
|
|
import type { User } from '@/types/models';
|
|
import { QueryClient, VueQueryPlugin } from '@tanstack/vue-query';
|
|
import { type DefineComponent } from 'vue';
|
|
import { setupPrefetching } from '@/utils/prefetch';
|
|
|
|
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
|
|
const pinia = createPinia();
|
|
const queryClient = new QueryClient();
|
|
|
|
createInertiaApp({
|
|
title: (title) => `${title} - ${appName}`,
|
|
resolve: (name) => {
|
|
if (name.includes('Invoicing::')) {
|
|
const [module, page] = name.split('::');
|
|
|
|
const pagePath = module
|
|
? `../../extensions/${module}/resources/js/Pages/${page}.vue`
|
|
: `./Pages/${page}.vue`;
|
|
|
|
// BillingPortal is a Vue 2 Component and therefore should not be imported
|
|
const pages = module
|
|
? import.meta.glob<DefineComponent>([
|
|
'../../extensions/**/resources/js/Pages/*.vue',
|
|
'!**/BillingPortal.vue',
|
|
])
|
|
: import.meta.glob<DefineComponent>('./Pages/**/*.vue');
|
|
|
|
return resolvePageComponent(pagePath, pages);
|
|
} else {
|
|
return resolvePageComponent(
|
|
`./Pages/${name}.vue`,
|
|
import.meta.glob<DefineComponent>('./Pages/**/*.vue')
|
|
);
|
|
}
|
|
},
|
|
setup({ el, App, props, plugin }) {
|
|
const app = createApp({ render: () => h(App, props) });
|
|
|
|
// currently only one vue app setup hook is supported
|
|
if (window.vueAppSetupHook) {
|
|
window.vueAppSetupHook(app);
|
|
}
|
|
window.getWeekStartSetting = function () {
|
|
const page = usePage<{
|
|
auth: {
|
|
user: User;
|
|
};
|
|
}>();
|
|
return page.props.auth.user.week_start ?? 'monday';
|
|
};
|
|
window.getTimezoneSetting = function () {
|
|
const page = usePage<{
|
|
auth: {
|
|
user: User;
|
|
};
|
|
}>();
|
|
return page.props.auth.user.timezone;
|
|
};
|
|
|
|
app.use(plugin).use(pinia).use(ZiggyVue).use(VueQueryPlugin, { queryClient }).mount(el);
|
|
|
|
// Setup Inertia prefetching to warm TanStack Query cache
|
|
setupPrefetching(queryClient);
|
|
},
|
|
|
|
progress: {
|
|
color: '#4B5563',
|
|
},
|
|
});
|