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: ""), ] ) }