zirv-ui 0.2.1

Component library for Yew
Documentation
use yew::{classes, function_component, html, Callback, Html, MouseEvent, Properties};

use crate::toast::utils::Notifiable;

use super::Toast;

#[derive(Properties, Clone, PartialEq)]
pub struct ToastComponentProps {
    pub toast: Toast,
    pub onclick: Callback<MouseEvent>,
    pub onenter: Callback<MouseEvent>,
    pub onleave: Callback<MouseEvent>,
}

#[function_component(ToastComponent)]
pub fn toast_component(props: &ToastComponentProps) -> Html {
    let title = &props.toast.title;
    let text = &props.toast.text;
    let toast_type = &props.toast.toast_type;

    let onclick = &props.onclick;
    let onenter = &props.onenter;
    let onleave = &props.onleave;

    let mut classes = vec![classes!("toast"), toast_type.into()];
    if props.toast.is_paused() {
        classes.push(classes!("paused"));
    }

    if let Some(additional_classes) = &props.toast.classes {
        classes.push(classes!(additional_classes));
    }

    html! {
        <div {onclick} onmouseenter={onenter} onmouseleave={onleave} class={classes}>
            <span class={classes!("toast-title")}>{title}</span>
            <span>{text}</span>
        </div>
    }
}