diff --git a/apps/mana/apps/web/src/lib/app-registry/apps.ts b/apps/mana/apps/web/src/lib/app-registry/apps.ts index 2434180db..ec98ea6ff 100644 --- a/apps/mana/apps/web/src/lib/app-registry/apps.ts +++ b/apps/mana/apps/web/src/lib/app-registry/apps.ts @@ -715,6 +715,7 @@ registerApp({ list: { load: () => import('$lib/modules/events/ListView.svelte') }, detail: { load: () => import('$lib/modules/events/views/DetailView.svelte') }, }, + paramKey: 'eventId', }); registerApp({ diff --git a/apps/mana/apps/web/src/lib/modules/events/ListView.svelte b/apps/mana/apps/web/src/lib/modules/events/ListView.svelte index d6fb74ef3..a530690fb 100644 --- a/apps/mana/apps/web/src/lib/modules/events/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/events/ListView.svelte @@ -5,12 +5,9 @@ import { drainTombstones } from './tombstones'; import EventCard from './components/EventCard.svelte'; import type { SocialEvent } from './types'; + import type { ViewProps } from '$lib/app-registry'; - interface Props { - onOpenEvent?: (id: string) => void; - } - - let { onOpenEvent }: Props = $props(); + let { navigate, goBack, params }: ViewProps = $props(); const upcoming = useUpcomingEvents(); const past = usePastEvents(); @@ -44,12 +41,17 @@ newDate = ''; newLocation = ''; showCreate = false; - onOpenEvent?.(result.id); + open({ id: result.id } as SocialEvent); } } function open(event: SocialEvent) { - onOpenEvent?.(event.id); + const ids = [...(upcoming.value ?? []), ...(past.value ?? [])].map((e) => e.id); + navigate('detail', { + eventId: event.id, + _siblingIds: ids, + _siblingKey: 'eventId', + }); } @@ -59,12 +61,9 @@
- {(upcoming.value ?? []).length} bevorstehend · {(past.value ?? []).length} vergangen -
-+ {(upcoming.value ?? []).length} bevorstehend · {(past.value ?? []).length} vergangen +
@@ -127,12 +126,6 @@ align-items: flex-start; justify-content: space-between; } - .page-title { - margin: 0; - font-size: 1.5rem; - font-weight: 700; - color: hsl(var(--color-foreground)); - } .page-subtitle { margin: 0.25rem 0 0; font-size: 0.875rem; diff --git a/apps/mana/apps/web/src/lib/modules/events/views/DetailView.svelte b/apps/mana/apps/web/src/lib/modules/events/views/DetailView.svelte index 9ee23151e..09789eab4 100644 --- a/apps/mana/apps/web/src/lib/modules/events/views/DetailView.svelte +++ b/apps/mana/apps/web/src/lib/modules/events/views/DetailView.svelte @@ -5,13 +5,11 @@ import RsvpSummaryView from '../components/RsvpSummary.svelte'; import PublicRsvpList from '../components/PublicRsvpList.svelte'; import BringListEditor from '../components/BringListEditor.svelte'; + import type { ViewProps } from '$lib/app-registry'; - interface Props { - eventId: string; - onBack?: () => void; - } + let { navigate, goBack, params }: ViewProps = $props(); - let { eventId, onBack }: Props = $props(); + let eventId = $derived((params.eventId as string) ?? ''); const eventQuery = useEvent(() => eventId); const guests = useEventGuests(() => eventId); @@ -84,7 +82,7 @@ if (!event) return; if (!confirm(`Event "${event.title}" wirklich löschen?`)) return; await eventsStore.deleteEvent(event.id); - onBack?.(); + goBack(); } function copyShareLink() { @@ -99,9 +97,7 @@ {:else}