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