use crate::class::Class;
use dioxus::prelude::*;
pub fn Notification(props: NotificationProps) -> Element {
let class = props.class;
let close_class = props.close_class;
let hidden_class = Class::check("is-hidden", !props.visible);
rsx! {
div {
class: "{class} {hidden_class}",
position: "fixed",
top: "4rem",
right: "0.75rem",
z_index: 9999,
if props.on_close.is_some() {
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, default = "notification".into())]
pub class: Class,
#[props(into, default = "delete".into())]
pub close_class: Class,
pub on_close: Option<EventHandler<MouseEvent>>,
#[props(default)]
pub visible: bool,
children: Element,
}