feat(12.1-02): read-only preview screen with a status hint and record actions

- config_form.yaml preview block (optional headerPartial), reported in the form schema as preview
- fields with context: preview show only on the preview screen and are never written
- form messages preview and edit; recordActions without a preview block stops boot
- SPA route {id}/preview, PreviewView and PreviewField, record actions in the footer
- mapWinterUrl maps preview/:id; the update form returns to the preview
- summer-callout partial style classes for status hints
- README, docs, OpenAPI document, TS types and the embedded build updated
This commit is contained in:
Jakub Zych
2026-10-05 00:10:48 +02:00
parent 1c99de5013
commit a65c670574
50 changed files with 1441 additions and 66 deletions

View File

@@ -846,6 +846,17 @@
"deleted": {
"$ref": "#/components/schemas/cabana.MessageForms"
},
"edit": {
"$ref": "#/components/schemas/cabana.MessageForms"
},
"preview": {
"allOf": [
{
"$ref": "#/components/schemas/cabana.MessageForms"
}
],
"description": "The preview screen's subtitle and its edit button (D-11)."
},
"saved": {
"$ref": "#/components/schemas/cabana.MessageForms"
},
@@ -857,6 +868,8 @@
"create",
"deleteConfirm",
"deleted",
"edit",
"preview",
"saved",
"update"
],
@@ -888,6 +901,14 @@
],
"type": "object"
},
"cabana.FormPreview": {
"properties": {
"headerPartial": {
"type": "string"
}
},
"type": "object"
},
"cabana.FormRedirect": {
"properties": {
"redirect": {
@@ -955,6 +976,14 @@
"name": {
"type": "string"
},
"preview": {
"allOf": [
{
"$ref": "#/components/schemas/cabana.FormPreview"
}
],
"description": "Preview is set when the form has a preview screen (D-11); a form\nwithout one omits the key."
},
"redirects": {
"allOf": [
{
@@ -3262,6 +3291,7 @@
},
"/{vendor}/{plugin}/{controller}/schema/form": {
"get": {
"description": "The form of a controller, localized. `preview` is present when config_form.yaml declares a preview block: the form then has a read-only preview screen, which shows the fields whose context allows preview, the record actions and, when preview.headerPartial is set, that partial as a status hint.",
"parameters": [
{
"description": "Vendor",