Tooltip open or display modes in React Tooltip component

28 Feb 202524 minutes to read

The open mode property of the Tooltip defines how it is triggered on a target element, such as by hovering, focusing, or clicking. Tooltip component has the following types of open mode:

  • Auto
  • Hover
  • Click
  • Focus
  • Custom

Auto

Tooltip appears when you hover over the target element or when the target element receives the focus.

Hover

Tooltip appears when you hover over the target element.

Click

Tooltip appears when you click the target element.

Focus

Tooltip appears when you focus on a target element (for example, by using the tab key).

Custom

Tooltip is not triggered by any default action. You need to bind your own events and use either the open or close public methods.

import * as React from 'react';
import { TooltipComponent } from '@syncfusion/ej2-react-popups';
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';
function App() {
  let customTooltip = null;
  function handleDoubleClick(args) {
    if (args.target.getAttribute("data-tooltip-id")) {
      customTooltip.close();
    }
    else {
      customTooltip.open(args.target);
    }
  }
  return (<div id="showTooltip">
    <div id="first">
      <TooltipComponent opensOn="Hover" content="Tooltip from hover" position="BottomCenter">
        <ButtonComponent className="blocks" id="tooltiphover" cssClass="e-outline" isPrimary={true}>
          Hover me
        </ButtonComponent>
      </TooltipComponent>
      <TooltipComponent opensOn="Click" content="Tooltip from click" position="BottomCenter">
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Click me
        </ButtonComponent>
      </TooltipComponent>
    </div>
    <br />
    <br />
    <div id="second">
      <TooltipComponent content="Click close icon to close me" position="BottomCenter" isSticky={true}>
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Sticky mode
        </ButtonComponent>
      </TooltipComponent>
      <TooltipComponent content="Opens and closes Tooltip with delay of <i>1000 milliseconds</i>" position="BottomCenter" openDelay="1000" closeDelay="1000">
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Tooltip with delay
        </ButtonComponent>
      </TooltipComponent>
    </div>
    <br />
    <br />
    <div id="third">
      <TooltipComponent content="Tooltip from custom mode" ref={tooltip => {
        customTooltip = tooltip;
      }} position="BottomCenter" opensOn="Custom">
        <button className="blocks e-primary e-outline e-btn" id="tooltipcustom" onDoubleClick={handleDoubleClick.bind(this)}>
          Double Click on Me
        </button>
      </TooltipComponent>
      <TooltipComponent content="Tooltip from focus" position="BottomCenter">
        <div id="textbox" className="e-float-input blocks">
          <input id="focus" type="text" placeholder="Focus and blur" />
        </div>
      </TooltipComponent>
    </div>
  </div>);
}
export default App;
import * as React from 'react';
import { TooltipComponent } from '@syncfusion/ej2-react-popups';
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';

function App() {
  let customTooltip: TooltipComponent = null as any;
  function handleDoubleClick(args: any): void {
    if (args.target.getAttribute("data-tooltip-id")) {
      customTooltip.close();
    } else {
      customTooltip.open(args.target);
    }
  }
  return (
    <div id="showTooltip">
      <div id="first">
        <TooltipComponent
          opensOn="Hover"
          content="Tooltip from hover"
          position="BottomCenter"
        >
          <ButtonComponent
            className="blocks"
            id="tooltiphover"
            cssClass="e-outline"
            isPrimary={true}
          >
            Hover me
          </ButtonComponent>
        </TooltipComponent>
        <TooltipComponent
          opensOn="Click"
          content="Tooltip from click"
          position="BottomCenter"
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Click me
          </ButtonComponent>
        </TooltipComponent>
      </div>
      <br />
      <br />
      <div id="second">
        <TooltipComponent
          content="Click close icon to close me"
          position="BottomCenter"
          isSticky={true}
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Sticky mode
          </ButtonComponent>
        </TooltipComponent>
        <TooltipComponent
          content="Opens and closes Tooltip with delay of <i>1000 milliseconds</i>"
          position="BottomCenter"
          openDelay="1000"
          closeDelay="1000"
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Tooltip with delay
          </ButtonComponent>
        </TooltipComponent>
      </div>
      <br />
      <br />
      <div id="third">
        <TooltipComponent
          content="Tooltip from custom mode"
          ref={tooltip => {
            customTooltip = tooltip as any;
          }}
          position="BottomCenter"
          opensOn="Custom"
        >
          <button
            className="blocks e-primary e-outline e-btn"
            id="tooltipcustom"
            onDoubleClick={handleDoubleClick.bind(this)}
          >
            Double Click on Me
          </button>
        </TooltipComponent>
        <TooltipComponent content="Tooltip from focus" position="BottomCenter">
          <div id="textbox" className="e-float-input blocks">
            <input id="focus" type="text" placeholder="Focus and blur" />
          </div>
        </TooltipComponent>
      </div>
    </div>
  );
}
export default App;
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import { TooltipComponent } from '@syncfusion/ej2-react-popups';
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';
function App() {
  let customTooltip = null;
  function handleDoubleClick(args) {
    if (args.target.getAttribute('data-tooltip-id')) {
      customTooltip.close();
    }
    else {
      customTooltip.open(args.target);
    }
  }
  return (<div id="showTooltip">
    <div id="first">
      <TooltipComponent opensOn="Hover" content="Tooltip from hover" position="BottomCenter">
        <ButtonComponent className="blocks" id="tooltiphover" cssClass="e-outline" isPrimary={true}>
          Hover me
        </ButtonComponent>
      </TooltipComponent>
      <TooltipComponent opensOn="Click" content="Tooltip from click" position="BottomCenter">
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Click me
        </ButtonComponent>
      </TooltipComponent>
    </div>
    <br />
    <br />
    <div id="second">
      <TooltipComponent content="Click close icon to close me" position="BottomCenter" isSticky={true}>
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Sticky mode
        </ButtonComponent>
      </TooltipComponent>
      <TooltipComponent content="Opens and closes Tooltip with delay of <i>1000 milliseconds</i>" position="BottomCenter" openDelay="1000" closeDelay="1000">
        <ButtonComponent className="blocks" id="tooltipclick" cssClass="e-outline" isPrimary={true}>
          Tooltip with delay
        </ButtonComponent>
      </TooltipComponent>
    </div>
    <br />
    <br />
    <div id="third">
      <TooltipComponent content="Tooltip from custom mode" ref={tooltip => {
        customTooltip = tooltip;
      }} position="BottomCenter" opensOn="Custom">
        <button className="blocks e-primary e-outline e-btn" id="tooltipcustom" onDoubleClick={handleDoubleClick.bind(this)}>
          Double Click on Me
        </button>
      </TooltipComponent>
      <TooltipComponent content="Tooltip from focus" position="BottomCenter">
        <div id="textbox" className="e-float-input blocks">
          <input id="focus" type="text" placeholder="Focus and blur" />
        </div>
      </TooltipComponent>
    </div>
  </div>);
}
export default App;
ReactDOM.render(<App />, document.getElementById('sample'));
import * as ReactDOM from 'react-dom';
import * as React from 'react';
import { TooltipComponent } from '@syncfusion/ej2-react-popups';
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';

