fix(runtime): handle clicked form submitters
req: convention/004
This commit is contained in:
@@ -394,6 +394,16 @@
|
|||||||
navigate(nav);
|
navigate(nav);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (name === "click") {
|
||||||
|
const submitter = closestInRoot(event.target, root, "button[type=submit], input[type=submit], button:not([type])");
|
||||||
|
const form = submitter && submitter.closest("form");
|
||||||
|
if (form && root.contains(form) && handleId(form)) {
|
||||||
|
if (form.reportValidity && !form.reportValidity()) return;
|
||||||
|
event.preventDefault();
|
||||||
|
schedule(form, "submit");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
const el = closestInRoot(event.target, root, `[${HID}], [data-slhx-boost] form`);
|
const el = closestInRoot(event.target, root, `[${HID}], [data-slhx-boost] form`);
|
||||||
if (!el || defaultEvent(el) !== name) return;
|
if (!el || defaultEvent(el) !== name) return;
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ fn runtime_handles_get_forms_without_request_body() {
|
|||||||
assert!(source.contains("if (method === \"GET\") url.search = urlEncoded(data).toString()"));
|
assert!(source.contains("if (method === \"GET\") url.search = urlEncoded(data).toString()"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn runtime_clicking_submitter_schedules_form_submit() {
|
||||||
|
// req: convention/004
|
||||||
|
let source = slhx_js::RUNTIME_JS;
|
||||||
|
|
||||||
|
assert!(source.contains("button[type=submit], input[type=submit], button:not([type])"));
|
||||||
|
assert!(source.contains("form.reportValidity && !form.reportValidity()"));
|
||||||
|
assert!(source.contains("schedule(form, \"submit\")"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn runtime_supports_queued_request_policy() {
|
fn runtime_supports_queued_request_policy() {
|
||||||
let source = slhx_js::RUNTIME_JS;
|
let source = slhx_js::RUNTIME_JS;
|
||||||
|
|||||||
Reference in New Issue
Block a user