diff options
-rw-r--r-- | .github/workflows/release.yml | 2 | ||||
-rw-r--r-- | examples/components.gleam | 34 | ||||
-rw-r--r-- | examples/counter.gleam | 15 | ||||
-rw-r--r-- | examples/input.gleam | 82 | ||||
-rw-r--r-- | examples/svg.gleam | 20 | ||||
-rw-r--r-- | gleam.toml | 2 | ||||
-rw-r--r-- | manifest.toml | 4 | ||||
-rw-r--r-- | src/lustre.gleam | 4 | ||||
-rw-r--r-- | src/lustre/attribute.gleam | 11 | ||||
-rw-r--r-- | src/lustre/element.gleam | 9 |
10 files changed, 80 insertions, 103 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b8ad1e..4402f20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: - uses: erlef/setup-beam@v1.16.0 with: otp-version: "26.0.2" - gleam-version: "0.32.1" + gleam-version: "0.33.0" - run: cargo install tomlq - run: | if [ "v$(tomlq version -f gleam.toml)" == "${{ github.ref_name }}" ]; then diff --git a/examples/components.gleam b/examples/components.gleam index b87cf84..e813708 100644 --- a/examples/components.gleam +++ b/examples/components.gleam @@ -56,18 +56,15 @@ fn update(history, msg) { fn view(history) { let on_custom_click = event.on("custom-click", function.constant(Ok("click"))) - div( - [], - [ - button([event.on_click("reset")], [text("Reset")]), - ol([], list.map(history, fn(msg) { li([], [text(msg)]) })), - element( - "custom-counter", - [on_custom_click, attribute.property("count", list.length(history))], - [ol([], list.map(history, fn(msg) { li([], [text(msg)]) }))], - ), - ], - ) + div([], [ + button([event.on_click("reset")], [text("Reset")]), + ol([], list.map(history, fn(msg) { li([], [text(msg)]) })), + element( + "custom-counter", + [on_custom_click, attribute.property("count", list.length(history))], + [ol([], list.map(history, fn(msg) { li([], [text(msg)]) }))], + ), + ]) } // COUNTER --------------------------------------------------------------------- @@ -89,12 +86,9 @@ fn counter_update(count, msg) { } fn counter_view(count) { - div( - [], - [ - button([event.on_click(Clicked)], [text("Click me!")]), - p([], [text("Count: "), text(int.to_string(count))]), - slot([]), - ], - ) + div([], [ + button([event.on_click(Clicked)], [text("Click me!")]), + p([], [text("Count: "), text(int.to_string(count))]), + slot([]), + ]) } diff --git a/examples/counter.gleam b/examples/counter.gleam index ab453da..37af39a 100644 --- a/examples/counter.gleam +++ b/examples/counter.gleam @@ -44,13 +44,10 @@ pub fn update(model: Model, msg: Msg) -> Model { // VIEW ------------------------------------------------------------------------ pub fn view(model: Model) -> Element(Msg) { - div( - [], - [ - button([event.on_click(Incr)], [text("+")]), - button([event.on_click(Decr)], [text("-")]), - button([event.on_click(Reset)], [text("Reset")]), - p([], [text(int.to_string(model))]), - ], - ) + div([], [ + button([event.on_click(Incr)], [text("+")]), + button([event.on_click(Decr)], [text("-")]), + button([event.on_click(Reset)], [text("Reset")]), + p([], [text(int.to_string(model))]), + ]) } diff --git a/examples/input.gleam b/examples/input.gleam index 62338a2..6425b0c 100644 --- a/examples/input.gleam +++ b/examples/input.gleam @@ -57,26 +57,20 @@ fn update(model: Model, msg: Msg) -> Model { // RENDER ---------------------------------------------------------------------- fn view(model: Model) -> Element(Msg) { - div( - [attribute.class("container")], - [ - card([ - email_input(model.email), - password_input(model.password), - remember_checkbox(model.remember_me), - pre( - [attribute.class("debug")], - [ - string.inspect(model) - |> string.replace("(", "(\n ") - |> string.replace(", ", ",\n ") - |> string.replace(")", "\n)") - |> text, - ], - ), + div([attribute.class("container")], [ + card([ + email_input(model.email), + password_input(model.password), + remember_checkbox(model.remember_me), + pre([attribute.class("debug")], [ + string.inspect(model) + |> string.replace("(", "(\n ") + |> string.replace(", ", ",\n ") + |> string.replace(")", "\n)") + |> text, ]), - ], - ) + ]), + ]) } fn card(content: List(Element(a))) -> Element(a) { @@ -98,35 +92,29 @@ fn render_input( value: String, label_: String, ) -> Element(Msg) { - div( - [attribute.class("input")], - [ - label([attribute.for(id)], [text(label_)]), - input([ - attribute.id(id), - attribute.name(id), - attribute.type_(type_), - attribute.required(True), - attribute.value(dynamic.from(value)), - event.on_input(fn(value) { Typed(field, value) }), - ]), - ], - ) + div([attribute.class("input")], [ + label([attribute.for(id)], [text(label_)]), + input([ + attribute.id(id), + attribute.name(id), + attribute.type_(type_), + attribute.required(True), + attribute.value(dynamic.from(value)), + event.on_input(fn(value) { Typed(field, value) }), + ]), + ]) } fn remember_checkbox(checked: Bool) -> Element(Msg) { - div( - [attribute.class("flex items-center")], - [ - input([ - attribute.id("remember-me"), - attribute.name("remember-me"), - attribute.type_("checkbox"), - attribute.checked(checked), - attribute.class("checkbox"), - event.on_click(Toggled(RememberMe, !checked)), - ]), - label([attribute.for("remember-me")], [text("Remember me")]), - ], - ) + div([attribute.class("flex items-center")], [ + input([ + attribute.id("remember-me"), + attribute.name("remember-me"), + attribute.type_("checkbox"), + attribute.checked(checked), + attribute.class("checkbox"), + event.on_click(Toggled(RememberMe, !checked)), + ]), + label([attribute.for("remember-me")], [text("Remember me")]), + ]) } diff --git a/examples/svg.gleam b/examples/svg.gleam index 640867b..93be5e3 100644 --- a/examples/svg.gleam +++ b/examples/svg.gleam @@ -46,18 +46,14 @@ pub fn update(model: Model, msg: Msg) -> Model { // VIEW ------------------------------------------------------------------------ pub fn view(model: Model) -> Element(Msg) { - div( - [], - [ - button( - [event.on_click(Incr)], - [plus([attribute.style([#("color", "red")])])], - ), - button([event.on_click(Decr)], [minus([])]), - button([event.on_click(Reset)], [text("Reset")]), - p([], [text(int.to_string(model))]), - ], - ) + div([], [ + button([event.on_click(Incr)], [ + plus([attribute.style([#("color", "red")])]), + ]), + button([event.on_click(Decr)], [minus([])]), + button([event.on_click(Reset)], [text("Reset")]), + p([], [text(int.to_string(model))]), + ]) } fn plus(attrs) { @@ -15,4 +15,4 @@ internal_modules = [ ] [dependencies] -gleam_stdlib = "~> 0.31" +gleam_stdlib = "~> 0.34" diff --git a/manifest.toml b/manifest.toml index 0fb8411..c23fa90 100644 --- a/manifest.toml +++ b/manifest.toml @@ -2,8 +2,8 @@ # You typically do not need to edit this file packages = [ - { name = "gleam_stdlib", version = "0.32.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "07D64C26D014CF570F8ACADCE602761EA2E74C842D26F2FD49B0D61973D9966F" }, + { name = "gleam_stdlib", version = "0.34.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "1FB8454D2991E9B4C0C804544D8A9AD0F6184725E20D63C3155F0AEB4230B016" }, ] [requirements] -gleam_stdlib = { version = "~> 0.31" } +gleam_stdlib = { version = "~> 0.34" } diff --git a/src/lustre.gleam b/src/lustre.gleam index 523fce4..0c3f2ec 100644 --- a/src/lustre.gleam +++ b/src/lustre.gleam @@ -4,7 +4,7 @@ // IMPORTS --------------------------------------------------------------------- import gleam/dynamic.{type Decoder} -import gleam/map.{type Map} +import gleam/dict.{type Dict} import lustre/effect.{type Effect} import lustre/element.{type Element} @@ -81,7 +81,7 @@ pub fn component( _init: fn() -> #(model, Effect(msg)), _update: fn(model, msg) -> #(model, Effect(msg)), _view: fn(model) -> Element(msg), - _on_attribute_change: Map(String, Decoder(msg)), + _on_attribute_change: Dict(String, Decoder(msg)), ) -> Result(Nil, Error) { Ok(Nil) } diff --git a/src/lustre/attribute.gleam b/src/lustre/attribute.gleam index 9531938..d2099c9 100644 --- a/src/lustre/attribute.gleam +++ b/src/lustre/attribute.gleam @@ -124,13 +124,10 @@ pub fn to_string_builder(attr: Attribute(msg)) -> StringBuilder { /// pub fn style(properties: List(#(String, String))) -> Attribute(msg) { - attribute( - "style", - { - use styles, #(name, value) <- list.fold(properties, "") - styles <> name <> ":" <> value <> ";" - }, - ) + attribute("style", { + use styles, #(name, value) <- list.fold(properties, "") + styles <> name <> ":" <> value <> ";" + }) } /// diff --git a/src/lustre/element.gleam b/src/lustre/element.gleam index 25b84b4..1d18825 100644 --- a/src/lustre/element.gleam +++ b/src/lustre/element.gleam @@ -186,7 +186,8 @@ fn attrs_to_string_builder( html, class, style, - inner_html <> val, + inner_html + <> val, ) Ok(#("class", val)) if class == "" -> #(html, val, style, inner_html) Ok(#("class", val)) -> #(html, class <> " " <> val, style, inner_html) @@ -210,7 +211,11 @@ fn attrs_to_string_builder( _, _ -> string_builder.append( html, - " class=\"" <> class <> "\" style=\"" <> style <> "\"", + " class=\"" + <> class + <> "\" style=\"" + <> style + <> "\"", ) }, inner_html, |