From 5166634e23a26d73e731d8cc6557b4ac4f481edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludv=C3=ADk=20Prokopec?= Date: Sun, 11 Dec 2022 21:58:45 +0100 Subject: [PATCH] better routes config --- src/App.svelte | 9 ++++++--- src/__routes.ts | 31 +++++++++++++++++++++++++------ src/lib/router/routes.ts | 19 +++++++++---------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 022bf55..0c25e39 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -7,7 +7,6 @@ /** layout */ import routes from './__routes' import Error from './__error.svelte' - import LazyRoute from '$lib/router/LazyRoute.svelte' import LazyRouteGuard from '$lib/router/LazyRouteGuard.svelte' let isMounted = false @@ -30,9 +29,13 @@ {#if !$isLoading && isMounted} {#each routes as { path, layout, component, loading }} - + {#if layout} + + + + {:else} - + {/if} {/each} diff --git a/src/__routes.ts b/src/__routes.ts index f212d12..89731ea 100644 --- a/src/__routes.ts +++ b/src/__routes.ts @@ -1,8 +1,27 @@ import { defineRoutes } from '$lib/router'; -export default defineRoutes([ - { path: '/', component: () => import('$routes/index.svelte') }, - { path: '/oauth', component: () => import('$routes/oauth/index.svelte') }, - { path: '/oauth/failure', component: () => import('$routes/oauth/failure.svelte') }, - { path: '/oauth/success', component: () => import('$routes/oauth/success.svelte') }, -]) +import Layout from '$src/__layout.svelte' +import Loading from '$src/__loading.svelte' + +export default defineRoutes({ + routes: [ + { + path: '/', + component: () => import('./routes/index.svelte') + }, + { + path: '/oauth', + component: () => import('$routes/oauth/index.svelte') + }, + { + path: '/oauth/failure', + component: () => import('$routes/oauth/failure.svelte') + }, + { + path: '/oauth/success', + component: () => import('$routes/oauth/success.svelte') + }, + ], + layout: Layout, + loading: Loading, +}) diff --git a/src/lib/router/routes.ts b/src/lib/router/routes.ts index 269e5c5..af45bec 100644 --- a/src/lib/router/routes.ts +++ b/src/lib/router/routes.ts @@ -1,6 +1,3 @@ -import Layout from '$src/__layout.svelte' -import Loading from '$src/__loading.svelte' - import { ComponentType, SvelteComponentTyped } from 'svelte' export interface Route { @@ -13,16 +10,18 @@ export interface Route { interface RouteDefinition { component: () => Promise, path: string, - layout: ComponentType>, - loading: ComponentType>, + layout: ComponentType> | null, + loading: ComponentType> | null, } -interface RouteDefault { - layout: ComponentType>, - loading: ComponentType>, +interface RouteConfig { + routes: Route[], + layout?: ComponentType> | null, + loading?: ComponentType> | null, } -const defineRoutes = (routes: Route[], { layout = Layout, loading = Loading }: RouteDefault = { layout: Layout, loading: Loading }): RouteDefinition[] => - routes.map(route => ({ ...route, layout: route?.layout ?? layout, loading: route?.loading ?? loading })) +const defineRoutes = (config: RouteConfig): RouteDefinition[] => { + return config.routes.map(route => ({ ...route, layout: route?.layout ?? config?.layout ?? null, loading: route?.loading ?? config?.loading ?? null })) +} export default defineRoutes