From 5bbcd724589d45b73ffa63ec92c4a06e854906cd Mon Sep 17 00:00:00 2001 From: Bruno Bernardino Date: Mon, 18 Mar 2024 08:55:21 +0000 Subject: [PATCH] Week view UI + Calendar UI tweaks --- islands/calendar/MainCalendar.tsx | 216 +++++++++++++++++++++++++++--- lib/utils.ts | 39 ++++++ routes/calendar.tsx | 18 +-- static/styles.css | 5 + 4 files changed, 252 insertions(+), 26 deletions(-) diff --git a/islands/calendar/MainCalendar.tsx b/islands/calendar/MainCalendar.tsx index f96b32c..d2fe200 100644 --- a/islands/calendar/MainCalendar.tsx +++ b/islands/calendar/MainCalendar.tsx @@ -2,7 +2,7 @@ import { useSignal } from '@preact/signals'; import { useEffect } from 'preact/hooks'; import { Calendar, CalendarEvent } from '/lib/types.ts'; -import { baseUrl, capitalizeWord, getWeeksForMonth } from '/lib/utils.ts'; +import { baseUrl, capitalizeWord, getDaysForWeek, getWeeksForMonth } from '/lib/utils.ts'; // import { RequestBody as GetRequestBody, ResponseBody as GetResponseBody } from '/routes/api/contacts/get.tsx'; // import { RequestBody as AddRequestBody, ResponseBody as AddResponseBody } from '/routes/api/contacts/add.tsx'; // import { RequestBody as DeleteRequestBody, ResponseBody as DeleteResponseBody } from '/routes/api/contacts/delete.tsx'; @@ -36,6 +36,7 @@ export default function MainCalendar({ initialCalendars, initialCalendarEvents, month: 'long', year: 'numeric', }); + const weekDayFormat = new Intl.DateTimeFormat('en-GB', { weekday: 'short' }); const allDayEventDateFormat = new Intl.DateTimeFormat('en-GB', { year: 'numeric', month: 'long', day: 'numeric' }); const today = new Date().toISOString().substring(0, 10); @@ -326,9 +327,6 @@ export default function MainCalendar({ initialCalendars, initialCalendarEvents, const visibleCalendars = calendars.value.filter((calendar) => calendar.is_visible); - const visibleCalendarEvents = calendarEvents.value; - - // TODO: Send in / consider user timezone const weeks = view === 'month' ? getWeeksForMonth(new Date(startDate)) : []; const hours: { date: Date; isCurrentHour: boolean }[] = view === 'day' @@ -393,7 +391,7 @@ export default function MainCalendar({ initialCalendars, initialCalendarEvents, }) : []; - // TODO: days with hours + const days = view === 'week' ? getDaysForWeek(new Date(startDate)) : []; return ( <> @@ -577,13 +575,13 @@ export default function MainCalendar({ initialCalendars, initialCalendarEvents,
{view === 'day' ? ( -
-
+
+
{dayFormat.format(new Date(startDate))}
-
+
{allDayEvents.length > 0 ? ( @@ -665,9 +663,11 @@ export default function MainCalendar({ initialCalendars, initialCalendarEvents, return (