use crate::components::ViewMode; use chrono::{Datelike, NaiveDate}; use web_sys::MouseEvent; use yew::prelude::*; #[derive(Properties, PartialEq)] pub struct CalendarHeaderProps { pub current_date: NaiveDate, pub view_mode: ViewMode, pub on_prev: Callback, pub on_next: Callback, pub on_today: Callback, #[prop_or_default] pub time_increment: Option, #[prop_or_default] pub on_time_increment_toggle: Option>, #[prop_or_default] pub on_print: Option>, } #[function_component(CalendarHeader)] pub fn calendar_header(props: &CalendarHeaderProps) -> Html { let title = format!( "{} {}", get_month_name(props.current_date.month()), props.current_date.year() ); html! {
{ if let (Some(increment), Some(callback)) = (props.time_increment, &props.on_time_increment_toggle) { html! { } } else { html! {} } } { if let Some(print_callback) = &props.on_print { html! { } } else { html! {} } }

{title}

} } fn get_month_name(month: u32) -> &'static str { match month { 1 => "January", 2 => "February", 3 => "March", 4 => "April", 5 => "May", 6 => "June", 7 => "July", 8 => "August", 9 => "September", 10 => "October", 11 => "November", 12 => "December", _ => "Invalid", } }