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

@@ -1214,7 +1214,10 @@ export interface paths {
path?: never;
cookie?: never;
};
/** Admin form schema */
/**
* Admin form schema
* @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.
*/
get: {
parameters: {
query?: never;
@@ -4469,6 +4472,9 @@ export interface components {
create: components["schemas"]["cabana.MessageForms"];
deleteConfirm: components["schemas"]["cabana.MessageForms"];
deleted: components["schemas"]["cabana.MessageForms"];
edit: components["schemas"]["cabana.MessageForms"];
/** @description The preview screen's subtitle and its edit button (D-11). */
preview: components["schemas"]["cabana.MessageForms"];
saved: components["schemas"]["cabana.MessageForms"];
update: components["schemas"]["cabana.MessageForms"];
};
@@ -4479,6 +4485,9 @@ export interface components {
label: string;
value: components["schemas"]["cabana.jsonScalar"];
};
"cabana.FormPreview": {
headerPartial?: string;
};
"cabana.FormRedirect": {
redirect: string;
redirectClose: string;
@@ -4500,6 +4509,11 @@ export interface components {
meta: components["schemas"]["cabana.FormMeta"];
modelClass?: string;
name?: string;
/**
* @description Preview is set when the form has a preview screen (D-11); a form
* without one omits the key.
*/
preview?: components["schemas"]["cabana.FormPreview"];
/**
* @description Redirects are the raw Winter config_form.yaml targets; the SPA maps
* them onto its routes.