From 46950ed9e9f513c37366347e8eb7cc5295591864 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 19 Feb 2023 13:23:19 +0100 Subject: Fix setting an attribute to false --- src/example.ts | 16 +++++++++++++++- src/rx.ts | 10 ++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/example.ts b/src/example.ts index 229d3a0..0870f4e 100644 --- a/src/example.ts +++ b/src/example.ts @@ -185,9 +185,23 @@ const seq = ) ) +const indirectCheckbox = + withState(false, checked => [ + checkboxComponent({ + label: 'C1', + isChecked: checked, + onCheck: (b: boolean) => checked.update(_ => b) + }), + checkboxComponent({ + label: 'C2', + isChecked: checked, + onCheck: (b: boolean) => checked.update(_ => b) + }) + ]) + const view = h('main', h('h1', 'Rx'), - chrono + indirectCheckbox ) mount(view) diff --git a/src/rx.ts b/src/rx.ts index a83c915..221dcfc 100644 --- a/src/rx.ts +++ b/src/rx.ts @@ -463,11 +463,17 @@ function appendNode(base: Element, node: Node, lastAdded?: Node) { } function setAttribute(state: State, element: Element, key: string, attribute: AttributeValue) { - if (attribute === undefined || attribute === false) { + if (attribute === undefined) { // Do nothing } else if (attribute === true) { // @ts-ignore - element[key] = "true" + element[key] = 'true' + } else if (attribute === false) { + // @ts-ignore + if (key in element) { + // @ts-ignore + element[key] = false + } } else if (typeof attribute === "number") { // @ts-ignore element[key] = attribute.toString() -- cgit v1.2.3