1
0

widgets.rs 2.6 KB

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