2025-09-03 04:14:50 +02:00
|
|
|
package scalive
|
|
|
|
|
package playground
|
|
|
|
|
|
2025-08-17 22:52:22 +02:00
|
|
|
import scalive.*
|
2025-09-03 22:38:52 +02:00
|
|
|
import zio.*
|
2025-08-17 22:52:22 +02:00
|
|
|
|
2025-09-03 22:38:52 +02:00
|
|
|
import TestView.*
|
|
|
|
|
class TestView extends LiveView[Msg, Model]:
|
2025-08-17 22:52:22 +02:00
|
|
|
|
2025-09-03 22:38:52 +02:00
|
|
|
def init = ZIO.succeed(Model())
|
2025-08-17 22:52:22 +02:00
|
|
|
|
2025-09-03 22:38:52 +02:00
|
|
|
def update(model: Model) =
|
|
|
|
|
case Msg.UpdateModel(f) => ZIO.succeed(f(model))
|
2025-08-17 22:52:22 +02:00
|
|
|
|
2025-09-03 22:38:52 +02:00
|
|
|
def view(model: Dyn[Model]) =
|
2025-08-17 22:52:22 +02:00
|
|
|
div(
|
2025-08-19 21:23:29 +02:00
|
|
|
idAttr := "42",
|
2025-09-03 22:38:52 +02:00
|
|
|
cls := model(_.cls),
|
|
|
|
|
disabled := model(_.bool),
|
2025-08-17 22:52:22 +02:00
|
|
|
ul(
|
2025-09-03 22:38:52 +02:00
|
|
|
model(_.elems).splitByIndex((_, elem) =>
|
2025-08-17 22:52:22 +02:00
|
|
|
li(
|
|
|
|
|
"Nom: ",
|
|
|
|
|
elem(_.name),
|
|
|
|
|
" Age: ",
|
|
|
|
|
elem(_.age.toString)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
object TestView:
|
2025-09-03 22:38:52 +02:00
|
|
|
|
|
|
|
|
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)
|