use dioxus::prelude::*; #[derive(PartialEq, Clone, Props)] pub struct InputProps { pub r#type: Option, pub value: Option>, pub label: Option, pub placeholder: Option, pub name: String, pub oninput: Option>>, pub required: Option, } #[component] pub fn Input(props: InputProps) -> Element { let label = props.label.unwrap_or("".into()); let ph = props.placeholder.unwrap_or(label.clone()); rsx! { label { "{label}" input { r#type: props.r#type.unwrap_or("text".into()), value: props.value, oninput: move |e| { if let Some(mut s) = props.value { s.set(e.value()); } if let Some(handler) = props.oninput{ handler.call(e); } }, name: props.name, placeholder: ph, required: props.required, } } } }