If you have technical questions, please create a support ticket in the DevExpress Support Center.
import React from 'react';
import { Tooltip, ITooltipOptions } from 'devextreme-react/tooltip';
const animationConfig: ITooltipOptions['animation'] = {
show: {
type: 'slide',
from: {
top: -100,
opacity: 0,
},
to: {
top: 0,
opacity: 1,
},
},
hide: {
type: 'pop',
from: {
scale: 1,
opacity: 1,
},
to: {
scale: 0.1,
opacity: 0,
},
},
};
export default function App() {
return (
<div className="form">
<div className="label">Default mode</div>
<div>
<img
alt="ExcelRemote IR"
id="product1"
src="images/products/17.png"
/>
<Tooltip
target="#product1"
showEvent="mouseenter"
hideEvent="mouseleave"
hideOnOutsideClick={false}
>
<div>ExcelRemote IR</div>
</Tooltip>
</div>
<div className="label">With template</div>
<div>
<img
alt="SuperPlasma 50"
id="product2"
src="images/products/3.png"
/>
<Tooltip
target="#product2"
showEvent="mouseenter"
hideEvent="mouseleave"
position="right"
hideOnOutsideClick={false}
>
<img alt="SuperPlasma 50" width="150" src="images/products/3.png" /><br />
<b>SuperPlasma 50</b><br /> 2400$
</Tooltip>
</div>
<div className="label">With animation</div>
<div>
<img
alt="Projector PlusHD"
id="product3"
src="images/products/15.png"
/>
<Tooltip
target="#product3"
showEvent="mouseenter"
hideEvent="mouseleave"
position="top"
animation={animationConfig}
hideOnOutsideClick={false}
>
<div>Projector PlusHD</div>
</Tooltip>
</div>
</div>
);
}
xxxxxxxxxx
import React from 'react';
import { Tooltip } from 'devextreme-react/tooltip';
const animationConfig = {
show: {
type: 'slide',
from: {
top: -100,
opacity: 0,
},
to: {
top: 0,
opacity: 1,
},
},
hide: {
type: 'pop',
from: {
scale: 1,
opacity: 1,
},
to: {
scale: 0.1,
opacity: 0,
},
},
};
export default function App() {
return (
<div className="form">
<div className="label">Default mode</div>
<div>
<img
alt="ExcelRemote IR"
id="product1"
src="images/products/17.png"
/>
<Tooltip
target="#product1"
showEvent="mouseenter"
hideEvent="mouseleave"
hideOnOutsideClick={false}
>
<div>ExcelRemote IR</div>
</Tooltip>
</div>
<div className="label">With template</div>
<div>
<img
alt="SuperPlasma 50"
id="product2"
src="images/products/3.png"
/>
<Tooltip
target="#product2"
showEvent="mouseenter"
hideEvent="mouseleave"
position="right"
hideOnOutsideClick={false}
>
<img
alt="SuperPlasma 50"
width="150"
src="images/products/3.png"
/>
<br />
<b>SuperPlasma 50</b>
<br /> 2400$
</Tooltip>
</div>
<div className="label">With animation</div>
<div>
<img
alt="Projector PlusHD"
id="product3"
src="images/products/15.png"
/>
<Tooltip
target="#product3"
showEvent="mouseenter"
hideEvent="mouseleave"
position="top"
animation={animationConfig}
hideOnOutsideClick={false}
>
<div>Projector PlusHD</div>
</Tooltip>
</div>
</div>
);
}
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.tsx';
ReactDOM.render(
<App />,
document.getElementById('app'),
);
xxxxxxxxxx
window.exports = window.exports || {};
window.config = {
transpiler: 'ts',
typescriptOptions: {
module: 'system',
emitDecoratorMetadata: true,
experimentalDecorators: true,
jsx: 'react',
},
meta: {
'react': {
'esModule': true,
},
'typescript': {
'exports': 'ts',
},
'devextreme/time_zone_utils.js': {
'esModule': true,
},
'devextreme/localization.js': {
'esModule': true,
},
'devextreme/viz/palette.js': {
'esModule': true,
},
'openai': {
'esModule': true,
},
},
paths: {
'npm:': 'https://unpkg.com/',
'bundles:': 'bundles/',
'externals:': 'bundles/externals/',
},
defaultExtension: 'js',
map: {
'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js',
'typescript': 'npm:typescript@4.2.4/lib/typescript.js',
'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js',
'react': 'npm:react@17.0.2/umd/react.development.js',
'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js',
'prop-types': 'npm:prop-types/prop-types.js',
'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js',
'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js',
'es6-object-assign': 'npm:es6-object-assign',
'devextreme': 'npm:devextreme@link:../../packages/devextreme/artifacts/npm/devextreme/cjs',
'devextreme-react': 'npm:devextreme-react@link:../../packages/devextreme-react/npm/cjs',
'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js',
'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js',
'devexpress-gantt': 'npm:devexpress-gantt@4.1.54/dist/dx-gantt.js',
'@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12',
'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js',
'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js',
'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js',
'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js',
'inferno-hydrate': 'npm:inferno-hydrate/dist/inferno-hydrate.min.js',
'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js',
'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js',
'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js',
'devextreme-cldr-data': 'npm:devextreme-cldr-data@1.0.3',
// SystemJS plugins
'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js',
'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js',
// Prettier
'prettier/standalone': 'npm:prettier@2.8.8/standalone.js',
'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js',
},
packages: {
'devextreme': {
defaultExtension: 'js',
},
'devextreme-react': {
main: 'index.js',
},
'devextreme/events/utils': {
main: 'index',
},
'devextreme/localization/messages': {
format: 'json',
defaultExtension: 'json',
},
'devextreme/events': {
main: 'index',
},
'es6-object-assign': {
main: './index.js',
defaultExtension: 'js',
},
},
packageConfigPaths: [
'npm:@devextreme/*/package.json',
'npm:@devextreme/runtime@3.0.12/inferno/package.json',
],
babelOptions: {
sourceMaps: false,
stage0: true,
react: true,
},
};
System.config(window.config);
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
xxxxxxxxxx
<html lang="en">
<head></head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
</body>
</html>
xxxxxxxxxx
.form {
padding: 20px;
}
.form img {
width: 100px;
margin: 10px 0 30px;
}
.label {
font-size: 16px;
}
Show and Hide the Tooltip
To show and hide the Tooltip in response to certain events, specify the showEvent and hideEvent properties. These properties can accept multiple events at once as well as an object.
To hide the Tooltip when a user clicks outside its borders, use the hideOnOutsideClick property.
Customize and Animate the Tooltip
Assign the Tooltip's content in the HTML markup. Alternatively, you can use the content template to customize the Tooltip's content.
If you need to position the Tooltip at a certain side of the target element, specify the position property.
To animate the Tooltip, declare the animation object. In this object, specify the show and hide fields.