all.rs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. rsx! {
  2. // Simple case
  3. div { key: "a", class: "ban", style: "color: red" }
  4. // Many attributes
  5. div {
  6. div {
  7. key: "ddd",
  8. class: "asd",
  9. class: "asd",
  10. class: "asd",
  11. class: "asd",
  12. class: "asd",
  13. class: "asd",
  14. blah: 123,
  15. onclick: move |_| {
  16. let blah = 120;
  17. true
  18. },
  19. onclick: move |_| {
  20. let blah = 120;
  21. true
  22. },
  23. onclick: move |_| {
  24. let blah = 120;
  25. true
  26. },
  27. onclick: move |_| {
  28. let blah = 120;
  29. true
  30. },
  31. div {
  32. div { "hi" }
  33. h2 { class: "asd" }
  34. }
  35. Component {}
  36. // Generics
  37. Component<Generic> {}
  38. }
  39. }
  40. // Intertwined comments
  41. div { adsasd: "asd",
  42. h1 { "asd" }
  43. div {
  44. div { "hello" }
  45. div { "goodbye" }
  46. div { class: "broccoli", div { "hi" } }
  47. div { class: "broccolibroccolibroccolibroccolibroccolibroccolibroccolibroccolibroccolibroccoli",
  48. div { "hi" }
  49. }
  50. div {
  51. class: "alksdjasd",
  52. onclick: move |_| {
  53. liberty!();
  54. },
  55. div { "hi" }
  56. }
  57. commented {
  58. // is unparalled
  59. class: "asdasd",
  60. // My genius
  61. div { "hi" }
  62. div {}
  63. }
  64. }
  65. }
  66. // Regular comments
  67. div { adsasd: "asd", block: "asd",
  68. // this is a comment
  69. "hello"
  70. // this is a comment 1
  71. // this is a comment 2
  72. "hello"
  73. div {
  74. // this is a comment
  75. "hello"
  76. }
  77. div { key: "asd", class: "asdsda",
  78. div {}
  79. h3 {}
  80. }
  81. }
  82. // Components
  83. Component {
  84. adsasd: "asd",
  85. // this is a comment
  86. onclick: move |_| {
  87. let blah = 120;
  88. let blah = 122;
  89. }
  90. }
  91. // Manual props
  92. div {
  93. Component {
  94. adsasd: "asd",
  95. onclick: move |_| {
  96. let a = a;
  97. },
  98. div { "thing" }
  99. }
  100. Component {
  101. asdasd: "asdasd",
  102. asdasd: "asdasdasdasdasdasdasdasdasdasd",
  103. ..Props {
  104. a: 10,
  105. b: 20
  106. }
  107. }
  108. Component {
  109. asdasd: "asdasd",
  110. ..Props {
  111. a: 10,
  112. b: 20,
  113. c: {
  114. fn main() {}
  115. },
  116. }
  117. "content"
  118. }
  119. }
  120. // Long attributes
  121. div {
  122. a: "1234567891012345678910123456789101234567891012345678910123456789101234567891012345678910123456789101234567891012345678910",
  123. a: "123",
  124. a: "123",
  125. a: "123",
  126. a: "123",
  127. a: "123",
  128. a: "123",
  129. a: "123",
  130. a: "123"
  131. }
  132. // Short attributes
  133. div { a: "123", a: "123", a: "123", a: "123", a: "123", a: "123", a: "123", a: "123", a: "123" }
  134. // Compression
  135. h3 { class: "mb-2 text-xl font-bold", "Invite Member" }
  136. a { class: "text-white", "Send invitation" }
  137. // Props on tops
  138. h3 { class: "mb-2 text-xl font-bold mb-2 text-xl font-bold mb-2 text-xl font-bold mb-2 text-xl font-bold mb-2 text-xl font-bold",
  139. "Invite Member"
  140. }
  141. // No children, minimal props
  142. img { class: "mb-6 mx-auto h-24", src: "artemis-assets/images/friends.png", alt: "" }
  143. // One level compression
  144. div {
  145. a { class: "py-2 px-3 bg-indigo-500 hover:bg-indigo-600 rounded text-xs text-white", href: "#", "Send invitation" }
  146. }
  147. // Tiny component
  148. Component { a: 123 }
  149. // Expressions
  150. ul {
  151. div {}
  152. (0..10).map(|f| rsx! {
  153. li { "hi" }
  154. })
  155. div {}
  156. }
  157. // Complex nesting with components
  158. button {
  159. class: "flex items-center pl-3 py-3 pr-2 text-gray-500 hover:bg-indigo-50 rounded",
  160. onclick: move |evt| {
  161. show_user_menu.set(!show_user_menu.get());
  162. evt.cancel_bubble();
  163. },
  164. onclick: move |evt| show_user_menu.set(!show_user_menu.get()),
  165. span { class: "inline-block mr-4", icons::icon_14 {} }
  166. span { "Settings" }
  167. }
  168. // Complex nesting with handlers
  169. li {
  170. Link { class: "flex items-center pl-3 py-3 pr-4 {active_class} rounded", to: "{to}",
  171. span { class: "inline-block mr-3", icons::icon_0 {} }
  172. span { "{name}" }
  173. children.is_some().then(|| rsx! {
  174. span {
  175. class: "inline-block ml-auto hover:bg-gray-500",
  176. onclick: move |evt| {
  177. // open.set(!open.get());
  178. evt.cancel_bubble();
  179. },
  180. icons::icon_8 {}
  181. }
  182. })
  183. }
  184. div { class: "px-4",
  185. is_current.then(|| rsx!{ children })
  186. }
  187. }
  188. // No nesting
  189. Component {
  190. adsasd: "asd",
  191. onclick: move |_| {
  192. let blah = 120;
  193. }
  194. }
  195. // Component path
  196. my::thing::Component {
  197. adsasd: "asd",
  198. onclick: move |_| {
  199. let blah = 120;
  200. }
  201. }
  202. }