diff --git a/apps/calendar/apps/backend/src/event/event.service.ts b/apps/calendar/apps/backend/src/event/event.service.ts index 6e80e89cc..bfd40249c 100644 --- a/apps/calendar/apps/backend/src/event/event.service.ts +++ b/apps/calendar/apps/backend/src/event/event.service.ts @@ -184,6 +184,16 @@ export class EventService { conditions.push(inArray(events.calendarId, query.calendarIds)); } + // Search filter - search in title and description + if (query.search) { + conditions.push( + or( + ilike(events.title, `%${query.search}%`), + ilike(events.description, `%${query.search}%`) + ) as any + ); + } + const result = await this.db .select({ event: events, diff --git a/apps/calendar/apps/web/src/lib/api/events.ts b/apps/calendar/apps/web/src/lib/api/events.ts index ad35c3040..1ce53b469 100644 --- a/apps/calendar/apps/web/src/lib/api/events.ts +++ b/apps/calendar/apps/web/src/lib/api/events.ts @@ -23,17 +23,22 @@ export async function getEvents(params: QueryEventsParams) { if (params.search) { searchParams.set('search', params.search); } - return fetchApi(`/events?${searchParams.toString()}`); + const result = await fetchApi<{ events: CalendarEvent[] }>(`/events?${searchParams.toString()}`); + if (result.error || !result.data) { + return { data: null, error: result.error }; + } + return { data: result.data.events, error: null }; } export async function searchEvents(query: string, limit: number = 10) { - // Search events within the next year - const now = new Date(); + // Search events within a wide range (1 year past to 1 year future) + const oneYearAgo = new Date(); + oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1); const oneYearFromNow = new Date(); oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1); return getEvents({ - startDate: now.toISOString(), + startDate: oneYearAgo.toISOString(), endDate: oneYearFromNow.toISOString(), search: query, }); diff --git a/apps/calendar/apps/web/src/lib/components/event/QuickEventOverlay.svelte b/apps/calendar/apps/web/src/lib/components/event/QuickEventOverlay.svelte index ce474e85d..1601f3697 100644 --- a/apps/calendar/apps/web/src/lib/components/event/QuickEventOverlay.svelte +++ b/apps/calendar/apps/web/src/lib/components/event/QuickEventOverlay.svelte @@ -8,6 +8,16 @@ import { de } from 'date-fns/locale'; import { tick, onMount, onDestroy } from 'svelte'; + // Portal action - moves element to body to escape stacking contexts + function portal(node: HTMLElement) { + document.body.appendChild(node); + return { + destroy() { + node.remove(); + }, + }; + } + interface Props { startTime?: Date; event?: CalendarEvent; @@ -465,9 +475,11 @@ +