about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-05 13:49:29 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-05 13:49:29 +0100
commit281f560f4423a44eafb035ea058597f79d9a400a (patch)
treebec2544e9950b0720be2797c5df1a295f2ccead8 /src
parent72ddcbde2c18139dd45a874886d5b0b820cc41ae (diff)
downloadchawan-281f560f4423a44eafb035ea058597f79d9a400a.tar.gz
dom: button fixes
Diffstat (limited to 'src')
-rw-r--r--src/html/dom.nim8
-rw-r--r--src/html/formdata.nim2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index 2d9fb09f..985a8b8c 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -362,8 +362,7 @@ type
     relList {.jsget.}: DOMTokenList
 
   HTMLButtonElement* = ref object of FormAssociatedElement
-    ctype*: ButtonType
-    value* {.jsget, jsset.}: string
+    ctype* {.jsget: "type".}: ButtonType
 
   HTMLTextAreaElement* = ref object of FormAssociatedElement
     value* {.jsget.}: string
@@ -1036,6 +1035,7 @@ const ReflectTable0 = [
   # non-global attributes
   makes("target", TAG_A, TAG_AREA, TAG_LABEL, TAG_LINK),
   makes("href", TAG_LINK),
+  makes("value", TAG_BUTTON),
   makeb("required", TAG_INPUT, TAG_SELECT, TAG_TEXTAREA),
   makes("name", TAG_INPUT, TAG_SELECT, TAG_TEXTAREA),
   makeb("novalidate", "noValidate", TAG_FORM),
@@ -3139,6 +3139,9 @@ proc setValue(option: HTMLOptionElement; s: string) {.jsfset: "value".} =
 func jsForm(this: HTMLButtonElement): HTMLFormElement {.jsfget: "form".} =
   return this.form
 
+proc setType(this: HTMLButtonElement; s: string) {.jsfset: "type".} =
+  this.attr(satType, s)
+
 # <textarea>
 func jsForm(this: HTMLTextAreaElement): HTMLFormElement {.jsfget: "form".} =
   return this.form
@@ -4068,7 +4071,6 @@ proc reflectAttr(element: Element; name: CAtom; value: Option[string]) =
     option.reflect_bool satSelected, selected
   of TAG_BUTTON:
     let button = HTMLButtonElement(element)
-    button.reflect_str satValue, value
     if name == satType:
       button.ctype = parseEnumNoCase[ButtonType](value.get("")).get(btSubmit)
   of TAG_LINK:
diff --git a/src/html/formdata.nim b/src/html/formdata.nim
index 4d50d5c5..909aa54d 100644
--- a/src/html/formdata.nim
+++ b/src/html/formdata.nim
@@ -163,7 +163,7 @@ proc constructEntryList*(form: HTMLFormElement; submitter: Element = nil;
       else:
         entrylist.add((name, field.value))
     elif field of HTMLButtonElement:
-      entrylist.add((name, HTMLButtonElement(field).value))
+      entrylist.add((name, HTMLButtonElement(field).attr(satValue)))
     elif field of HTMLTextAreaElement:
       entrylist.add((name, HTMLTextAreaElement(field).value))
     else: