- Where:
DataTableForm wraps the table; DataTableSearch and
DataTablePerPageSelect each render their own <form> inside it.
Snapshot data_table/full_frame holds three <form elements.
- Effect: nested forms are invalid HTML. The parser ignores the nested
search form's start tag — with its attributes and its
data-controller="ruby-ui--data-table-search" — and its end tag closes the
outer bulk form early, so the search controller never connects and the
per-page form that follows ends up outside the bulk form. The controller's
this.element.requestSubmit() therefore never runs at all. (The golden
snapshot keeps all three forms because the suite parses inside a
<template>, where the form-pointer rule does not apply.)
- Fix: render the search and per-page forms outside the bulk form, or
make their controls reference it with the form= attribute; re-record (on the 2.0 line)
data_table/*.
- 2.0 note: Herb's
NestingValidator will likely reject this at compile
time, so the DataTable migration ports the three forms as they are and then
restructures them — a template adjustment with a reviewed snapshot change,
on the 2.0 line, since main stays as is.
Surfaced by the golden HTML suite (PR #536), which pins what 1.6 renders today — this defect included. Per maintainer decision (2026-09-19) main stays as is: this is addressed on the 2.0 line, and the golden snapshot that pins it is re-recorded there with the diff reviewed.
Source: design/v2/follow-up-issues.md.
DataTableFormwraps the table;DataTableSearchandDataTablePerPageSelecteach render their own<form>inside it.Snapshot
data_table/full_frameholds three<formelements.search form's start tag — with its attributes and its
data-controller="ruby-ui--data-table-search"— and its end tag closes theouter bulk form early, so the search controller never connects and the
per-page form that follows ends up outside the bulk form. The controller's
this.element.requestSubmit()therefore never runs at all. (The goldensnapshot keeps all three forms because the suite parses inside a
<template>, where the form-pointer rule does not apply.)make their controls reference it with the
form=attribute; re-record (on the 2.0 line)data_table/*.NestingValidatorwill likely reject this at compiletime, so the DataTable migration ports the three forms as they are and then
restructures them — a template adjustment with a reviewed snapshot change,
on the 2.0 line, since
mainstays as is.Surfaced by the golden HTML suite (PR #536), which pins what 1.6 renders today — this defect included. Per maintainer decision (2026-09-19)
mainstays as is: this is addressed on the 2.0 line, and the golden snapshot that pins it is re-recorded there with the diff reviewed.Source:
design/v2/follow-up-issues.md.