fix(ui): align contextual documentation with headings
Verified with the coordinated workspace changes by devkit full run 2026-09-08T225814-186389-0000-3e3ed7cd (all seven phases passed). This shared UI pass does not mark the individual module reviews complete.
This commit is contained in:
@@ -70,6 +70,10 @@ Form definitions should carry:
|
|||||||
option, constraint, draft, attachment, signature, policy, and handoff editing.
|
option, constraint, draft, attachment, signature, policy, and handoff editing.
|
||||||
- Forms Runtime performs value validation against the resolved definition; the
|
- Forms Runtime performs value validation against the resolved definition; the
|
||||||
definition owner does not persist submissions.
|
definition owner does not persist submissions.
|
||||||
|
- Forms consumes Core's title-help and text-help layout contracts for its
|
||||||
|
catalogue and revision dialog. Workflow books sit beside their heading;
|
||||||
|
semantic documentation stays beside the Form meaning label for the exact
|
||||||
|
definition. The placement contract does not move content ownership to Core.
|
||||||
|
|
||||||
## Recovery And Operations
|
## Recovery And Operations
|
||||||
|
|
||||||
|
|||||||
@@ -36,3 +36,9 @@ shared section-header toolbar surface. Core therefore owns viewport, search,
|
|||||||
state, heading, and narrow-layout geometry. These contracts do not change
|
state, heading, and narrow-layout geometry. These contracts do not change
|
||||||
filter scope, permissions, revision semantics, or publication consequences.
|
filter scope, permissions, revision semantics, or publication consequences.
|
||||||
English and German catalogues cover the owned route and editor vocabulary.
|
English and German catalogues cover the owned route and editor vocabulary.
|
||||||
|
|
||||||
|
Documentation books belong immediately beside their contextual text. The
|
||||||
|
catalogue uses Core's workspace title and `titleHelp`; the revision dialog uses
|
||||||
|
its title help, and the separate Form meaning label carries semantic help for
|
||||||
|
that exact definition. Field help stays beside its label. This uses Core layout
|
||||||
|
contracts and does not change revision, publication, or runtime ownership.
|
||||||
|
|||||||
@@ -371,6 +371,8 @@ manifest = ModuleManifest(
|
|||||||
title="Reusable form definitions",
|
title="Reusable form definitions",
|
||||||
summary="Create immutable, versioned schemas consumed by Forms Runtime and institutional services.",
|
summary="Create immutable, versioned schemas consumed by Forms Runtime and institutional services.",
|
||||||
body=(
|
body=(
|
||||||
|
"Documentation books sit beside Form definitions and the revision dialog title. The separate "
|
||||||
|
"Form meaning label carries the exact definition’s semantic documentation book. "
|
||||||
"Each revision fixes field types, options, constraints, draft, attachment, signature, policy, and handoff requirements. "
|
"Each revision fixes field types, options, constraints, draft, attachment, signature, policy, and handoff requirements. "
|
||||||
"Publishing is explicit; existing submissions continue to retain their exact revision. The catalogue, filter, empty states, "
|
"Publishing is explicit; existing submissions continue to retain their exact revision. The catalogue, filter, empty states, "
|
||||||
"section headings, and definition field groups use the shared responsive layout language and reflow at narrow widths without "
|
"section headings, and definition field groups use the shared responsive layout language and reflow at narrow widths without "
|
||||||
@@ -398,6 +400,9 @@ manifest = ModuleManifest(
|
|||||||
"Unveränderliche versionierte Schemata erstellen, die Forms Runtime und institutionelle Services verwenden."
|
"Unveränderliche versionierte Schemata erstellen, die Forms Runtime und institutionelle Services verwenden."
|
||||||
),
|
),
|
||||||
"body": (
|
"body": (
|
||||||
|
"Dokumentationsbücher stehen neben Formulardefinitionen und dem Titel des Revisionsdialogs. "
|
||||||
|
"Die separate Bezeichnung Formularbedeutung trägt das Buch zur semantischen Dokumentation der "
|
||||||
|
"genauen Definition. "
|
||||||
"Jede Revision legt Feldtypen, Optionen, Einschränkungen sowie Anforderungen an Entwurf, Anlagen, Signaturen, "
|
"Jede Revision legt Feldtypen, Optionen, Einschränkungen sowie Anforderungen an Entwurf, Anlagen, Signaturen, "
|
||||||
"Richtlinien und Übergaben fest. Die Veröffentlichung erfolgt ausdrücklich; vorhandene Einreichungen behalten ihre "
|
"Richtlinien und Übergaben fest. Die Veröffentlichung erfolgt ausdrücklich; vorhandene Einreichungen behalten ihre "
|
||||||
"exakte Revision. Katalog, Filter, Leerzustände, Abschnittsüberschriften und Feldgruppen der Definition verwenden die "
|
"exakte Revision. Katalog, Filter, Leerzustände, Abschnittsüberschriften und Feldgruppen der Definition verwenden die "
|
||||||
@@ -518,7 +523,7 @@ manifest = ModuleManifest(
|
|||||||
"workflow instance",
|
"workflow instance",
|
||||||
),
|
),
|
||||||
reference_packages=("product.service-to-decision",),
|
reference_packages=("product.service-to-decision",),
|
||||||
migration_docs=("docs/FORMS_BOUNDARY.md",),
|
migration_docs=("docs/FORMS_BOUNDARY.md", "docs/INTERFACE_PATTERN_MIGRATION.md"),
|
||||||
recovery_docs=("docs/FORMS_BOUNDARY.md",),
|
recovery_docs=("docs/FORMS_BOUNDARY.md",),
|
||||||
security_docs=("docs/FORMS_BOUNDARY.md",),
|
security_docs=("docs/FORMS_BOUNDARY.md",),
|
||||||
operations_docs=("docs/FORMS_BOUNDARY.md",),
|
operations_docs=("docs/FORMS_BOUNDARY.md",),
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { FormGrid,
|
|||||||
ConfirmDialog,
|
ConfirmDialog,
|
||||||
Dialog,
|
Dialog,
|
||||||
DocumentationHelpLink,
|
DocumentationHelpLink,
|
||||||
|
TextWithHelp,
|
||||||
DismissibleAlert,
|
DismissibleAlert,
|
||||||
FormField as Field,
|
FormField as Field,
|
||||||
IconButton,
|
IconButton,
|
||||||
@@ -193,6 +194,7 @@ export default function FormDefinitionDialog({
|
|||||||
<Dialog
|
<Dialog
|
||||||
open={open}
|
open={open}
|
||||||
title={definition ? `Revise ${definition.title}` : "New Form definition"}
|
title={definition ? `Revise ${definition.title}` : "New Form definition"}
|
||||||
|
titleHelp={<DocumentationHelpLink reference={FORMS_FIELD_DOCUMENTATION} />}
|
||||||
onClose={requestClose}
|
onClose={requestClose}
|
||||||
closeDisabled={busy}
|
closeDisabled={busy}
|
||||||
portal
|
portal
|
||||||
@@ -207,9 +209,8 @@ export default function FormDefinitionDialog({
|
|||||||
}>
|
}>
|
||||||
<div className="form-definition-editor">
|
<div className="form-definition-editor">
|
||||||
<div className="form-definition-help">
|
<div className="form-definition-help">
|
||||||
<DocumentationHelpLink reference={FORMS_FIELD_DOCUMENTATION} />
|
|
||||||
{definition && <>
|
{definition && <>
|
||||||
<DocumentationHelpLink reference={semanticFormDocumentation(definition)} />
|
<TextWithHelp help={<DocumentationHelpLink reference={semanticFormDocumentation(definition)} />}>Form meaning</TextWithHelp>
|
||||||
<a className="btn btn-secondary" href={semanticAuthoringHref(definition)} target="_blank" rel="noreferrer">
|
<a className="btn btn-secondary" href={semanticAuthoringHref(definition)} target="_blank" rel="noreferrer">
|
||||||
<BookOpen size={16} aria-hidden="true" /> Document form meaning
|
<BookOpen size={16} aria-hidden="true" /> Document form meaning
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -162,6 +162,8 @@ export default function FormsPage({ settings, auth }: PlatformRouteContext) {
|
|||||||
<main className="forms-page">
|
<main className="forms-page">
|
||||||
<WorkspaceFrame className="forms-shell" label="Form definitions" interfaceId="forms.catalogue" helpContextId="forms.page.catalogue" helpModuleId="forms">
|
<WorkspaceFrame className="forms-shell" label="Form definitions" interfaceId="forms.catalogue" helpContextId="forms.page.catalogue" helpModuleId="forms">
|
||||||
<WorkspaceActionBar
|
<WorkspaceActionBar
|
||||||
|
title="Form definitions"
|
||||||
|
titleHelp={<DocumentationHelpLink reference={FORMS_DOCUMENTATION} />}
|
||||||
scope="workspace"
|
scope="workspace"
|
||||||
variant="collection"
|
variant="collection"
|
||||||
refreshable
|
refreshable
|
||||||
@@ -187,7 +189,6 @@ export default function FormsPage({ settings, auth }: PlatformRouteContext) {
|
|||||||
<span className="forms-count">{total}</span>
|
<span className="forms-count">{total}</span>
|
||||||
</>}
|
</>}
|
||||||
createAction={<Button variant="primary" disabled={!canWrite} disabledReason={!canWrite ? FORMS_I18N.writeReason : undefined} onClick={() => setEditing("new")}><Plus size={16} aria-hidden="true" />New definition</Button>}
|
createAction={<Button variant="primary" disabled={!canWrite} disabledReason={!canWrite ? FORMS_I18N.writeReason : undefined} onClick={() => setEditing("new")}><Plus size={16} aria-hidden="true" />New definition</Button>}
|
||||||
helpAction={<DocumentationHelpLink reference={FORMS_DOCUMENTATION} />}
|
|
||||||
/>
|
/>
|
||||||
<PageScrollViewport className="forms-list-viewport">
|
<PageScrollViewport className="forms-list-viewport">
|
||||||
{error && <DismissibleAlert tone="danger" resetKey={error}>{error}</DismissibleAlert>}
|
{error && <DismissibleAlert tone="danger" resetKey={error}>{error}</DismissibleAlert>}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import type { PlatformTranslations } from "@govoplan/core-webui";
|
import type { PlatformTranslations } from "@govoplan/core-webui";
|
||||||
|
|
||||||
const en = {
|
const en = {
|
||||||
|
"Form meaning": "Form meaning",
|
||||||
"i18n:govoplan-forms.form_definitions": "Form definitions",
|
"i18n:govoplan-forms.form_definitions": "Form definitions",
|
||||||
"i18n:govoplan-forms.loading_reason": "Form definitions are still loading.",
|
"i18n:govoplan-forms.loading_reason": "Form definitions are still loading.",
|
||||||
"i18n:govoplan-forms.busy_reason": "Another Form definition action is still running.",
|
"i18n:govoplan-forms.busy_reason": "Another Form definition action is still running.",
|
||||||
@@ -74,6 +75,7 @@ const en = {
|
|||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
const de: Record<keyof typeof en, string> = {
|
const de: Record<keyof typeof en, string> = {
|
||||||
|
"Form meaning": "Formularbedeutung",
|
||||||
"i18n:govoplan-forms.form_definitions": "Formulardefinitionen",
|
"i18n:govoplan-forms.form_definitions": "Formulardefinitionen",
|
||||||
"i18n:govoplan-forms.loading_reason": "Formulardefinitionen werden noch geladen.",
|
"i18n:govoplan-forms.loading_reason": "Formulardefinitionen werden noch geladen.",
|
||||||
"i18n:govoplan-forms.busy_reason": "Eine andere Aktion für Formulardefinitionen läuft noch.",
|
"i18n:govoplan-forms.busy_reason": "Eine andere Aktion für Formulardefinitionen läuft noch.",
|
||||||
|
|||||||
Reference in New Issue
Block a user