fix(runtime): clear form error displays on form reset
req: runtime/005
This commit is contained in:
@@ -513,7 +513,15 @@
|
|||||||
function handleRuntimeEvent(scope, name, payload) {
|
function handleRuntimeEvent(scope, name, payload) {
|
||||||
if (name === "hemx:form-reset") {
|
if (name === "hemx:form-reset") {
|
||||||
const form = generatedFormTarget(scope, payload);
|
const form = generatedFormTarget(scope, payload);
|
||||||
if (form && form.reset) form.reset();
|
if (form && form.reset) {
|
||||||
|
form.reset();
|
||||||
|
forEachElement(form, (el) => {
|
||||||
|
if (el.hasAttribute("data-hemx-error-for")) {
|
||||||
|
if (isInputControl(el)) el.setCustomValidity("");
|
||||||
|
else el.textContent = "";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
} else if (name === "hemx:form-error") {
|
} else if (name === "hemx:form-error") {
|
||||||
const [id, field, message] = String(payload).split("\u001f");
|
const [id, field, message] = String(payload).split("\u001f");
|
||||||
const target = formErrorTarget(scope, id, field);
|
const target = formErrorTarget(scope, id, field);
|
||||||
|
|||||||
@@ -392,3 +392,16 @@ fn runtime_ships_typescript_definitions() {
|
|||||||
assert!(source.contains("decodeBatch(buffer: ArrayBuffer): EffectBatch"));
|
assert!(source.contains("decodeBatch(buffer: ArrayBuffer): EffectBatch"));
|
||||||
assert!(source.contains("interface Window"));
|
assert!(source.contains("interface Window"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn runtime_clears_error_for_elements_on_form_reset() {
|
||||||
|
// req: runtime/005 req: form_effects/003
|
||||||
|
let source = hemx_js::RUNTIME_JS;
|
||||||
|
|
||||||
|
assert!(source.contains(r#"if (name === "hemx:form-reset")"#));
|
||||||
|
assert!(source.contains("form.reset();"));
|
||||||
|
assert!(source.contains(r#"if (el.hasAttribute("data-hemx-error-for"))"#));
|
||||||
|
assert!(source.contains("forEachElement(form, (el) => {"));
|
||||||
|
assert!(source.contains("el.setCustomValidity(\"\")"));
|
||||||
|
assert!(source.contains("el.textContent = \"\""));
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user