Friday, October 10, 2025
HomeLanguagesReact Suite Tooltip Container and prevent overflow

React Suite Tooltip Container and prevent overflow

React Suite is a library of React components, sensible UI design, and a friendly development experience. It is supported in all major browsers. It provides pre-built components of React which can be used easily in any web application.

In this article, we’ll learn about React Suite Tooltip Container and prevent overflow. The tooltip component allows the user to display informative text when users hover over, focus on, or tap an element. The preventOverflow prop helps in preventing floating element overflow.

Syntax:

function App() {
 <PreventOverflowContainer>
 {(getContainer) => (
   <Whisper
     preventOverflow
     container={...}
     speaker={
         <Tooltip>...</Tooltip>
     }
   >
     ...
   </Whisper>
 )}
</PreventOverflowContainer>
}

Creating React Application And Installing Module:

Step 1: Create a React application using the given command:

npm create-react-app projectname

Step 2: After creating your project, move to it using the given command:

cd projectname

Step 3: Now Install the rsuite node package using the given command:

npm install rsuite

Project Structure: Now your project structure should look like the following:

 

Example 1: Below example demonstrates the tooltip in a container with a preventOverflow prop.

Javascript




import "rsuite/dist/rsuite.min.css";
import {  Whisper, Button, Tooltip } from "rsuite";
import { useEffect, useRef } from "react";
  
function PreventOverflowContainer({ children, height = 500 }) {
  const dataContainer = useRef();
  const dataContent = useRef();
  
  const conStyles = {
    overflow: "auto",
    position: "relative",
  };
  
  const disStyles = {
    height: "400%",
    width: "230%",
    justifyContent: "center",
    alignItems: "center",
    display: "flex",
    flexWrap: "wrap",
  };
  
  useEffect(() => {
    dataContainer.current.scrollTop = 
        dataContent.current.clientHeight / 2 - 60;
    dataContainer.current.scrollLeft =
      dataContent.current.clientWidth / 2 -
      dataContainer.current.clientWidth / 2;
  }, [dataContainer, dataContent]);
  
  return (
    <div style={{ ...conStyles, height }} ref={dataContainer}>
      <div style={disStyles} ref={dataContent}>
        {children(() => dataContainer.current)}
      </div>
    </div>
  );
}
  
const speaker = (
  <Tooltip style={{ width: 120 }}>
    This is GFG Tooltip
  </Tooltip>
);
  
export default function App() {
  return (
    <div>
      <div style={{ textAlign: "center" }}>
        <h2>neveropen</h2>
        <h4 style={{ color: "green" }}>
          React Suite Tooltip Container and prevent overflow
        </h4>
      </div>
      <div style={{ padding: 20, textAlign: "center" }}>
        <div>
          <PreventOverflowContainer height={300}>
            {(getContainer) => (
              <Whisper
                preventOverflow
                trigger="click"
                controlId="control-id-container"
                container={getContainer}
                speaker={speaker}
              >
                <Button appearance="primary" color="green">
                  Click
                </Button>
              </Whisper>
            )}
          </PreventOverflowContainer>
        </div>
      </div>
    </div>
  );
}


Output: 

 

Example 2: Below example demonstrates the tooltip in a container with a preventOverflow and followCursor prop.

Javascript




import "rsuite/dist/rsuite.min.css";
import {  Whisper, Button, Tooltip } from "rsuite";
import { useEffect, useRef } from "react";
  
function PreventOverflowContainer({ children, height = 500 }) {
  const dataContainer = useRef();
  const dataContent = useRef();
  
  const conStyles = {
    overflow: "auto",
    position: "relative",
  };
  
  const disStyles = {
    height: "400%",
    width: "230%",
    justifyContent: "center",
    alignItems: "center",
    display: "flex",
    flexWrap: "wrap",
  };
  
  useEffect(() => {
    dataContainer.current.scrollTop = 
        dataContent.current.clientHeight / 2 - 60;
    dataContainer.current.scrollLeft =
      dataContent.current.clientWidth / 2 -
      dataContainer.current.clientWidth / 2;
  }, [dataContainer, dataContent]);
  
  return (
    <div style={{ ...conStyles, height }} ref={dataContainer}>
      <div style={disStyles} ref={dataContent}>
        {children(() => dataContainer.current)}
      </div>
    </div>
  );
}
  
const speaker = (
  <Tooltip style={{ width: 120 }}>
    This is GFG Tooltip
  </Tooltip>
);
  
export default function App() {
  return (
    <div>
      <div style={{ textAlign: "center" }}>
        <h2>neveropen</h2>
        <h4 style={{ color: "green" }}>
          React Suite Tooltip Container and prevent overflow
        </h4>
      </div>
      <div style={{ padding: 20, textAlign: "center" }}>
        <div>
          <PreventOverflowContainer height={300}>
            {(getContainer) => (
              <Whisper
                preventOverflow
                trigger="click"
                controlId="control-id-container"
                container={getContainer}
                speaker={speaker}
                followCursor
              >
                <Button appearance="primary" color="green">
                  Click
                </Button>
              </Whisper>
            )}
          </PreventOverflowContainer>
        </div>
      </div>
    </div>
  );
}


Output: 

 

Reference: https://rsuitejs.com/components/tooltip/#container-and-prevent-overflow

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
RELATED ARTICLES

Most Popular

Dominic
32348 POSTS0 COMMENTS
Milvus
87 POSTS0 COMMENTS
Nango Kala
6715 POSTS0 COMMENTS
Nicole Veronica
11878 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11941 POSTS0 COMMENTS
Shaida Kate Naidoo
6837 POSTS0 COMMENTS
Ted Musemwa
7097 POSTS0 COMMENTS
Thapelo Manthata
6792 POSTS0 COMMENTS
Umr Jansen
6791 POSTS0 COMMENTS