widgets.rs 2.7 KB

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