function App() {
  let customTooltip: TooltipComponent = null as any;
  function handleDoubleClick(args): void {
    if (args.target.getAttribute('data-tooltip-id')) {
      customTooltip.close();
    } else {
      customTooltip.open(args.target);
    }
  }
  return (
    <div id="showTooltip">
      <div id="first">
        <TooltipComponent
          opensOn="Hover"
          content="Tooltip from hover"
          position="BottomCenter"
        >
          <ButtonComponent
            className="blocks"
            id="tooltiphover"
            cssClass="e-outline"
            isPrimary={true}
          >
            Hover me
          </ButtonComponent>
        </TooltipComponent>
        <TooltipComponent
          opensOn="Click"
          content="Tooltip from click"
          position="BottomCenter"
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Click me
          </ButtonComponent>
        </TooltipComponent>
      </div>
      <br />
      <br />
      <div id="second">
        <TooltipComponent
          content="Click close icon to close me"
          position="BottomCenter"
          isSticky={true}
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Sticky mode
          </ButtonComponent>
        </TooltipComponent>
        <TooltipComponent
          content="Opens and closes Tooltip with delay of <i>1000 milliseconds</i>"
          position="BottomCenter"
          openDelay="1000"
          closeDelay="1000"
        >
          <ButtonComponent
            className="blocks"
            id="tooltipclick"
            cssClass="e-outline"
            isPrimary={true}
          >
            Tooltip with delay
          </ButtonComponent>
        </TooltipComponent>
      </div>
      <br />
      <br />
      <div id="third">
        <TooltipComponent
          content="Tooltip from custom mode"
          ref={tooltip => {
            customTooltip = tooltip;
          }}
          position="BottomCenter"
          opensOn="Custom"
        >
          <button
            className="blocks e-primary e-outline e-btn"
            id="tooltipcustom"
            onDoubleClick={handleDoubleClick.bind(this)}
          >
            Double Click on Me
          </button>
        </TooltipComponent>
        <TooltipComponent
          content="Tooltip from focus"
          position="BottomCenter"
        >
          <div id="textbox" className="e-float-input blocks">
            <input id="focus" type="text" placeholder="Focus and blur" />
          </div>
        </TooltipComponent>
      </div>
    </div>
  );
}
export default App;
ReactDOM.render(<App />, document.getElementById('sample'));
#loader {
    color: #008cff;
    height: 40px;
    left: 45%;
    position: absolute;
    top: 45%;
    width: 30%;
}

#first,
#second,
#third {
    display: inline-flex;
}

#textbox {
    display: inline-block;
    top: -3px;
}

.blocks {
    margin: 0 10px 0 10px;
    text-transform: none;
    width: 168px;
}

#showTooltip {
    display: table;
    padding-top: 40px;
    margin: 0 auto;
}

#focus {
    border: 1px solid #ff4081;
    text-align: center;
    height: 31px;
    width: 168px;
}

/* csslint ignore:start */

::placeholder {
    color: #ff4081;
}

/* csslint ignore:end */
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Syncfusion React Tooltip</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="description" content="Essential JS 2 for React Components" />
    <meta name="author" content="Syncfusion" />
    <link href="https://cdn.syncfusion.com/ej2/29.2.4/ej2-base/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.2.4/ej2-react-popups/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.2.4/ej2-react-buttons/styles/material.css" rel="stylesheet" />
    <link href="https://cdn.syncfusion.com/ej2/29.2.4/ej2-inputs/styles/material.css" rel="stylesheet" />
    <link href="index.css" rel="stylesheet" />
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.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='sample'>
        <div id='loader'>Loading....</div>
    </div>
</body>

</html>