1 Commits
Author SHA1 Message Date
zemion cd59137d4c fix(ui): align workflow and inspector semantic help
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.
2026-09-09 02:04:29 +02:00
5 changed files with 41 additions and 16 deletions
+8 -2
View File
@@ -144,7 +144,10 @@ manifest = ModuleManifest(
id="workflow.workspace-layout",
title="Workflow workspace actions",
summary="Find collection-wide commands in their consistent workspace position.",
body="Reload and New workflow use the persistent full-width workspace header at the upper right; Reload sits immediately before creation. Selecting a record, changing filters, or opening an editor does not move these collection-wide commands into the left pane. Graph editing, validation, saving, publication, and execution remain separate pane-local actions. Existing permissions, disabled-state rules, and unsaved-change guards still apply. Administrators configure authority through the existing permission system; no new permission or automatic operation is introduced.",
body="Documentation books sit immediately beside the visible heading or contextual label for "
"Workflows, the current workflow and its inspector, not among operational action buttons. "
"Field help remains beside its label. "
"Reload and New workflow use the persistent full-width workspace header at the upper right; Reload sits immediately before creation. Selecting a record, changing filters, or opening an editor does not move these collection-wide commands into the left pane. Graph editing, validation, saving, publication, and execution remain separate pane-local actions. Existing permissions, disabled-state rules, and unsaved-change guards still apply. Administrators configure authority through the existing permission system; no new permission or automatic operation is introduced.",
layer="static",
documentation_types=("user", "admin"),
audience=("user", "module_admin", "operator"),
@@ -152,7 +155,10 @@ manifest = ModuleManifest(
translations={"de": {
"title": "Workflows: Aktionen im Arbeitsbereich",
"summary": "Sammlungsweite Aktionen an ihrer einheitlichen Position im Arbeitsbereich finden.",
"body": "Neu laden und Neuer Workflow stehen oben rechts in der dauerhaft sichtbaren, arbeitsbereichsweiten Leiste; Neu laden steht unmittelbar vor dem Anlegen. Auswahl, Filterwechsel und Bearbeitung verschieben diese sammlungsweiten Aktionen nicht in den linken Bereich. Graphbearbeitung, Validierung, Speichern, Veröffentlichung und Ausführung bleiben getrennte Aktionen im jeweiligen Bereich. Bestehende Berechtigungen, Deaktivierungsregeln und der Schutz ungespeicherter Änderungen gelten weiterhin. Administratoren konfigurieren Rechte im bestehenden Berechtigungssystem; es entstehen weder neue Rechte noch automatische Vorgänge.",
"body": "Dokumentationsbücher stehen unmittelbar neben der sichtbaren Überschrift oder "
"Kontextbezeichnung für Workflows, den aktuellen Workflow und seine Detailansicht, nicht "
"zwischen ausführbaren Aktionsschaltflächen. Feldhilfe bleibt neben der Feldbezeichnung. "
"Neu laden und Neuer Workflow stehen oben rechts in der dauerhaft sichtbaren, arbeitsbereichsweiten Leiste; Neu laden steht unmittelbar vor dem Anlegen. Auswahl, Filterwechsel und Bearbeitung verschieben diese sammlungsweiten Aktionen nicht in den linken Bereich. Graphbearbeitung, Validierung, Speichern, Veröffentlichung und Ausführung bleiben getrennte Aktionen im jeweiligen Bereich. Bestehende Berechtigungen, Deaktivierungsregeln und der Schutz ungespeicherter Änderungen gelten weiterhin. Administratoren konfigurieren Rechte im bestehenden Berechtigungssystem; es entstehen weder neue Rechte noch automatische Vorgänge.",
}},
),
DocumentationTopic(
@@ -4,6 +4,7 @@ import {
ActionToolbar,
Button,
DocumentationHelpLink,
TextWithHelp,
DismissibleAlert,
FormField,
ReferenceMultiSelect,
@@ -212,17 +213,18 @@ export default function WorkflowInspector({
<ActionToolbar surface="section-header" className="workflow-panel-heading">
<span>
<strong>Inspector</strong>
<small>{definition?.label ?? node.type}</small>
<TextWithHelp help={semanticDefinitionId && semanticStepAvailable ? <DocumentationHelpLink
reference={{
contextId: semanticHelpContext(semanticDefinitionId, node.id),
documentationType: "user"
}}
label="Open step meaning"
/> : undefined}>
<small>{definition?.label ?? node.type}</small>
</TextWithHelp>
</span>
<span className="workflow-inspector-actions">
{semanticDefinitionId && semanticStepAvailable ? <>
<DocumentationHelpLink
reference={{
contextId: semanticHelpContext(semanticDefinitionId, node.id),
documentationType: "user"
}}
label="Open step meaning"
/>
<a
className="btn btn-secondary"
href={semanticAuthoringHref(semanticDefinitionId, node.id)}
+7 -6
View File
@@ -602,8 +602,8 @@ export default function WorkflowPage({
variant="collection"
refreshable
reloadAction={{ onReload: () => void reload(draft?.id), loading: loading || working }}
title="Workflows"
contextActions={<>
<strong>Workflows</strong>
{hasScope(auth, "workflow:instance:admin") ? (
<IconButton
label="Reconcile module standards"
@@ -614,7 +614,7 @@ export default function WorkflowPage({
/>
) : null}
</>}
helpAction={<DocumentationHelpLink
titleHelp={<DocumentationHelpLink
reference={{ topicId: "workflow.editor", documentationType: "user" }}
label="Open Workflow documentation"
/>}
@@ -709,14 +709,15 @@ export default function WorkflowPage({
aria-label="Workflow description"
/>
</span>}
helpAction={draft.id ? <>
<DocumentationHelpLink
title="Workflow"
titleHelp={draft.id ? <DocumentationHelpLink
reference={{
contextId: semanticHelpContext(draft.id),
documentationType: "user"
}}
label="Open workflow meaning"
/>
/> : undefined}
helpAction={draft.id ?
<a
className="btn btn-secondary"
href={semanticAuthoringHref(draft.id)}
@@ -725,7 +726,7 @@ export default function WorkflowPage({
>
<BookOpen size={16} aria-hidden="true" /> Document meaning
</a>
</> : undefined}
: undefined}
primaryActions={<span className="workflow-command-bar">
{draft.id ? (
<select
+14
View File
@@ -0,0 +1,14 @@
import type { PlatformTranslations } from "@govoplan/core-webui";
/** Module-owned translations for contextual headings. */
export const generatedTranslations: PlatformTranslations = {
en: {
"Workflows": "Workflows",
"Workflow": "Workflow",
},
de: {
"Workflows": "Workflows",
"Workflow": "Workflow",
},
};
+2
View File
@@ -3,6 +3,7 @@ import type {
DashboardWidgetsUiCapability,
PlatformWebModule
} from "@govoplan/core-webui";
import { generatedTranslations } from "./i18n/generatedTranslations";
import "@xyflow/react/dist/style.css";
import "./styles/workflow.css";
@@ -64,6 +65,7 @@ const workflowDashboardWidgets: DashboardWidgetsUiCapability = {
};
export const workflowModule: PlatformWebModule = {
translations: generatedTranslations,
id: "workflow",
label: "Workflow",
version: "0.1.14",