patternfly_dioxus/
toast.rs

1use std::time::Duration;
2
3use dioxus::prelude::*;
4
5#[allow(non_snake_case,dead_code)]
6#[inline_props]
7pub fn PfToast<'a>(cx: Scope<'a>, timeout: Option<Duration>, children: Element<'a>) -> Element {
8    let is_hidden = use_state(&cx, || false);
9    if let Some(duration) = timeout {
10        let duration = duration.clone();
11        let is_hidden = is_hidden.clone();
12        use_effect(&cx, (), |()| async move {
13            let _ = tokio::time::sleep(duration).await;
14            is_hidden.set(true);
15        });
16    }
17    if !is_hidden.get() {
18        cx.render(rsx! {
19            span {
20                hidden: "{is_hidden}",
21                children,
22            }
23        })
24    } else {
25        cx.render(rsx!{ ""})
26    }
27}