Relational widget dispatch in forms
Auto-generated from the source archive. Do not edit by hand — rerun
catalyst-changelog-syncinstead.
What changed
Section titled “What changed”form-body.etanow dispatches FK properties whosewidget.typeisselect,multiple-select,async-search-select,grid-select-element, orgrid-select-multiple-elementsto dedicated partials underpartials/relationships/. The prematureidfilter is relaxed so FK ids that carry awidgetblock reach the dispatch.- Five Spartan-migrated partials replace the legacy Material ones:
select.etaandmultiple-select.etaemit<hlm-select>; the other three emit the matching@aurora/components(delivered separately byadd-relationship-components). - The generated
*-form.component.tsdeclares one<relSingularName>Options = input<Target[]>([])per relational property — and a<relSingularName>Columnsinput for the two grid selectors. The route resolver pre-loads each option list in parallel viaforkJoinand the shell forwards the values to the form.
Why it matters
Section titled “Why it matters”The relational surface of the generator was effectively dead code: webComponent.type: select was discarded by the id filter, and the included partials pointed at files that did not exist. Every CRUD module with FKs is unblocked. Pivot aggregates and modules without widget declarations regenerate byte-identical, so adoption is pay-as-you-go — declare widget.type in the YAML and the form picks it up on the next regeneration.