React Suite Popover Container and prevent overflow
Last Updated :
18 Aug, 2022
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 Popover Container and prevent overflow. The Popover Component is used to show the popup information that is triggered on any event over the parent window. The preventOverflow prop helps in positioning the popover components in the scrolling container.
Syntax:
function App() {
<PreventOverflowContainer>
{(getContainer) => (
<Whisper
preventOverflow
container={...}
speaker={...}
>
...
</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 popover in a container with a preventOverflow prop.
JavaScript
import "rsuite/dist/rsuite.min.css";
import { Popover, Whisper, Button } 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 = (
<Popover title="GeeksforGeeks" style={{ width: 200 }}>
<p>Welcome to the India's no.1 coding platform.</p>
</Popover>
);
export default function App() {
return (
<div>
<div style={{ textAlign: "center" }}>
<h2>GeeksforGeeks</h2>
<h4 style={{ color: "green" }}>
React Suite Popover 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 popover in a container with a preventOverflow and followCursor prop.
JavaScript
import "rsuite/dist/rsuite.min.css";
import { Popover, Whisper, Button } 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 = (
<Popover title="GeeksforGeeks" style={{ width: 200 }}>
<p>Welcome to the India's no.1 coding platform.</p>
</Popover>
);
export default function App() {
return (
<div>
<div style={{ textAlign: "center" }}>
<h2>GeeksforGeeks</h2>
<h4 style={{ color: "green" }}>
React Suite Popover 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/popover/#container-and-prevent-overflow
Similar Reads
React Suite Dropdown Used with Popover React Suite is a popular front-end library with a set of React components that are designed for the middle platform and back-end products. The dropdown component allows the user to provide navigation that uses a select picker if you want to select a value. The dropdown component with popover basica
3 min read
React Suite Popover Follow Cursor 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 Popover Follow Cur
3 min read
React Suite Popover Hide Arrow Indicator 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 Popover Hide Arrow
3 min read
React Suite Popover Used with Dropdown 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 popover placement.
3 min read
React Suite Popover Triggering events 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 popover placement.
3 min read
React Suite Popover 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 Popover Container
3 min read
React Suite Popover Placement A 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 popover placemen
4 min read
React Suite Popover <Whisper> Props 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 Popover Whisper Pr
4 min read
React Suite Popover Component React Suite is a popular front-end library with a set of React components that are designed for the middle platform and back-end products. Popover Component allows the user to show the popup information that is trigger on some event over the parent window. We can use the following approach in ReactJ
4 min read
React Suite Popover Props 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 Popover Props. The
4 min read