-
+
{title}
diff --git a/packages/serverless-workflow-diagram-editor/src/i18n/locales/en.ts b/packages/serverless-workflow-diagram-editor/src/i18n/locales/en.ts
index 80c88cbb..bdd2d201 100644
--- a/packages/serverless-workflow-diagram-editor/src/i18n/locales/en.ts
+++ b/packages/serverless-workflow-diagram-editor/src/i18n/locales/en.ts
@@ -43,6 +43,13 @@ export const en = {
"sidebar.exportMermaid.copy": "Copy Mermaid Code",
"sidebar.exportMermaid.download": "Download as Mermaid File",
"sidebar.exportMermaid.copied": "Copied!",
+ "aria.minimap.hide": "Hide minimap",
+ "aria.minimap.show": "Show minimap",
+ "aria.badge": "Badge:",
+ "aria.panel.nodeDetails": "Node details panel",
+ "aria.panel.workflowInfo": "Workflow information panel",
+ "aria.panel.content": "Panel content",
+ "aria.panel.exportActions": "Export actions",
} as const;
export type TranslationKeys = keyof typeof en;
diff --git a/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.tsx b/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.tsx
index 861331fb..145f54a0 100644
--- a/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.tsx
+++ b/packages/serverless-workflow-diagram-editor/src/react-flow/diagram/Diagram.tsx
@@ -16,6 +16,7 @@
import * as React from "react";
import * as RF from "@xyflow/react";
+import { useI18n } from "@serverlessworkflow/i18n";
import { ReactFlowNodeTypes } from "../nodes/Nodes";
import "@xyflow/react/dist/style.css";
import "./Diagram.css";
@@ -46,6 +47,7 @@ export type DiagramProps = {
};
export const Diagram = ({ divRef, ref, colorMode = "light" }: DiagramProps) => {
+ const { t } = useI18n();
const reactFlowInstance: RF.ReactFlowInstance = RF.useReactFlow();
const { model, errors, nodes, edges, isReadOnly, setNodes, setEdges, setSelectedNodeId } =
useDiagramEditorContext();
@@ -187,7 +189,12 @@ export const Diagram = ({ divRef, ref, colorMode = "light" }: DiagramProps) => {
position={"bottom-right"}
showInteractive={false}
>
-
setMinimapVisible(!minimapVisible)}>M
+
setMinimapVisible(!minimapVisible)}
+ aria-label={minimapVisible ? t("aria.minimap.hide") : t("aria.minimap.show")}
+ >
+ M
+
diff --git a/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx b/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx
index 9a9efe60..6b338a29 100644
--- a/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx
+++ b/packages/serverless-workflow-diagram-editor/src/react-flow/nodes/Nodes.tsx
@@ -90,12 +90,18 @@ interface BadgeProps {
}
function TaskNodeBadge({ badge, testId }: BadgeProps) {
+ const { t } = useI18n();
const isUnknown = !KNOWN_BADGES.has(badge.toLowerCase());
if (isUnknown) {
/* TODO: instead of using the browser default to display tool tip like below, replace with tooltip component when we add it */
return (
-
+
{badge}
);
diff --git a/packages/serverless-workflow-diagram-editor/src/side-panel/SidePanel.tsx b/packages/serverless-workflow-diagram-editor/src/side-panel/SidePanel.tsx
index b8b6ae4b..0d15e321 100644
--- a/packages/serverless-workflow-diagram-editor/src/side-panel/SidePanel.tsx
+++ b/packages/serverless-workflow-diagram-editor/src/side-panel/SidePanel.tsx
@@ -61,11 +61,16 @@ export function SidePanel() {
}, [selectedNodeId, setOpen]);
return (
-
+
-
+
{selectedNode ? (
) : (
<>
-
+
{t("sidebar.selectNode")}
{model !== null ? : null}
>
)}
-
- {model !== null && selectedNodeId === null && }
-
+ {model !== null && selectedNodeId === null ? (
+
+
+
+ ) : null}
);
}
diff --git a/packages/serverless-workflow-diagram-editor/tests/react-flow/nodes/Nodes.test.tsx b/packages/serverless-workflow-diagram-editor/tests/react-flow/nodes/Nodes.test.tsx
index 7298ec3e..1455adb1 100644
--- a/packages/serverless-workflow-diagram-editor/tests/react-flow/nodes/Nodes.test.tsx
+++ b/packages/serverless-workflow-diagram-editor/tests/react-flow/nodes/Nodes.test.tsx
@@ -234,7 +234,7 @@ describe("React Flow custom node types", () => {
listen: { to: { any: [] } },
}),
];
- render(
+ renderWithProviders(
,
@@ -255,7 +255,7 @@ describe("React Flow custom node types", () => {
call: "customCall",
}),
];
- render(
+ renderWithProviders(
{
fork: { branches: [], compete: true },
}),
];
- render(
+ renderWithProviders(