Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Joey Yakimowich-Payne
0b43ee44d9 Make input value and checked state get updated
Fixes #186
Fixes #61
2021-05-16 20:54:51 -06:00
3 changed files with 17 additions and 0 deletions

View file

@ -472,10 +472,18 @@ proc diff(newNode, oldNode: VNode; parent, current: Node; kxi: KaraxInstance) =
if result == similar: if result == similar:
updateStyles(newNode, oldNode) updateStyles(newNode, oldNode)
updateAttributes(newNode, oldNode) updateAttributes(newNode, oldNode)
if oldNode.kind == VNodeKind.text: if oldNode.kind == VNodeKind.text:
oldNode.text = newNode.text oldNode.text = newNode.text
oldNode.dom.nodeValue = 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: if newNode.events.len != 0 or oldNode.events.len != 0:
mergeEvents(newNode, oldNode, kxi) mergeEvents(newNode, oldNode, kxi)

View file

@ -7,4 +7,10 @@ when not declared(dom.DomApiVersion):
else: else:
import dom 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 export dom

View file

@ -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): cstring {.importcpp: "#.value", nodecl.}
proc `value=`*(n: Node; v: 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 `disabled=`*(n: Node; v: bool) {.importcpp: "#.disabled = #", nodecl.}
proc getElementsByClass*(n: Node; name: cstring): seq[Node] {. proc getElementsByClass*(n: Node; name: cstring): seq[Node] {.