# SpinButton ```rust demo let value = RwSignal::new(0); let value_f64 = RwSignal::new(0.0); view! { } ``` ### Min / Max ```rust demo let value = RwSignal::new(0); view! { } ``` ### Disabled ```rust demo let value = RwSignal::new(0); view! { } ``` ### Custom parsing ```rust demo let value = RwSignal::new(0.0); let format = move |v: f64| { let v = v.to_string(); let dot_pos = v.chars().position(|c| c == '.').unwrap_or_else(|| v.chars().count()); let mut int: String = v.chars().take(dot_pos).collect(); let sign: String = if v.chars().take(1).collect::() == String::from("-") { int = int.chars().skip(1).collect(); String::from("-") } else { String::from("") }; let dec: String = v.chars().skip(dot_pos + 1).take(2).collect(); let int = int .as_bytes() .rchunks(3) .rev() .map(std::str::from_utf8) .collect::, _>>() .unwrap() .join("."); format!("{}{},{:0<2}", sign, int, dec) }; let parser = move |v: String| { let comma_pos = v.chars().position(|c| c == ',').unwrap_or_else(|| v.chars().count()); let int_part = v.chars().take(comma_pos).filter(|a| a.is_digit(10)).collect::(); let dec_part = v.chars().skip(comma_pos + 1).take(2).filter(|a| a.is_digit(10)).collect::(); format!("{:0<1}.{:0<2}", int_part, dec_part).parse::().ok() }; view! {

"Underlying value: "{ value }

} ```