- cabana: type repeater with nested form.fields (text, textarea, number, checkbox, switch, dropdown, richeditor), prompt, minItems, maxItems, titleFrom; groups, style, nested repeaters and other types fail boot - rows decoded before projection: only nested keys, coerced scalars, per-row required (field.index.nested), row bounds; ProjectWritableFields exempts repeater lists only, nestedValue unchanged - nested richeditor values sanitized with notices under the row path - dependent dropdowns rechecked on save, top level and per row; null when the sibling takes no choice, 422 form.dependent_invalid otherwise - dependent-options accepts repeater.field; schema carries RepeaterForm - backend lang repeater.max_items, repeater.min_items, form.dependent_invalid; TestCompanionsRepeaterSmoke; docs
42 lines
1019 B
YAML
42 lines
1019 B
YAML
fields:
|
|
title:
|
|
label: Title
|
|
type: text
|
|
required: true
|
|
type:
|
|
label: Type
|
|
type: dropdown
|
|
options: typeOptions
|
|
reference:
|
|
label: Reference
|
|
type: dropdown
|
|
dependsOn: type
|
|
emptyOption: backend::lang.form.none
|
|
description:
|
|
label: Description
|
|
type: richeditor
|
|
size: large
|
|
rows:
|
|
label: Rows
|
|
type: repeater
|
|
prompt: Add row
|
|
titleFrom: title
|
|
maxItems: 5
|
|
form:
|
|
fields:
|
|
title:
|
|
label: Title
|
|
type: text
|
|
required: true
|
|
body:
|
|
label: Body
|
|
type: richeditor
|
|
type:
|
|
label: Type
|
|
type: dropdown
|
|
options: typeOptions
|
|
reference:
|
|
label: Reference
|
|
type: dropdown
|
|
dependsOn: type
|