scalive/core/src/TestLiveView.scala

42 lines
827 B
Scala
Raw Normal View History

2025-09-03 04:14:50 +02:00
package scalive
package playground
2025-08-17 22:52:22 +02:00
import scalive.*
import zio.*
2025-08-17 22:52:22 +02:00
import TestView.*
class TestView extends LiveView[Msg, Model]:
2025-08-17 22:52:22 +02:00
def init = ZIO.succeed(Model())
2025-08-17 22:52:22 +02:00
def update(model: Model) =
case Msg.UpdateModel(f) => ZIO.succeed(f(model))
2025-08-17 22:52:22 +02:00
def view(model: Dyn[Model]) =
2025-08-17 22:52:22 +02:00
div(
idAttr := "42",
cls := model(_.cls),
disabled := model(_.bool),
2025-08-17 22:52:22 +02:00
ul(
model(_.elems).splitByIndex((_, elem) =>
2025-08-17 22:52:22 +02:00
li(
"Nom: ",
elem(_.name),
" Age: ",
elem(_.age.toString)
)
)
)
)
object TestView:
enum Msg:
case UpdateModel(f: Model => Model)
final case class Model(
cls: String = "text-xs",
bool: Boolean = true,
elems: List[Elem] = List.empty)
final case class Elem(name: String, age: Int)