dioxus_bootstrap_css/
breadcrumb.rs1use dioxus::prelude::*;
2
3#[derive(Clone, PartialEq, Props)]
15pub struct BreadcrumbProps {
16 #[props(default)]
18 pub class: String,
19 pub children: Element,
21}
22
23#[component]
24pub fn Breadcrumb(props: BreadcrumbProps) -> Element {
25 let full_class = if props.class.is_empty() {
26 "breadcrumb".to_string()
27 } else {
28 format!("breadcrumb {}", props.class)
29 };
30
31 rsx! {
32 nav { "aria-label": "breadcrumb",
33 ol { class: "{full_class}", {props.children} }
34 }
35 }
36}
37
38#[derive(Clone, PartialEq, Props)]
40pub struct BreadcrumbItemProps {
41 #[props(default)]
43 pub href: String,
44 #[props(default)]
46 pub active: bool,
47 #[props(default)]
49 pub class: String,
50 pub children: Element,
52}
53
54#[component]
55pub fn BreadcrumbItem(props: BreadcrumbItemProps) -> Element {
56 let mut classes = vec!["breadcrumb-item".to_string()];
57 if props.active {
58 classes.push("active".to_string());
59 }
60 if !props.class.is_empty() {
61 classes.push(props.class.clone());
62 }
63 let full_class = classes.join(" ");
64
65 if props.active {
66 rsx! {
67 li {
68 class: "{full_class}",
69 "aria-current": "page",
70 {props.children}
71 }
72 }
73 } else {
74 rsx! {
75 li { class: "{full_class}",
76 a { href: "{props.href}", {props.children} }
77 }
78 }
79 }
80}