From 7e2a48a469f53c4bd0d555b4f2a64f0160a3bf7c Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 18 Feb 2025 14:43:53 +0100 Subject: [PATCH] bug fix --- src/app/calendar/page.tsx | 61 ++++++++++++++++++++--------------- src/components/postDialog.tsx | 4 ++- src/components/timeSelect.tsx | 19 +++++------ 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/src/app/calendar/page.tsx b/src/app/calendar/page.tsx index b8783bf..4a25529 100644 --- a/src/app/calendar/page.tsx +++ b/src/app/calendar/page.tsx @@ -1,6 +1,6 @@ 'use client'; import { useCalendarApp, ScheduleXCalendar } from '@schedule-x/react'; -import { CalendarEventExternal, createViewWeek } from '@schedule-x/calendar'; +import { createViewWeek } from '@schedule-x/calendar'; import { createEventsServicePlugin } from '@schedule-x/events-service'; import { createDragAndDropPlugin } from '@schedule-x/drag-and-drop'; @@ -59,41 +59,50 @@ function CalendarApp() { const target = event.target as HTMLElement; if (target.className === 'sx__time-grid-event-time') { - setSelected( + const id = target.parentElement?.parentElement?.getAttribute( 'data-event-id' + ); + setSelected(id); + + setDate( + parse( + calendar.events.get(parseInt(id || ''))?.start || '', + 'y-MM-dd hh:mm', + new Date() ) ); - return; } else { setSelected(null); - } - try { - const dayElement = target.closest('.sx__time-grid-day'); + try { + const dayElement = target.closest('.sx__time-grid-day'); - const dayText = dayElement - ? dayElement.getAttribute('aria-label') - : null; + const dayText = dayElement + ? dayElement.getAttribute('aria-label') + : null; - const hourElement = closestChild( - target.parentElement?.children[0].children || [], - event.clientX, - event.clientY - ); - - if (!dayText || !hourElement) { - event.preventDefault(); - } else { - const toDate = parse( - (dayText || '') + ' ' + (hourElement?.textContent || ''), - 'MMMM dd, yyyy h a', - new Date() + const hourElement = closestChild( + target.parentElement?.children[0].children || [], + event.clientX, + event.clientY ); - if (toDate instanceof Date && !isNaN(toDate.getTime())) - setDate(toDate); - } - } catch {} + + if (!dayText || !hourElement) { + event.preventDefault(); + } else { + const toDate = parse( + (dayText || '') + + ' ' + + (hourElement?.textContent || ''), + 'MMMM dd, yyyy h a', + new Date() + ); + if (toDate instanceof Date && !isNaN(toDate.getTime())) + setDate(toDate); + } + } catch {} + } }; return ( diff --git a/src/components/postDialog.tsx b/src/components/postDialog.tsx index 03e1682..ef54f40 100644 --- a/src/components/postDialog.tsx +++ b/src/components/postDialog.tsx @@ -45,7 +45,9 @@ export default function PostDialog({ New post - Schedule posts on multiple accounts + + Schedule posts on multiple accounts +
diff --git a/src/components/timeSelect.tsx b/src/components/timeSelect.tsx index 991f2a1..7a1fb4c 100644 --- a/src/components/timeSelect.tsx +++ b/src/components/timeSelect.tsx @@ -1,9 +1,3 @@ -import { - Popover, - PopoverContent, - PopoverTrigger, -} from '@/components/ui/popover'; -import { Button } from '@/components/ui/button'; import { Select, SelectContent, @@ -24,7 +18,12 @@ const TimeSelect: React.FC = ({ className, }) => { const times = Array.from({ length: 24 }, (_, h) => - [0, 15, 30, 45].map((m) => `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`) + [0, 15, 30, 45].map( + (m) => + `${(h+1).toString().padStart(2, '0')}:${m + .toString() + .padStart(2, '0')}` + ) ).flat(); const currentHour = date.getHours().toString().padStart(2, '0'); @@ -34,7 +33,9 @@ const TimeSelect: React.FC = ({ ? curr : prev ); - const selectedTime = `${currentHour}:${nearestMinute.toString().padStart(2, '0')}`; + const selectedTime = `${currentHour}:${nearestMinute + .toString() + .padStart(2, '0')}`; const handleTimeChange = (newTime: string) => { const [hour, minute] = newTime.split(':').map(Number); @@ -64,4 +65,4 @@ const TimeSelect: React.FC = ({ ); }; -export default TimeSelect; \ No newline at end of file +export default TimeSelect;