calico
calico copied to clipboard
Pure, reactive UI library for Scala.js
Closes https://github.com/armanbilge/calico/issues/207. This PR introduces `Mod[IO, Elem]` which reifies modifier, as well as a `.toMod` syntax. This would make it possible to write: ```scala def MyComponent(mod: Mod[IO, HtmlElement[IO]]) = div(...
Closes https://github.com/armanbilge/calico/issues/202. Now you can write `onFoo **> effect` to evaluate an effect every time an event is emitted. The syntax is inspired by Cats `*>` aka `productR` i.e. a...
Or event handlers more generally, when you are trying to do something simple. Also related to the Elm-style usecase, where you just want to send a message and never do...
Well, for one, to help us write our own tests! 😬 Inspiration: https://github.com/raquo/scala-dom-testutils
See also: - https://github.com/armanbilge/calico/issues/207 - https://github.com/armanbilge/calico/issues/205 Consider this Laminar-style example: ```scala def MyComponent(mods: Mod[HtmlElement]*) = div( cls := "decoration", mods ) ``` At the moment this wouldn't work great with...
The reasons I originally chose this design were: - anything can be a `Modifier` (such as a `String`, `HtmlElement[IO]`, or `Signal`) without requiring implicit conversions, that are discouraged in Scala...
It would be nice to have a batteries included object to just import all members and givens to get started. It feels like a lot to import cats, cats effect,...
another good idea from @kubukoz. Something like ```scala Stream[IO, List[(K, Resource[IO, HTMLElement])]] ```
Really interesting ideas from @kubukoz: ```scala type ElemOfS[A] = A match { case fs2.Stream[_, a] => a } type ElemOfL[A] = A match { case List[a] => a } children[ElemOfL[ElemOfS[stream.type]]]