- Notifications
You must be signed in to change notification settings - Fork0
marubinotto/scalafui
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Scalafui is an experimental implementation of the Elm Architecture in Scala.js.
The following code is an example of a minimal application implementation using Scalafui.
importscala.scalajs.LinkingInfoimportorg.scalajs.domimportorg.scalajs.dom.URLimportcom.softwaremill.quicklens._importslinky.core.facade.ReactElementimportslinky.hotimportslinky.web.html._importfui._objectMain {//// MODEL//caseclassModel(messages:Seq[String]=Seq.empty,input:String="")definit(url:URL): (Model,Cmd[Msg])= (Model(),Cmd.none)//// UPDATE//sealedtraitMsgcaseclassInput(input:String)extendsMsgcaseobjectSendextendsMsgdefupdate(msg:Msg,model:Model): (Model,Cmd[Msg])= msgmatch {caseInput(input)=> ( model.modify(_.input).setTo(input),Cmd.none )caseSend=> ( model .modify(_.messages).using(_:+ model.input) .modify(_.input).setTo(""),Cmd.none ) }//// VIEW//defview(model:Model,dispatch:Msg=>Unit):ReactElement= div( h1("Welcome to Scalafui!"), form(className:="message-input")( input( value:= model.input, onInput:= (e=> dispatch(Input(e.target.value))) ), button( `type`:="submit", onClick:= (e=> { e.preventDefault() dispatch(Send) }) )("Send") ), div(className:="messages")( model.messages.map(div(className:="message")(_)) ) )defmain(args:Array[String]):Unit= {if (LinkingInfo.developmentMode) { hot.initialize() }Browser.runProgram( dom.document.getElementById("app"),Program(init, view, update) ) }}
In development mode, use two terminals in parallel:
$yarn$yarn run dev
sbt> ~fastLinkJS
- Scalafui's version ofTodoMVC
- examples/todo/src/main/scala/todo/Main.scala
$cd examples/todo$yarn$yarn run dev
sbt> ~exampleTodo/fastLinkJS
- Multi-page application withAjax calls
- Debounce Search Cmd
- examples/multipage/src/main/scala/multipage/Main.scala
$cd examples/multipage$yarn$yarn run dev
sbt> ~exampleMultipage/fastLinkJS
- An example of subscription which allows us to listen to external events
- examples/stopwatch/src/main/scala/stopwatch/Main.scala
$cd examples/stopwatch$yarn$yarn run dev
sbt> ~exampleStopwatch/fastLinkJS
About
Scalafui is an experimental implementation of the Elm Architecture in Scala.js
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.