widgets.rs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. use dioxus::prelude::*;
  2. use dioxus_html::FormData;
  3. use dioxus_tui::prelude::*;
  4. fn main() {
  5. dioxus_tui::launch_cfg(app, Config::new());
  6. }
  7. fn app(cx: Scope) -> Element {
  8. let bg_green = use_state(cx, || false);
  9. let color = if *bg_green.get() { "green" } else { "red" };
  10. cx.render(rsx! {
  11. div{
  12. width: "100%",
  13. background_color: "{color}",
  14. flex_direction: "column",
  15. align_items: "center",
  16. justify_content: "center",
  17. Input{
  18. oninput: |data: FormData| if &data.value == "good"{
  19. bg_green.set(true);
  20. } else{
  21. bg_green.set(false);
  22. },
  23. r#type: "checkbox",
  24. value: "good",
  25. width: "50%",
  26. height: "10%",
  27. checked: "true",
  28. }
  29. Input{
  30. oninput: |data: FormData| if &data.value == "hello world"{
  31. bg_green.set(true);
  32. } else{
  33. bg_green.set(false);
  34. },
  35. width: "50%",
  36. height: "10%",
  37. maxlength: "11",
  38. }
  39. Input{
  40. oninput: |data: FormData| {
  41. if (data.value.parse::<f32>().unwrap() - 40.0).abs() < 5.0 {
  42. bg_green.set(true);
  43. } else{
  44. bg_green.set(false);
  45. }
  46. },
  47. r#type: "range",
  48. width: "50%",
  49. height: "10%",
  50. min: "20",
  51. max: "80",
  52. }
  53. Input{
  54. oninput: |data: FormData| {
  55. if data.value == "10"{
  56. bg_green.set(true);
  57. } else{
  58. bg_green.set(false);
  59. }
  60. },
  61. r#type: "number",
  62. width: "50%",
  63. height: "10%",
  64. maxlength: "4",
  65. }
  66. Input{
  67. oninput: |data: FormData| {
  68. if data.value == "hello world"{
  69. bg_green.set(true);
  70. } else{
  71. bg_green.set(false);
  72. }
  73. },
  74. r#type: "password",
  75. width: "50%",
  76. height: "10%",
  77. maxlength: "11",
  78. }
  79. Input{
  80. onclick: |_: FormData| bg_green.set(true),
  81. r#type: "button",
  82. value: "green",
  83. width: "50%",
  84. height: "10%",
  85. }
  86. }
  87. })
  88. }