Implement event deletion with right-click context menu
- Add EventContextMenu component with delete option - Create DELETE /api/calendar/events/delete endpoint - Implement CalDAV event deletion in backend - Add proper URL construction for CalDAV event hrefs - Integrate context menu with calendar event right-clicks - Auto-refresh UI after successful event deletion 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										47
									
								
								src/components/event_context_menu.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/components/event_context_menu.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| use yew::prelude::*; | ||||
| use web_sys::MouseEvent; | ||||
|  | ||||
| #[derive(Properties, PartialEq)] | ||||
| pub struct EventContextMenuProps { | ||||
|     pub is_open: bool, | ||||
|     pub x: i32, | ||||
|     pub y: i32, | ||||
|     pub on_delete: Callback<MouseEvent>, | ||||
|     pub on_close: Callback<()>, | ||||
| } | ||||
|  | ||||
| #[function_component(EventContextMenu)] | ||||
| pub fn event_context_menu(props: &EventContextMenuProps) -> Html { | ||||
|     let menu_ref = use_node_ref(); | ||||
|      | ||||
|     if !props.is_open { | ||||
|         return html! {}; | ||||
|     } | ||||
|  | ||||
|     let style = format!( | ||||
|         "position: fixed; left: {}px; top: {}px; z-index: 1001;", | ||||
|         props.x, props.y | ||||
|     ); | ||||
|  | ||||
|     let on_delete_click = { | ||||
|         let on_delete = props.on_delete.clone(); | ||||
|         let on_close = props.on_close.clone(); | ||||
|         Callback::from(move |e: MouseEvent| { | ||||
|             on_delete.emit(e); | ||||
|             on_close.emit(()); | ||||
|         }) | ||||
|     }; | ||||
|  | ||||
|     html! { | ||||
|         <div  | ||||
|             ref={menu_ref} | ||||
|             class="context-menu"  | ||||
|             style={style} | ||||
|         > | ||||
|             <div class="context-menu-item context-menu-delete" onclick={on_delete_click}> | ||||
|                 <span class="context-menu-icon">{"🗑️"}</span> | ||||
|                 {"Delete Event"} | ||||
|             </div> | ||||
|         </div> | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Connor Johnstone
					Connor Johnstone