diff options
author | Hayleigh Thompson <me@hayleigh.dev> | 2023-04-27 21:52:15 +0100 |
---|---|---|
committer | Hayleigh Thompson <me@hayleigh.dev> | 2023-04-27 21:52:15 +0100 |
commit | 10bc93f41efdd9aab25e1e0d29b02b3b961158c5 (patch) | |
tree | 9d9c8fc3daf61326b7ebe4781be8d58e7dc8444a /test/example/src | |
parent | 19ec0b446041f77a623e574656442c76d75107ae (diff) | |
download | lustre-10bc93f41efdd9aab25e1e0d29b02b3b961158c5.tar.gz lustre-10bc93f41efdd9aab25e1e0d29b02b3b961158c5.zip |
:bookmark: Code for 3.0.0-rc.13.0.0-rc.1
Diffstat (limited to 'test/example/src')
-rw-r--r-- | test/example/src/main.gleam | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/example/src/main.gleam b/test/example/src/main.gleam new file mode 100644 index 0000000..7c9400f --- /dev/null +++ b/test/example/src/main.gleam @@ -0,0 +1,56 @@ +// IMPORTS --------------------------------------------------------------------- + +import gleam/javascript/promise.{Promise} +import gleam/string +import lustre +import lustre/cmd.{Cmd} +import lustre/element.{Element} +import lustre/event + +// MAIN ------------------------------------------------------------------------ + +pub fn main() -> Promise(fn(Msg) -> Nil) { + let selector = "[data-lustre-container]" + let program = lustre.application(init(), update, render) + + use _ <- promise.tap(lustre.start(program, selector)) + Nil +} + +// MODEL ----------------------------------------------------------------------- + +type Model = + Int + +fn init() -> #(Model, Cmd(Msg)) { + #(0, cmd.none()) +} + +// UPDATE ---------------------------------------------------------------------- + +pub opaque type Msg { + SetCount(Int) +} + +fn update(_: Model, msg: Msg) -> #(Model, Cmd(Msg)) { + case msg { + SetCount(n) -> #(n, cmd.none()) + } +} + +// RENDER ---------------------------------------------------------------------- + +fn render(model: Model) -> Element(Msg) { + element.div( + [], + [ + element.map( + fn() { + element.button([event.on_click(model + 1)], [element.text("+")]) + }, + SetCount, + ), + element.text(string.inspect(model)), + ], + ) +} |