mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-10-08 08:39:38 +02:00
Merge branch 'tooltip-positioning-issue' of https://github.com/mermaid-js/mermaid into tooltip-positioning-issue
This commit is contained in:
@@ -473,6 +473,16 @@ export class ClassDB implements DiagramDB {
|
|||||||
LOLLIPOP: 4,
|
LOLLIPOP: 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Utility function to escape HTML meta-characters
|
||||||
|
private escapeHtml(str: string): string {
|
||||||
|
return str
|
||||||
|
.replace(/&/g, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''');
|
||||||
|
}
|
||||||
|
|
||||||
private readonly setupToolTips = (element: Element) => {
|
private readonly setupToolTips = (element: Element) => {
|
||||||
let tooltipElem = select<HTMLDivElement, unknown>('.mermaidTooltip');
|
let tooltipElem = select<HTMLDivElement, unknown>('.mermaidTooltip');
|
||||||
if (tooltipElem.empty()) {
|
if (tooltipElem.empty()) {
|
||||||
@@ -509,7 +519,7 @@ export class ClassDB implements DiagramDB {
|
|||||||
const rect = (event.currentTarget as Element).getBoundingClientRect();
|
const rect = (event.currentTarget as Element).getBoundingClientRect();
|
||||||
tooltipElem.transition().duration(200).style('opacity', '.9');
|
tooltipElem.transition().duration(200).style('opacity', '.9');
|
||||||
tooltipElem
|
tooltipElem
|
||||||
.html(title.replace(/<br\/>/g, '<br/>'))
|
.html(this.escapeHtml(title).replace(/<br\/>/g, '<br/>'))
|
||||||
.style('left', `${window.scrollX + rect.left + rect.width / 2}px`)
|
.style('left', `${window.scrollX + rect.left + rect.width / 2}px`)
|
||||||
.style('top', `${window.scrollY + rect.bottom + 4}px`);
|
.style('top', `${window.scrollY + rect.bottom + 4}px`);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user