yew-full-calendar 0.1.1

Yew component for fullcalendar
Documentation
#[derive(Debug, Clone, serde::Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CalendarEventDetail {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub title: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub all_day: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub editable: Option<bool>,
    #[serde(
        deserialize_with = "super::deserialize_optional_date",
        skip_serializing
    )]
    pub start: Option<web_sys::js_sys::Date>,
    #[serde(
        deserialize_with = "super::deserialize_optional_date",
        skip_serializing
    )]
    pub end: Option<web_sys::js_sys::Date>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub start_str: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub end_str: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub display: Option<super::EventDisplay>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
    #[serde(
        deserialize_with = "super::deserialize_optional_js_value",
        skip_serializing_if = "Option::is_none"
    )]
    extended_props: Option<web_sys::js_sys::Object>,
}

impl TryFrom<web_sys::wasm_bindgen::JsValue> for CalendarEventDetail {
    type Error = web_sys::wasm_bindgen::JsValue;
    fn try_from(value: web_sys::wasm_bindgen::JsValue) -> Result<Self, Self::Error> {
        Ok(serde_wasm_bindgen::from_value(value)?)
    }
}

impl CalendarEventDetail {
    #[must_use]
    pub fn extended_props<T: serde::de::DeserializeOwned>(&self) -> Option<T> {
        self.extended_props
            .clone()
            .and_then(|obj| serde_wasm_bindgen::from_value(obj.into()).ok())
    }
}