From b5d0fc556499c29df010563c91051ed59536b918 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Sat, 18 Jan 2025 00:03:20 +0100 Subject: [PATCH] calendar fix contd --- src/component/calendar/Calendar.jsx | 16 ++++--- src/component/calendar/EventCalendar.jsx | 47 +++++++------------- src/component/calendar/ExternalDraggable.jsx | 28 ++++++++++++ src/component/calendar/event-utils.js | 7 --- src/css/style.scss | 1 + 5 files changed, 54 insertions(+), 45 deletions(-) create mode 100644 src/component/calendar/ExternalDraggable.jsx diff --git a/src/component/calendar/Calendar.jsx b/src/component/calendar/Calendar.jsx index 1ec5470..3c4c2d5 100644 --- a/src/component/calendar/Calendar.jsx +++ b/src/component/calendar/Calendar.jsx @@ -1,14 +1,15 @@ import React, { useCallback, useState } from "react"; import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; import EventCalendar from "./EventCalendar"; +import ExternalDraggable from "./ExternalDraggable"; export default function Calendar(){ - const [draggedEvent, setDraggedEvent] = useState('undroppable') - const handleDragStart = (event) => { - setDraggedEvent(event) - } + // const [draggedEvent, setDraggedEvent] = useState('undroppable') + // const handleDragStart = (event) => { + // setDraggedEvent(event) + // } const dummyEvents = [ {id: '1111', title: 'Family Vacation', color: 'fc-event-primary', start: new Date('2025-01-18')}, @@ -38,7 +39,7 @@ export default function Calendar(){

Drag and drop your event or click in the calendar.

- {dummyEvents.map((item, index) => ( + {/* {dummyEvents.map((item, index) => (
@@ -47,7 +48,8 @@ export default function Calendar(){ > {item.title}
- ))} + ))} */} +
@@ -60,7 +62,7 @@ export default function Calendar(){
{/* */} - +
diff --git a/src/component/calendar/EventCalendar.jsx b/src/component/calendar/EventCalendar.jsx index 89ad339..f1c2f88 100644 --- a/src/component/calendar/EventCalendar.jsx +++ b/src/component/calendar/EventCalendar.jsx @@ -39,37 +39,22 @@ export default function EventCalendar({draggedEvent, setDraggedEvent}) { } } -// const onDrop = useCallback( -// (event) => { -// // if (draggedEvent === 'undroppable') { -// // setDraggedEvent(null) -// // return -// // } - -// // let calendarApi; - -// // calendarApi.unselect(); // clear date selection - -// // calendarApi.addEvent({ -// // id: createEventId(), -// // allDay: selectInfo.allDay, -// // end: selectInfo.endStr, -// // start: selectInfo.startStr, -// // title, -// // ...draggedEvent -// // }); - -// // setDraggedEvent(null) -// console.log('EVENT', event) -// }, -// [draggedEvent] -// ) - - const onDrop = - (dropInfo) => { - console.log('dropInfo', dropInfo) + const onDrop = (event) => { + console.log('event', event) + if(event){ + let newEvent = { + id: createEventId(), + title: event.draggedEl.innerText, + start: event.startStr, + end: event.endStr, + allDay: event.allDay, + ...event + } + setCurrentEvents(prev => ([...prev, newEvent])) + } } + function handleEventClick(clickInfo) { if ( confirm( @@ -112,9 +97,9 @@ export default function EventCalendar({draggedEvent, setDraggedEvent}) { eventRemove={function(){}} */ - dropAccept= '.fc-event' + droppable= {true} // this allows things to be dropped onto the calendar - drop= {onDrop} + drop={onDrop} /> diff --git a/src/component/calendar/ExternalDraggable.jsx b/src/component/calendar/ExternalDraggable.jsx new file mode 100644 index 0000000..9ae460c --- /dev/null +++ b/src/component/calendar/ExternalDraggable.jsx @@ -0,0 +1,28 @@ +import React, { useEffect, useRef } from "react"; +import { Draggable } from "@fullcalendar/interaction"; + +const ExternalDraggable = ({dummyEvents}) => { + const eventContainerRef = useRef(null); + + useEffect(() => { + // Make the external events draggable + new Draggable(eventContainerRef.current, { + itemSelector: ".fc-event", + eventData: (eventEl) => ({ + title: eventEl.innerText.trim(), + }), + }); + }, []); + + return ( +
+ {dummyEvents.map((item, index) => ( +
+ {item.title} +
+ ))} +
+ ); +}; + +export default ExternalDraggable; diff --git a/src/component/calendar/event-utils.js b/src/component/calendar/event-utils.js index 566934c..70f85e8 100644 --- a/src/component/calendar/event-utils.js +++ b/src/component/calendar/event-utils.js @@ -15,13 +15,6 @@ export const INITIAL_EVENTS = [ start: todayStr + 'T12:00:00', // color: 'red' }, - { - id: createEventId(), - title: 'Timed event 2', - start: new Date('2025-01-25'), - start: new Date('2025-01-26'), - // color: 'blue' - }, ]; export function createEventId() { diff --git a/src/css/style.scss b/src/css/style.scss index ba10949..39f9815 100644 --- a/src/css/style.scss +++ b/src/css/style.scss @@ -141,6 +141,7 @@ $event-padding: 10px; color: #fff!important; border: none; background-color: #8E54E9!important; + text-transform: capitalize !important; } .fc-event.fc-event-draggable.fc-event-start.fc-event-end.fc-daygrid-event, -- 2.34.1