dioxus_bulma/components/
delete.rs1use dioxus::prelude::*;
2use crate::theme::BulmaSize;
3use crate::utils::build_class;
4
5#[derive(Props, Clone, PartialEq)]
6pub struct DeleteProps {
7 #[props(default)]
8 pub size: Option<BulmaSize>,
9 #[props(default)]
10 pub onclick: Option<EventHandler<MouseEvent>>,
11 #[props(default)]
12 pub id: Option<String>,
13 #[props(default)]
14 pub class: Option<String>,
15 #[props(default)]
16 pub style: Option<String>,
17}
18
19#[component]
20pub fn Delete(props: DeleteProps) -> Element {
21 let size = props.size.unwrap_or_default();
22
23 let base_classes = vec!["delete"];
24 let optional_classes = vec![
25 if size != BulmaSize::Normal { Some(size.as_class().to_string()) } else { None },
26 props.class.clone(),
27 ];
28
29 let final_class = build_class(&base_classes, &optional_classes);
30 let delete_style = props.style.as_deref().unwrap_or("");
31
32 rsx! {
33 button {
34 class: "{final_class}",
35 style: "{delete_style}",
36 id: props.id.clone(),
37 "aria-label": "delete",
38 onclick: move |evt| {
39 if let Some(handler) = &props.onclick {
40 handler.call(evt);
41 }
42 }
43 }
44 }
45}