mirror of
https://github.com/phfroidmont/scalive.git
synced 2025-12-25 13:36:59 +01:00
Fix JS build and move example to its own module
This commit is contained in:
parent
73510857a6
commit
486e89c1f1
5 changed files with 64 additions and 63 deletions
20
example/src/Example.scala
Normal file
20
example/src/Example.scala
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import zio.*
|
||||
import zio.http.*
|
||||
import scalive.*
|
||||
|
||||
object Example extends ZIOAppDefault:
|
||||
|
||||
val liveRouter =
|
||||
LiveRouter(
|
||||
RootLayout(_),
|
||||
List(
|
||||
LiveRoute(
|
||||
Root,
|
||||
(_, req) =>
|
||||
val q = req.queryParam("q").map("Param : " ++ _).getOrElse("No param")
|
||||
ExampleLiveView(q)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
override val run = Server.serve(liveRouter.routes).provide(Server.default)
|
||||
36
example/src/ExampleLiveView.scala
Normal file
36
example/src/ExampleLiveView.scala
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import scalive.*
|
||||
|
||||
final case class ExampleModel(elems: List[NestedModel], cls: String = "text-xs")
|
||||
final case class NestedModel(name: String, age: Int)
|
||||
|
||||
class ExampleLiveView(someParam: String) extends LiveView[Nothing]:
|
||||
|
||||
val model = Var(
|
||||
ExampleModel(
|
||||
List(
|
||||
NestedModel("a", 10),
|
||||
NestedModel("b", 15),
|
||||
NestedModel("c", 20)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
def handleCommand(cmd: Nothing): Unit = ()
|
||||
|
||||
val el =
|
||||
div(
|
||||
h1(someParam),
|
||||
idAttr := "42",
|
||||
cls := model(_.cls),
|
||||
ul(
|
||||
model(_.elems).splitByIndex((_, elem) =>
|
||||
li(
|
||||
"Nom: ",
|
||||
elem(_.name),
|
||||
" Age: ",
|
||||
elem(_.age.toString)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
end ExampleLiveView
|
||||
13
example/src/RootLayout.scala
Normal file
13
example/src/RootLayout.scala
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import scalive.*
|
||||
|
||||
object RootLayout:
|
||||
def apply(content: HtmlElement): HtmlElement =
|
||||
htmlRootTag(
|
||||
lang := "en",
|
||||
headTag(
|
||||
metaTag(charset := "utf-8")
|
||||
),
|
||||
bodyTag(
|
||||
content
|
||||
)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue