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:
@@ -13,6 +13,8 @@ pub struct CalendarProps {
|
||||
pub refreshing_event_uid: Option<String>,
|
||||
#[prop_or_default]
|
||||
pub user_info: Option<UserInfo>,
|
||||
#[prop_or_default]
|
||||
pub on_event_context_menu: Option<Callback<(web_sys::MouseEvent, CalendarEvent)>>,
|
||||
}
|
||||
|
||||
#[function_component]
|
||||
@@ -131,6 +133,18 @@ pub fn Calendar(props: &CalendarProps) -> Html {
|
||||
on_event_click.emit(event_clone.clone());
|
||||
selected_event_clone.set(Some(event_clone.clone()));
|
||||
});
|
||||
|
||||
let event_context_menu = {
|
||||
let event_clone = event.clone();
|
||||
let on_event_context_menu = props.on_event_context_menu.clone();
|
||||
Callback::from(move |e: MouseEvent| {
|
||||
e.prevent_default();
|
||||
e.stop_propagation();
|
||||
if let Some(callback) = &on_event_context_menu {
|
||||
callback.emit((e, event_clone.clone()));
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
let title = event.get_title();
|
||||
let is_refreshing = props.refreshing_event_uid.as_ref() == Some(&event.uid);
|
||||
@@ -140,6 +154,7 @@ pub fn Calendar(props: &CalendarProps) -> Html {
|
||||
<div class={class_name}
|
||||
title={title.clone()}
|
||||
onclick={event_click}
|
||||
oncontextmenu={event_context_menu}
|
||||
style={format!("background-color: {}", event_color)}>
|
||||
{
|
||||
if is_refreshing {
|
||||
|
||||
Reference in New Issue
Block a user