use crate::{class::Class, format_class};
use dioxus::prelude::*;
pub fn Notification<'a>(cx: Scope<'a, NotificationProps<'a>>) -> Element {
let close_notification = use_state(cx, || false);
if *close_notification.get() {
None
} else {
let class = format_class!(cx, "notification");
let close_class = format_class!(cx, close_class, "delete");
render! {
div {
class: "{class}",
button {
class: "{close_class}",
onclick: move |event| {
if let Some(handler) = cx.props.on_close.as_ref() {
handler.call(event);
}
close_notification.set(true);
}
}
&cx.props.children
}
}
}
}
#[derive(Props)]
pub struct NotificationProps<'a> {
#[props(into)]
pub class: Option<Class<'a>>,
#[props(into)]
pub close_class: Option<Class<'a>>,
pub on_close: Option<EventHandler<'a, MouseEvent>>,
children: Element<'a>,
}