From 44b6c670324d59f681a90acb7f093cd349fbe14d Mon Sep 17 00:00:00 2001 From: Simon Leeb <52261246+sliemeobn@users.noreply.github.com> Date: Fri, 19 Jun 2026 08:13:55 +0200 Subject: [PATCH] fix attributes without values --- .../JSInterop/Elementary+BridgeJS.swift | 6 +----- .../Reconciler/DOMMountingTests.swift | 16 +++++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Sources/ElementaryUI/JSInterop/Elementary+BridgeJS.swift b/Sources/ElementaryUI/JSInterop/Elementary+BridgeJS.swift index c8bfc78..94396c6 100644 --- a/Sources/ElementaryUI/JSInterop/Elementary+BridgeJS.swift +++ b/Sources/ElementaryUI/JSInterop/Elementary+BridgeJS.swift @@ -119,11 +119,7 @@ final class BridgeJSDOMInteractor: DOM.Interactor { func setAttribute(_ node: DOM.Node, name: String, value: String?) { let element = node.jsElement - if let value { - _ = try? element.setAttribute(name, value) - } else { - _ = try? element.removeAttribute(name) - } + _ = try? element.setAttribute(name, value ?? "") } func removeAttribute(_ node: DOM.Node, name: String) { diff --git a/Tests/ElementaryUITests/Reconciler/DOMMountingTests.swift b/Tests/ElementaryUITests/Reconciler/DOMMountingTests.swift index 3a31b69..c9eb561 100644 --- a/Tests/ElementaryUITests/Reconciler/DOMMountingTests.swift +++ b/Tests/ElementaryUITests/Reconciler/DOMMountingTests.swift @@ -19,18 +19,20 @@ struct DOMMountingTests { @Test func setsAttributes() { let ops = mountOps { - img(.id("not-foo"), .src("bar")) - .attributes(.hidden, .id("foo"), when: true) + input(.id("not-foo"), .type(.checkbox), .checked) + .attributes(.hidden, .autofocus, .id("foo"), when: true) .attributes(.inert, when: false) } #expect( ops == [ - .createElement("img"), - .setAttr(node: "", name: "id", value: "foo"), - .setAttr(node: "", name: "src", value: "bar"), - .setAttr(node: "", name: "hidden", value: nil), - .addChild(parent: "<>", child: ""), + .createElement("input"), + .setAttr(node: "", name: "id", value: "foo"), + .setAttr(node: "", name: "type", value: "checkbox"), + .setAttr(node: "", name: "checked", value: nil), + .setAttr(node: "", name: "hidden", value: nil), + .setAttr(node: "", name: "autofocus", value: nil), + .addChild(parent: "<>", child: ""), ] ) }