diff --git a/.changeset/chilly-words-march.md b/.changeset/chilly-words-march.md new file mode 100644 index 000000000..54c0b4ebf --- /dev/null +++ b/.changeset/chilly-words-march.md @@ -0,0 +1,5 @@ +--- +'mermaid': patch +--- + +fix: Correct viewBox casing and make SVGs responsive diff --git a/cypress/helpers/util.ts b/cypress/helpers/util.ts index cf0e9a87d..d02e9da87 100644 --- a/cypress/helpers/util.ts +++ b/cypress/helpers/util.ts @@ -99,6 +99,7 @@ export const openURLAndVerifyRendering = ( cy.visit(url); cy.window().should('have.property', 'rendered', true); cy.get('svg').should('be.visible'); + cy.get('svg').should('not.have.attr', 'viewbox'); if (validation) { cy.get('svg').should(validation); diff --git a/packages/mermaid/src/diagrams/packet/renderer.ts b/packages/mermaid/src/diagrams/packet/renderer.ts index 25445a228..95226cf12 100644 --- a/packages/mermaid/src/diagrams/packet/renderer.ts +++ b/packages/mermaid/src/diagrams/packet/renderer.ts @@ -16,7 +16,7 @@ const draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => { const svgWidth = bitWidth * bitsPerRow + 2; const svg: SVG = selectSvgElement(id); - svg.attr('viewbox', `0 0 ${svgWidth} ${svgHeight}`); + svg.attr('viewBox', `0 0 ${svgWidth} ${svgHeight}`); configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth); for (const [word, packet] of words.entries()) { diff --git a/packages/mermaid/src/diagrams/radar/renderer.ts b/packages/mermaid/src/diagrams/radar/renderer.ts index 7324a3a44..247ded66d 100644 --- a/packages/mermaid/src/diagrams/radar/renderer.ts +++ b/packages/mermaid/src/diagrams/radar/renderer.ts @@ -2,6 +2,7 @@ import type { Diagram } from '../../Diagram.js'; import type { RadarDiagramConfig } from '../../config.type.js'; import type { DiagramRenderer, DrawDefinition, SVG, SVGGroup } from '../../diagram-api/types.js'; import { selectSvgElement } from '../../rendering-util/selectSvgElement.js'; +import { configureSvgSize } from '../../setupGraphViewbox.js'; import type { RadarDB, RadarAxis, RadarCurve } from './types.js'; const draw: DrawDefinition = (_text, id, _version, diagram: Diagram) => { @@ -53,11 +54,9 @@ const drawFrame = (svg: SVG, config: Required): SVGGroup => x: config.marginLeft + config.width / 2, y: config.marginTop + config.height / 2, }; - // Initialize the SVG - svg - .attr('viewbox', `0 0 ${totalWidth} ${totalHeight}`) - .attr('width', totalWidth) - .attr('height', totalHeight); + configureSvgSize(svg, totalHeight, totalWidth, config.useMaxWidth ?? true); + + svg.attr('viewBox', `0 0 ${totalWidth} ${totalHeight}`); // g element to center the radar chart return svg.append('g').attr('transform', `translate(${center.x}, ${center.y})`); };