Repeatable List

An ordered list of rows a reader can add to and remove from, each row's fields supplied by the caller. Rows are keyed by an opaque server id, never an index, and both controls are submit buttons so the whole form body travels with them.

Examples

Rows with an opaque key

Each row submits a hidden `keywords.row` field holding its key, repeated in DOM order — the order is read off that repetition rather than from a number that has to be kept in step with it. Naming a row's fields `keywords[0]`, `keywords[1]` instead breaks the moment a middle row goes: the next submit carries 0 and 2, and per-row errors keyed by index then point at the wrong rows.

Keywords

Each keyword is one multilingual term.

Nothing added yet

An empty list says so. Without a message it renders as a legend and an add button with nothing between them, which reads as a section that failed to load.

Alternative names

No alternative names yet.

Acronyms or alternate spellings — one value per language.

Rejected, with the reason

The message hangs off the fieldset and is announced once, as with the other grouped fields.

Disciplines

No disciplines yet.

At least one is required before submitting.

Add at least one discipline.