use crate::{class::Class, format_class};
use dioxus::prelude::*;
pub fn Notification(props: NotificationProps) -> Element {
let class = format_class!(props, "notification");
let close_class = format_class!(props, close_class, "delete");
let hidden_class = Class::check("is-hidden", !props.visible);
rsx! {
div {
class: "{class} {hidden_class}",
button {
class: "{close_class}",
onclick: move |event| {
if let Some(handler) = props.on_close.as_ref() {
handler.call(event);
}
}
}
{ props.children }
}
}
}
#[derive(Clone, PartialEq, Props)]
pub struct NotificationProps {
#[props(into)]
pub class: Option<Class>,
#[props(into)]
pub close_class: Option<Class>,
pub on_close: Option<EventHandler<MouseEvent>>,
#[props(default = false)]
pub visible: bool,
children: Element,
}