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] {.