Skip to main content

dioxus_bulma/components/
delete.rs

1use 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}