diff --git a/src/jinjax/html_attrs.py b/src/jinjax/html_attrs.py
index 3162cef..3017b32 100644
--- a/src/jinjax/html_attrs.py
+++ b/src/jinjax/html_attrs.py
@@ -55,7 +55,7 @@ def __init__(self, attrs) -> None:
name = name.replace("_", "-")
if value is True:
properties.add(name)
- elif value not in (False, None):
+ elif value is not False and value is not None:
attributes[name] = LazyString(value)
self.__attributes = attributes
@@ -98,7 +98,7 @@ def set(self, **kw) -> None:
"""
for name, value in kw.items():
name = name.replace("_", "-")
- if value in (False, None):
+ if value is False or value is None:
self._remove(name)
continue
diff --git a/tests/test_html_attrs.py b/tests/test_html_attrs.py
index df03faa..bc1a68f 100644
--- a/tests/test_html_attrs.py
+++ b/tests/test_html_attrs.py
@@ -11,6 +11,8 @@ def test_parse_initial_attrs():
"class": "z4 c3 a1 z4 b2",
"open": True,
"disabled": False,
+ "value": 0,
+ "foobar": None,
}
)
assert attrs.classes == "a1 b2 c3 z4"
@@ -20,7 +22,16 @@ def test_parse_initial_attrs():
assert attrs.get("title") == "hi"
assert attrs.get("open") is True
assert attrs.get("disabled", "meh") == "meh"
+ assert attrs.get("value") == "0"
+ assert attrs.get("disabled") is None
+ assert attrs.get("foobar") is None
+
+ attrs.set(data_value=0)
+ attrs.set(data_position=False)
+ assert attrs.get("data-value") == 0
+ assert attrs.get("data-position") is None
+ assert attrs.get("data_position") is None
def test_getattr():
attrs = HTMLAttrs(