Display tooltip on svg and canvas elements in EJ2 TypeScript Tooltip control
8 May 20237 minutes to read
Tooltip can be displayed on both SVG and Canvas elements. You can directly attach the <svg>
or <canvas>
elements to show tooltips on data visualization elements.
SVG
Create the SVG square element and refer to the following code snippet to render the tooltip on SVG square.
let square: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'SVG Square',
target: '#square
});
square.appendTo('#box');
Canvas
Create the canvas circle element and refer to the following code snippet to render the tooltip on Canvas circle.
let circle: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'Canvas Circle',
target: '#circle'
});
circle.appendTo('#box');
import { Tooltip } from '@syncfusion/ej2-popups';
import { Button } from '@syncfusion/ej2-buttons';
//Render tooltip component
let square: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'SVG Square',
target: '#square'
});
square.appendTo('#box');
let ellipse: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'SVG Ellipse',
target: '#ellipse'
});
ellipse.appendTo('#box');
let polyline: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'SVG Polyline',
target: '#polyline'
});
polyline.appendTo('#box');
let circle: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'Canvas Circle',
target: '#circle'
});
circle.appendTo('#box');
let triangle: Tooltip = new Tooltip({
cssClass: 'e-tooltip-css',
content: 'Canvas Triangle',
target: '#triangle'
});
triangle.appendTo('#box');
let canvas: HTMLCanvasElement = document.getElementById('triangle') as HTMLCanvasElement;
let context;
if (canvas.getContext) {
context = canvas.getContext('2d');
context.beginPath();
context.moveTo(0, 50);
context.lineTo(100, 50);
context.lineTo(50, 0);
context.fillStyle = "#FDA600";
context.fill();
}
canvas = document.getElementById('circle') as HTMLCanvasElement;
context = canvas.getContext('2d');
let centerX: number = canvas.width / 2;
let centerY: number = canvas.height / 2;
let radius: number = 30;
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
context.fillStyle = '#0450C2';
context.fill();
<!DOCTYPE html>
<html lang="en">
<head>
<title>EJ2 Tooltip</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript UI Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-base/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-popups/styles/material.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/28.1.33/ej2-buttons/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='loader'>Loading....</div>
<div id="container">
<div id="box" class="e-prevent-select">
<div class="circletool" id="rectShape" style="left:1%;top:10%">
<svg>
<rect id="square" class="shape" x="50" y="20" width="50" height="50" style="fill:#FDA600;stroke:none;stroke-width:5;stroke-opacity:0.9" />
</svg>
</div>
<div class="circletool" id="ellipseShape" style="top:65%;">
<svg>
<ellipse id="ellipse" class="shape" cx="100" cy="50" rx="20" ry="40" style="fill:#0450C2;stroke:none;stroke-width:2" />
</svg>
</div>
<div class="circletool" id="polyShape" style="top:25%;left:40%">
<svg>
<polyline id="polyline" class="shape" points="0,40 40,40 40,80 80,80 80,120 120,120 120,160" style="fill:#ffffff;stroke:#0450C2;stroke-width:4" />
</svg>
</div>
<div class="circletool" id="circleShape" style="top:16%;left:72%">
<canvas id="circle" class="shape" width="60" height="60"></canvas>
</div>
<div class="circletool" id="triShape" style="top:73%;left:76%">
<canvas id="triangle" class="shape" width="100" height="50"></canvas>
</div>
</div>
</div>
</body>
</html>