Complete drag-to-create event functionality with proper timezone handling
Integrate drag-to-create functionality with the full event creation pipeline: - Connect WeekView drag events to CreateEventModal via callback chain - Add event creation request callback through Calendar → RouteHandler → App - Implement proper timezone conversion throughout the entire flow - Fix pixels_to_time calculation (1px = 1 minute, not complex formula) - Add initial_start_time/initial_end_time props to CreateEventModal - Convert local times to UTC in both event creation and update functions - Ensure modal displays correct local times while backend receives UTC - Support both temporary drag events and real server events in modal The complete flow now works: drag selection → modal with correct times → proper UTC conversion → backend storage → correct display in calendar. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		| @@ -24,6 +24,8 @@ pub struct RouteHandlerProps { | ||||
|     pub on_calendar_context_menu: Option<Callback<(web_sys::MouseEvent, chrono::NaiveDate)>>, | ||||
|     #[prop_or_default] | ||||
|     pub view: ViewMode, | ||||
|     #[prop_or_default] | ||||
|     pub on_create_event_request: Option<Callback<crate::components::EventCreationData>>, | ||||
| } | ||||
|  | ||||
| #[function_component(RouteHandler)] | ||||
| @@ -34,6 +36,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|     let on_event_context_menu = props.on_event_context_menu.clone(); | ||||
|     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(); | ||||
|      | ||||
|     html! { | ||||
|         <Switch<Route> render={move |route| { | ||||
| @@ -43,6 +46,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|             let on_event_context_menu = on_event_context_menu.clone(); | ||||
|             let on_calendar_context_menu = on_calendar_context_menu.clone(); | ||||
|             let view = view.clone(); | ||||
|             let on_create_event_request = on_create_event_request.clone(); | ||||
|              | ||||
|             match route { | ||||
|                 Route::Home => { | ||||
| @@ -67,6 +71,7 @@ pub fn route_handler(props: &RouteHandlerProps) -> Html { | ||||
|                                 on_event_context_menu={on_event_context_menu} | ||||
|                                 on_calendar_context_menu={on_calendar_context_menu} | ||||
|                                 view={view} | ||||
|                                 on_create_event_request={on_create_event_request} | ||||
|                             />  | ||||
|                         } | ||||
|                     } else { | ||||
| @@ -87,6 +92,8 @@ pub struct CalendarViewProps { | ||||
|     pub on_calendar_context_menu: Option<Callback<(web_sys::MouseEvent, chrono::NaiveDate)>>, | ||||
|     #[prop_or_default] | ||||
|     pub view: ViewMode, | ||||
|     #[prop_or_default] | ||||
|     pub on_create_event_request: Option<Callback<crate::components::EventCreationData>>, | ||||
| } | ||||
|  | ||||
| use gloo_storage::{LocalStorage, Storage}; | ||||
| @@ -246,6 +253,7 @@ pub fn calendar_view(props: &CalendarViewProps) -> Html { | ||||
|                                 on_event_context_menu={props.on_event_context_menu.clone()} | ||||
|                                 on_calendar_context_menu={props.on_calendar_context_menu.clone()} | ||||
|                                 view={props.view.clone()} | ||||
|                                 on_create_event_request={props.on_create_event_request.clone()} | ||||
|                             /> | ||||
|                         </div> | ||||
|                     } | ||||
| @@ -259,6 +267,7 @@ pub fn calendar_view(props: &CalendarViewProps) -> Html { | ||||
|                             on_event_context_menu={props.on_event_context_menu.clone()} | ||||
|                             on_calendar_context_menu={props.on_calendar_context_menu.clone()} | ||||
|                             view={props.view.clone()} | ||||
|                             on_create_event_request={props.on_create_event_request.clone()} | ||||
|                         /> | ||||
|                     } | ||||
|                 } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Connor Johnstone
					Connor Johnstone