From 5f87596b2fbffbda09ea5eb280123d2123a938c0 Mon Sep 17 00:00:00 2001 From: Brian Rogers Date: Tue, 27 Sep 2022 11:12:05 -0600 Subject: [PATCH] changing page layout assignment to work with Vite now --- src/resources/js/app.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/resources/js/app.js b/src/resources/js/app.js index b3245e2..fe8103b 100644 --- a/src/resources/js/app.js +++ b/src/resources/js/app.js @@ -3,8 +3,13 @@ require("./bootstrap"); import { createApp, h } from 'vue'; import { createInertiaApp } from '@inertiajs/inertia-vue3'; import { InertiaProgress } from '@inertiajs/progress'; +import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'; import Notifications from 'notiwind'; +import AppLayout from './Layouts/AppLayout.vue'; +import AuthLayout from './Layouts/AuthLayout.vue'; +import BaseLayout from './Layouts/BaseLayout.vue'; +import GuestLayout from './Layouts/GuestLayout.vue'; const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel'; @@ -14,7 +19,25 @@ window.genUid = function () { createInertiaApp({ title: (title) => `${title} - ${appName}`, - resolve: (name) => require(`./Pages/${name}.vue`), + resolve: (name) => { + const page = resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')); + + page.then((module) => { + if (module.default.layout === undefined) { + if (name.startsWith('Auth/')) { + module.default.layout = AuthLayout; + } else if (name.startsWith('Dashboard/') || name.startsWith('Profile/')) { + module.default.layout = AppLayout; + } else if (name.startsWith('Guest/')) { + module.default.layout = GuestLayout; + } else if (!name.startsWith('Components/') && !name.startsWith('Jetstream/') && !name.startsWith('Icons/') && !name.startsWith('Layouts/') && !name.includes('Partials')) { + module.default.layout = BaseLayout; + } + } + }); + + return page; + }, setup({ el, app, props, plugin }) { return createApp({ render: () => h(app, props) }) .use(plugin)