yew_bs/components/
close_button.rs1use yew::prelude::*;
2#[derive(Properties, PartialEq)]
3pub struct CloseButtonProps {
4 #[prop_or_default]
5 pub onclick: Option<Callback<MouseEvent>>,
6 #[prop_or_default]
7 pub disabled: bool,
8 #[prop_or_default]
9 pub white: bool,
10 #[prop_or_default]
11 pub class: Option<AttrValue>,
12 #[prop_or_default]
13 pub aria_label: Option<AttrValue>,
14 #[prop_or_default]
15 pub node_ref: NodeRef,
16}
17#[function_component(CloseButton)]
18pub fn close_button(props: &CloseButtonProps) -> Html {
19 let mut classes = Classes::new();
20 classes.push("btn-close");
21 if props.white {
22 classes.push("btn-close-white");
23 }
24 if let Some(class) = &props.class {
25 classes.push(class.to_string());
26 }
27 let aria_label = props.aria_label.clone().unwrap_or_else(|| "Close".into());
28 html! {
29 < button type = "button" class = { classes } disabled = { props.disabled }
30 onclick = { props.onclick.clone() } aria - label = { aria_label } ref = { props
31 .node_ref.clone() } > < span aria - hidden = "true" > { "×" } </ span > </
32 button >
33 }
34}