Getting started in EJ2 TypeScript Tooltip control
9 Dec 202415 minutes to read
This section briefly explains how to create a simple Tooltip component and configure its available functionalities in TypeScript, using Essential JS 2 quickstart seed repository.
This application is integrated with the
webpack.config.js
configuration and uses the latest version of the webpack-cli. It requires nodev14.15.0
or higher. For more information about webpack and its features, refer to the webpack documentation.
Tooltips can be initialized on,
- A single element (or)
- A container that has more than one sub-element within it and the sub-elements are considered as targets.
Dependencies
The following list of dependencies are required to use the Tooltip component in your application.
|-- @syncfusion/ej2-popups
|-- @syncfusion/ej2-base
|-- @syncfusion/ej2-buttons
Set up development environment
Open the command prompt from the required directory, and run the following command to clone the Syncfusion JavaScript (Essential JS 2) quickstart project from GitHub.
git clone https://github.com/SyncfusionExamples/ej2-quickstart-webpack- ej2-quickstart
After cloning the application in the ej2-quickstart
folder, run the following command line to navigate to the ej2-quickstart
folder.
cd ej2-quickstart
Add Syncfusion JavaScript packages
Syncfusion JavaScript (Essential JS 2) packages are available on the npmjs.com public registry. You can install all Syncfusion JavaScript (Essential JS 2) controls in a single @syncfusion/ej2 package or individual packages for each control.
The quickstart application is preconfigured with the dependent @syncfusion/ej2 package in the ~/package.json
file. Use the following command to install the dependent npm packages from the command prompt.
npm install
Import the Syncfusion CSS styles
To render Tootip component, need to import Popups and its dependent components styles as given below in in the ~/src/styles/styles.css
file, as shown below:
@import '../../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../../node_modules/@syncfusion/ej2-popups/styles/material.css';
Initialize the Tooltip on a single element
- Add the HTML span tag with its id attribute set to
target
in yourindex.html
file where the Tooltip is initialized.
[src/index.html]
<!DOCTYPE html>
<html lang="en">
<head>
<title>Essential JS 2</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
<meta name="description" content="Essential JS 2" />
<meta name="author" content="Syncfusion" />
<link rel="shortcut icon" href="resources/favicon.ico" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div style="margin: 50px;">
<!--element which is going to render-->
<span id='target'>Show Tooltip</span>
</div>
</body>
</html>
- Import the Tooltip component to your
app.ts
file, and initialize it to the element#target
as shown below.
[src/app/app.ts]
import { Tooltip } from '@syncfusion/ej2-popups';
// initialize tooltip component
let tooltip: Tooltip = new Tooltip({
content: 'Tooltip content'
});
// render initialized tooltip
tooltip.appendTo('#target');
- Now, run the application in the browser using the following command.
npm start
The output will be as follows:
import { Tooltip } from '@syncfusion/ej2-popups';
import { Button } from '@syncfusion/ej2-buttons';
let tooltip: Tooltip = new Tooltip({
content: 'Tooltip content'
});
tooltip.appendTo('#target');
let button: Button = new Button({
content: 'Show Tooltip'
});
button.appendTo('#target');
// Added code to hide the loader element.
let loader = document.getElementById('loader');
let container = document.getElementById('container');
if (loader) {
loader.style.display = "none";
}
if (container) {
container.style.visibility = "visible";
}
<!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 style="display: inline-block; position: relative; left: 50%;top: 100px;transform: translateX(-50%);">
<span id='target'></span>
</div>
</div>
</body>
</html>
#container {
visibility: hidden;
}
#loader {
color: #008cff;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
In the above sample code,
#target
is theid
of the HTML element in a page to which the Tooltip is initialized.
Initialize Tooltip within a container
You can create Tooltips on multiple targets within a container. To do so, you have to define specific target elements to the target
property so that the Tooltip is initialized only on matched targets within a container. In this case, the Tooltip content is assigned from the title
attribute of the target element.
Refer to the following code example to create a Tooltip on multiple targets within a container.
import { Tooltip } from '@syncfusion/ej2-popups';
import { Button } from '@syncfusion/ej2-buttons';
let tooltip: Tooltip = new Tooltip({
target: '.e-info',
position: 'RightCenter'
});
tooltip.appendTo('#details');
let button: Button = new Button();
button.appendTo('#sample');
button.appendTo('#clear');
// Added code to hide the loader element.
let loader = document.getElementById('loader');
let container = document.getElementById('container');
if (loader) {
loader.style.display = "none";
}
if (container) {
container.style.visibility = "visible";
}
<!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'>
<form id="details" role="form">
<table>
<tr>
<td class="info">User Name</td>
<td>
<input type="text" class="e-info" name="firstname" title="Please enter your name"> </td>
</tr>
<tr>
<td class="info">Email Address</td>
<td>
<input type="text" class="e-info" name="email" title="Enter a valid email address">
</td>
</tr>
<tr>
<td class="info">Password</td>
<td>
<input type="password" class="e-info" name="password" title="Be at least 8 characters length">
</td>
</tr>
<tr>
<td class="info">Confirm Password</td>
<td>
<input type="password" class="e-info" name="Cpwd" title="Re-enter your password">
</td>
</tr>
<tr>
<td>
<input id="sample" class="center" type="submit" value="Submit">
</td>
<td>
<input id="clear" type="reset" class="center" value="Reset" style="align-content: center;">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
#container {
visibility: hidden;
width: 500px;
margin: auto;
transform: translateX(10%);
}
#loader {
color: #008cff;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
#details table th,
#details table td {
padding: 20px 10px;
text-align: left;
}
#details .info {
font-size: 14px;
text-align: left;
font-weight: 500;
}
.center {
position: relative;
left: 50%;
transform: translateX(-50%);
}
In the above sample,
#details
refers to the container’s id, and the target.e-info
refers to the target elements available within that container.