fix(runtime): show transport failures in app error outlets
Make failed hemx requests visibly recoverable by updating root-scoped data-hemx-error outlets while preserving fail-closed non-2xx handling and inspectable hemx:error events. The v0 generated-app exemplar now includes a transport error outlet alongside generated field-error targets. req: runtime/005 req: examples/001 req: canonical_authoring/003
This commit is contained in:
@@ -133,7 +133,7 @@ impl Hemplate for Todos {
|
||||
fn render_into(&self, buf: &mut String) -> Result<(), hemplate::error::HemplateError> {
|
||||
use std::fmt::Write as _;
|
||||
|
||||
buf.push_str("<section data-hemx-root=\"todos\">\n <form data-hemx-handle=\"add_todo\" data-hemx-form=\"new_todo\">\n <label>New todo\n <input name=\"title\" required=\"required\">\n </label>\n <button type=\"submit\">Add</button>\n <p data-hemx-error-for=\"title\"></p>\n </form>\n\n <p data-hemx-slot=\"summary\">");
|
||||
buf.push_str("<section data-hemx-root=\"todos\">\n <form data-hemx-handle=\"add_todo\" data-hemx-form=\"new_todo\">\n <label>New todo\n <input name=\"title\" required=\"required\">\n </label>\n <button type=\"submit\">Add</button>\n <p data-hemx-error-for=\"title\"></p>\n </form>\n\n <p data-hemx-error role=\"status\" hidden=\"hidden\"></p>\n\n <p data-hemx-slot=\"summary\">");
|
||||
write!(buf, "{}", hemplate::HtmlEscape(&self.summary))?;
|
||||
buf.push_str("</p>\n <p data-hemx-slot=\"notice\">");
|
||||
write!(buf, "{}", hemplate::HtmlEscape(&self.notice))?;
|
||||
@@ -627,6 +627,11 @@ mod tests {
|
||||
2,
|
||||
"add and rename forms expose generated field-error targets"
|
||||
);
|
||||
assert_eq!(
|
||||
document.select(&selector("[data-hemx-error]")).count(),
|
||||
1,
|
||||
"the app exposes one root-scoped transport error outlet"
|
||||
);
|
||||
}
|
||||
|
||||
// req: canonical_authoring/003 req: test/005
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<button type="submit">Add</button>
|
||||
<p data-hemx-error-for="title"></p>
|
||||
</form>
|
||||
<p data-hemx-error role="status" hidden="hidden"></p>
|
||||
<p data-hemx-slot="summary">{+ self.summary +}</p>
|
||||
<p data-hemx-slot="notice">{+ self.notice +}</p>
|
||||
<ul data-hemx-slot="todo_row">
|
||||
|
||||
Reference in New Issue
Block a user