From 44a6434e59f96a94fde9d62702608cef273829a2 Mon Sep 17 00:00:00 2001 From: Anthony Juckel Date: Tue, 4 Mar 2025 22:12:03 -0600 Subject: [PATCH] Apply non-markdown label change for subgroups --- .../integration/rendering/flowchart.spec.js | 25 +++++++++++++++++++ .../mermaid/src/diagrams/flowchart/flowDb.ts | 1 + .../rendering-elements/clusters.js | 16 ++++++++---- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/cypress/integration/rendering/flowchart.spec.js b/cypress/integration/rendering/flowchart.spec.js index 95c6e42ed..f94ca7d4e 100644 --- a/cypress/integration/rendering/flowchart.spec.js +++ b/cypress/integration/rendering/flowchart.spec.js @@ -993,4 +993,29 @@ flowchart TB } ); }); + it('69: should render subgraphs with adhoc list headings', () => { + imgSnapshotTest( + ` + graph TB + subgraph "1. first" + a1-->a2 + end + subgraph 2. second + b1-->b2 + end + `, + { fontFamily: 'courier' } + ); + }); + it('70: should render subgraphs with markdown headings', () => { + imgSnapshotTest( + ` + graph TB + subgraph "\`**strong**\`" + a1-->a2 + end + `, + { fontFamily: 'courier' } + ); + }); }); diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.ts b/packages/mermaid/src/diagrams/flowchart/flowDb.ts index e2ccca412..a41466b09 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.ts @@ -1101,6 +1101,7 @@ You have to call mermaid.initialize.` id: subGraph.id, label: subGraph.title, labelStyle: '', + labelType: subGraph.labelType, parentId: parentDB.get(subGraph.id), padding: 8, cssCompiledStyles: this.getCompiledStyles(subGraph.classes), diff --git a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js index 1dd87d438..4f49bd5d6 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js @@ -30,11 +30,17 @@ const rect = async (parent, node) => { // Create the label and insert it after the rect const labelEl = shapeSvg.insert('g').attr('class', 'cluster-label '); - const text = await createText(labelEl, node.label, { - style: node.labelStyle, - useHtmlLabels, - isNode: true, - }); + let text; + if (node.labelType === 'markdown') { + text = await createText(labelEl, node.label, { + style: node.labelStyle, + useHtmlLabels, + isNode: true, + }); + } else { + const labelElement = await createLabel(node.label, node.labelStyle, false, true); + text = labelEl.node()?.appendChild(labelElement); + } // Get the size of the label let bbox = text.getBBox();