wip: pass form data between web and desktop
This commit is contained in:
1 parent
63b06b7977
commit
f66d17ca84
6 files changed
+68
-8
No files matched your search
@@ -231,6 +231,23 @@ export class Interpreter {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (target.tagName == "FORM") {
|
||||
let formTarget = target;
|
||||
for (let x = 0; x < formTarget.elements.length; x++) {
|
||||
let element = formTarget.elements[x];
|
||||
let name = element.getAttribute("name");
|
||||
if (name != null) {
|
||||
if (element.getAttribute("type") == "checkbox") {
|
||||
// @ts-ignore
|
||||
contents.values[name] = element.checked ? "true" : "false";
|
||||
}
|
||||
else {
|
||||
// @ts-ignore
|
||||
contents.values[name] = element.value ?? element.textContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (realId == null) {
|
||||
return;
|
||||
}
|
||||
@@ -316,6 +333,7 @@ function serialize_event(event) {
|
||||
}
|
||||
return {
|
||||
value: value,
|
||||
values: {}
|
||||
};
|
||||
}
|
||||
case "click":
|
||||
|
||||
@@ -244,7 +244,6 @@ export class Interpreter {
|
||||
break;
|
||||
case "NewEventListener":
|
||||
|
||||
|
||||
// this handler is only provided on desktop implementations since this
|
||||
// method is not used by the web implementation
|
||||
let handler = (event: Event) => {
|
||||
@@ -286,6 +285,23 @@ export class Interpreter {
|
||||
}
|
||||
}
|
||||
|
||||
if (target.tagName == "FORM") {
|
||||
let formTarget = target as HTMLFormElement;
|
||||
for (let x = 0; x < formTarget.elements.length; x++) {
|
||||
let element = formTarget.elements[x];
|
||||
let name = element.getAttribute("name");
|
||||
if (name != null) {
|
||||
if (element.getAttribute("type") == "checkbox") {
|
||||
// @ts-ignore
|
||||
contents.values[name] = element.checked ? "true" : "false";
|
||||
} else {
|
||||
// @ts-ignore
|
||||
contents.values[name] = element.value ?? element.textContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (realId == null) {
|
||||
return;
|
||||
}
|
||||
@@ -385,6 +401,8 @@ function serialize_event(event: Event) {
|
||||
case "invalid":
|
||||
case "reset":
|
||||
case "submit": {
|
||||
|
||||
|
||||
let target = event.target as HTMLFormElement;
|
||||
let value = target.value ?? target.textContent;
|
||||
|
||||
@@ -394,6 +412,7 @@ function serialize_event(event: Event) {
|
||||
|
||||
return {
|
||||
value: value,
|
||||
values: {}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -643,8 +662,6 @@ const bool_attrs = {
|
||||
truespeed: true,
|
||||
};
|
||||
|
||||
|
||||
|
||||
type PushRoot = { type: "PushRoot", root: number };
|
||||
type AppendChildren = { type: "AppendChildren", many: number };
|
||||
type ReplaceWith = { type: "ReplaceWith", root: number, m: number };
|
||||
@@ -661,7 +678,6 @@ type SetText = { type: "SetText", root: number, text: string };
|
||||
type SetAttribute = { type: "SetAttribute", root: number, field: string, value: string, ns: string | undefined };
|
||||
type RemoveAttribute = { type: "RemoveAttribute", root: number, name: string };
|
||||
|
||||
|
||||
type DomEdit =
|
||||
PushRoot |
|
||||
AppendChildren |
|
||||
|
||||
Reference in new issue
Block a user