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