use yew::prelude::*; use chrono::NaiveDateTime; use crate::models::ical::VEvent; #[derive(Clone, PartialEq)] pub enum RecurringEditAction { ThisEvent, FutureEvents, AllEvents, } #[derive(Properties, PartialEq)] pub struct RecurringEditModalProps { pub show: bool, pub event: VEvent, pub new_start: NaiveDateTime, pub new_end: NaiveDateTime, pub on_choice: Callback, pub on_cancel: Callback<()>, } #[function_component(RecurringEditModal)] pub fn recurring_edit_modal(props: &RecurringEditModalProps) -> Html { if !props.show { return html! {}; } let event_title = props.event.summary.as_ref().map(|s| s.as_str()).unwrap_or("Untitled Event"); let on_this_event = { let on_choice = props.on_choice.clone(); Callback::from(move |_| { on_choice.emit(RecurringEditAction::ThisEvent); }) }; let on_future_events = { let on_choice = props.on_choice.clone(); Callback::from(move |_| { on_choice.emit(RecurringEditAction::FutureEvents); }) }; let on_all_events = { let on_choice = props.on_choice.clone(); Callback::from(move |_| { on_choice.emit(RecurringEditAction::AllEvents); }) }; let on_cancel = { let on_cancel = props.on_cancel.clone(); Callback::from(move |_| { on_cancel.emit(()); }) }; html! { } }