patternfly_dioxus/
toast.rs1use 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}