1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use dioxus::prelude::*;
#[allow(non_snake_case,dead_code)]
#[inline_props]
pub fn PfLabel<'a>(cx: Scope<'a>, icon_name: Option<&'a str>, append_class: Option<&'a str>, children: Element<'a>) -> Element {
let append_class = format!("pf-c-label {}", append_class.unwrap_or(""));
if icon_name.is_some() {
let icon_name = icon_name.unwrap();
cx.render(rsx! {
span { class: "{append_class}",
i { class: "fas fa-fw {icon_name}", aria_hidden: "true", }
children
}
})
} else {
cx.render(rsx! {
span { class: "{append_class}", children }
})
}
}
#[allow(non_snake_case,dead_code)]
#[inline_props]
pub fn PfLabelGroup<'a> (cx: Scope, selected: &'a UseState<Vec<String>>) -> Element {
let is_close = use_state(&cx, || false);
let labels = selected.get().clone();
cx.render(rsx! {
div { class: "pf-c-label-group",
labels.into_iter().map(|label| rsx!{
div {
onclick: move |_| {is_close.set(!is_close.get());},
PfLabel { "{label}"
i {
class: "fas fa-times-circle pf-c-label__close",
aria_hidden: "true",
hidden: "{is_close}",
onclick: move |_| {selected.set(selected.get().iter().filter(|x| **x != label).map(|x| x.to_string()).collect())}
}
}
}
})
}
})
}