Implement drag-to-move functionality for events in week view with CalDAV server integration
- Add drag-to-move event handlers to existing events in week view - Extend drag state management to support both create and move operations - Implement visual feedback with event preview during drag and hidden original - Calculate new start/end times while preserving event duration - Add CalDAV server update integration via calendar service - Wire event update callbacks through component hierarchy (WeekView → Calendar → RouteHandler → App) - Preserve all original event properties (title, description, location, reminders, etc.) - Handle timezone conversion from local to UTC for server storage - Add error handling with user feedback and success confirmation - Include moving event CSS styling with enhanced visual feedback 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		| @@ -27,6 +27,8 @@ pub struct RouteHandlerProps { | ||||
|     #[prop_or_default] | ||||
|     pub on_create_event_request: Option<Callback<crate::components::EventCreationData>>, | ||||
|     #[prop_or_default] | ||||
|     pub on_event_update_request: Option<Callback<(CalendarEvent, chrono::NaiveDateTime, chrono::NaiveDateTime)>>, | ||||
|     #[prop_or_default] | ||||
|     pub context_menus_open: bool, | ||||
| } | ||||
|  | ||||
| @@ -39,6 +41,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|     let on_calendar_context_menu = props.on_calendar_context_menu.clone(); | ||||
|     let view = props.view.clone(); | ||||
|     let on_create_event_request = props.on_create_event_request.clone(); | ||||
|     let on_event_update_request = props.on_event_update_request.clone(); | ||||
|     let context_menus_open = props.context_menus_open; | ||||
|      | ||||
|     html! { | ||||
| @@ -50,6 +53,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|             let on_calendar_context_menu = on_calendar_context_menu.clone(); | ||||
|             let view = view.clone(); | ||||
|             let on_create_event_request = on_create_event_request.clone(); | ||||
|             let on_event_update_request = on_event_update_request.clone(); | ||||
|             let context_menus_open = context_menus_open; | ||||
|              | ||||
|             match route { | ||||
| @@ -76,6 +80,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|                                 on_calendar_context_menu={on_calendar_context_menu} | ||||
|                                 view={view} | ||||
|                                 on_create_event_request={on_create_event_request} | ||||
|                                 on_event_update_request={on_event_update_request} | ||||
|                                 context_menus_open={context_menus_open} | ||||
|                             />  | ||||
|                         } | ||||
| @@ -100,6 +105,8 @@ pub struct CalendarViewProps { | ||||
|     #[prop_or_default] | ||||
|     pub on_create_event_request: Option<Callback<crate::components::EventCreationData>>, | ||||
|     #[prop_or_default] | ||||
|     pub on_event_update_request: Option<Callback<(CalendarEvent, chrono::NaiveDateTime, chrono::NaiveDateTime)>>, | ||||
|     #[prop_or_default] | ||||
|     pub context_menus_open: bool, | ||||
| } | ||||
|  | ||||
| @@ -261,6 +268,7 @@ pub fn calendar_view(props: &CalendarViewProps) -> Html { | ||||
|                                 on_calendar_context_menu={props.on_calendar_context_menu.clone()} | ||||
|                                 view={props.view.clone()} | ||||
|                                 on_create_event_request={props.on_create_event_request.clone()} | ||||
|                                 on_event_update_request={props.on_event_update_request.clone()} | ||||
|                                 context_menus_open={props.context_menus_open} | ||||
|                             /> | ||||
|                         </div> | ||||
| @@ -276,6 +284,7 @@ pub fn calendar_view(props: &CalendarViewProps) -> Html { | ||||
|                             on_calendar_context_menu={props.on_calendar_context_menu.clone()} | ||||
|                             view={props.view.clone()} | ||||
|                             on_create_event_request={props.on_create_event_request.clone()} | ||||
|                             on_event_update_request={props.on_event_update_request.clone()} | ||||
|                             context_menus_open={props.context_menus_open} | ||||
|                         /> | ||||
|                     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Connor Johnstone
					Connor Johnstone