patternfly_dioxus/
alert.rs1use dioxus::prelude::*;
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq)]
4pub enum Variation {
5 Default,
6 Info,
7 Success,
8 Warning,
9 Danger,
10}
11
12#[allow(non_snake_case)]
13#[inline_props]
14pub fn PfAlert<'a>(
15 cx: Scope<'a>,
16 variation: Option<Variation>,
17 title: Option<&'a str>,
18 children: Element<'a>,
19) -> Element {
20 let title = title.unwrap_or("");
21 let variation = variation.unwrap_or(Variation::Default);
22 let css = match variation {
23 Variation::Default => "pf-c-alert",
24 Variation::Info => "pf-c-alert pf-m-info",
25 Variation::Success => "pf-c-alert pf-m-success",
26 Variation::Warning => "pf-c-alert pf-m-warning",
27 Variation::Danger => "pf-c-alert pf-m-danger",
28 };
29
30 let iconcss = match variation {
31 Variation::Default => "fas fa-exclamation-circle",
32 Variation::Info => "fas fa-info-circle",
33 Variation::Success => "fas fa-check-circle",
34 Variation::Warning => "fas fa-exclamation-triangle",
35 Variation::Danger => "fas fa-exclamation-circle",
36 };
37
38 cx.render(rsx! {
39 div {
40 class: "{css}",
41 div { class: "pf-c-alert__icon",
42 i { class: "{iconcss}",}
43 },
44
45 p { class: "pf-c-alert__title",
46 span { class: "pf-screen-reader", "Default alert:" },
47 "{title}"
48 }
49
50 rsx!{ p { class: "pf-c-alert__description", children }}
51
52 },
53
54 })
55}