use crate::class::Class;
use dioxus::prelude::*;
use zino_core::SharedString;
pub fn Message(props: MessageProps) -> Element {
if props.hidden {
return rsx! {};
}
rsx! {
div {
class: props.class,
if !props.title.is_empty() {
div {
class: "message-header",
span { { props.title } }
button {
r#type: "button",
class: props.close_class,
onclick: move |_event| {
if let Some(handler) = props.on_close.as_ref() {
handler.call(false);
}
}
}
}
}
div {
class: "message-body",
{ props.children }
}
}
}
}
#[derive(Clone, PartialEq, Props)]
pub struct MessageProps {
#[props(into, default = "message")]
pub class: Class,
#[props(into, default = "delete")]
pub close_class: Class,
pub on_close: Option<EventHandler<bool>>,
#[props(default)]
pub hidden: bool,
#[props(into, default)]
pub title: SharedString,
children: Element,
}