dioxus_tw_components/components/
button.rs1use dioxus::prelude::*;
2
3#[derive(Clone, PartialEq, Props)]
4pub struct ButtonProps {
5 #[props(extends = button, extends = GlobalAttributes)]
7 attributes: Vec<Attribute>,
8
9 #[props(optional)]
11 onclick: EventHandler<MouseEvent>,
12 #[props(optional)]
14 ondoubleclick: EventHandler<MouseEvent>,
15 #[props(optional)]
17 onmousedown: EventHandler<MouseEvent>,
18 #[props(optional)]
20 onmouseup: EventHandler<MouseEvent>,
21
22 #[props(default = false)]
24 noclasses: bool,
25
26 children: Element,
28}
29
30#[component]
31pub fn Button(mut props: ButtonProps) -> Element {
32 let default_classes = "button";
33 crate::setup_class_attribute(&mut props.attributes, default_classes);
34
35 let onclick = move |event| props.onclick.call(event);
36 let ondoubleclick = move |event| props.ondoubleclick.call(event);
37 let onmousedown = move |event| props.onmousedown.call(event);
38 let onmouseup = move |event| props.onmouseup.call(event);
39
40 rsx! {
41 button {
42 onclick,
43 ondoubleclick,
44 onmousedown,
45 onmouseup,
46 ..props.attributes,
47 {props.children}
48 }
49 }
50}