halogen-websocket-ipc-playzone/src/Main.purs

48 lines
1.0 KiB
Plaintext
Raw Normal View History

2016-01-18 22:17:22 +01:00
module Main where
import Prelude
import Control.Monad.Eff (Eff())
import Halogen
2016-03-24 18:22:10 +01:00
import Halogen.Util (awaitBody, runHalogenAff)
import Halogen.HTML.Indexed as H
import Halogen.HTML.Events.Indexed as E
2016-01-18 22:17:22 +01:00
data Query a = ToggleState a
type State = { on :: Boolean }
initialState :: State
initialState = { on: false }
2016-03-24 18:22:10 +01:00
ui :: forall g. Component State Query g
2016-03-24 17:48:29 +01:00
ui = component { render, eval }
2016-01-18 22:17:22 +01:00
where
render :: State -> ComponentHTML Query
render state =
H.div_
[ H.h1_
[ H.text "Hello world!" ]
, H.p_
[ H.text "Why not toggle this button:" ]
, H.button
[ E.onClick (E.input_ ToggleState) ]
[ H.text
if not state.on
then "Don't push me"
else "I said don't push me!"
]
]
eval :: Natural Query (ComponentDSL State Query g)
eval (ToggleState next) = do
modify (\state -> { on: not state.on })
pure next
main :: Eff (HalogenEffects ()) Unit
2016-03-24 18:22:10 +01:00
main = runHalogenAff do
2016-03-24 17:48:29 +01:00
body <- awaitBody
runUI ui initialState body