From 0b43ee44d953f22c8eea2335c00ea8214857f845 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Sun, 16 May 2021 20:54:51 -0600 Subject: [PATCH] Make input value and checked state get updated Fixes #186 Fixes #61 --- karax/karax.nim | 8 ++++++++ karax/kdom.nim | 6 ++++++ karax/kdom_impl.nim | 3 +++ 3 files changed, 17 insertions(+) diff --git a/karax/karax.nim b/karax/karax.nim index 2246676..be42325 100644 --- a/karax/karax.nim +++ b/karax/karax.nim @@ -472,10 +472,18 @@ proc diff(newNode, oldNode: VNode; parent, current: Node; kxi: KaraxInstance) = if result == similar: updateStyles(newNode, oldNode) updateAttributes(newNode, oldNode) + if oldNode.kind == VNodeKind.text: oldNode.text = newNode.text oldNode.dom.nodeValue = newNode.text + # Set the value of the input field to update + if oldNode.kind == VNodeKind.input: + oldNode.dom.value = newNode.text + + let checked = newNode.getAttr("checked") + oldNode.dom.checked = if checked.isNil: false else: true + if newNode.events.len != 0 or oldNode.events.len != 0: mergeEvents(newNode, oldNode, kxi) diff --git a/karax/kdom.nim b/karax/kdom.nim index 782d825..55ef757 100644 --- a/karax/kdom.nim +++ b/karax/kdom.nim @@ -7,4 +7,10 @@ when not declared(dom.DomApiVersion): else: import dom + + when not declared(dom.checked): + proc checked*(n: Node): bool {.importcpp: "#.checked", nodecl.} + when not declared(dom.`checked=`): + proc `checked=`*(n: Node; v: bool) {.importcpp: "#.checked = #", nodecl.} + export dom diff --git a/karax/kdom_impl.nim b/karax/kdom_impl.nim index aaa26cb..9982a43 100644 --- a/karax/kdom_impl.nim +++ b/karax/kdom_impl.nim @@ -1203,6 +1203,9 @@ proc `class=`*(n: Node; v: cstring) {.importcpp: "#.className = #", nodecl.} proc value*(n: Node): cstring {.importcpp: "#.value", nodecl.} proc `value=`*(n: Node; v: cstring) {.importcpp: "#.value = #", nodecl.} +proc checked*(n: Node): bool {.importcpp: "#.checked", nodecl.} +proc `checked=`*(n: Node; v: bool) {.importcpp: "#.checked = #", nodecl.} + proc `disabled=`*(n: Node; v: bool) {.importcpp: "#.disabled = #", nodecl.} proc getElementsByClass*(n: Node; name: cstring): seq[Node] {.