React Suite Cascader 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 Cascader Container and Prevent Overflow.
A cascader is used for a single selection of data with a hierarchical relationship structure. The preventOverflow prop helps in positioning the cascader components in the scrolling container.
Syntax:
<PreventOverflowContainer>
{getContainer => (
<Cascader
preventOverflow
container={getContainer}
data={...}
...
/>
)}
</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 preventOverflow of Cascader Component in a container.
Javascript
import "rsuite/dist/rsuite.min.css"; import { Cascader } from "rsuite"; import { useEffect, useRef } from "react"; const customData = [ { label: "Data Structures", value: 1, children: [ { label: "Queue", value: 2, children: [ { label: "Priority Queue", value: 3, }, { label: "FIFO Queue", value: 4, }, ], }, { label: "Linked List", value: 5, children: [ { label: "Circular", value: 6, }, { label: "Double", value: 7, }, { label: "Single", value: 8, }, ], }, ], }, { label: "Algorithms", value: 1, children: [ { label: "Search", value: 2, children: [ { label: "Binary Search", value: 3, }, { label: "Linear Search", value: 4, }, ], }, { label: "Sorting", value: 5, children: [ { label: "Bubble Sort", value: 6, }, { label: "Selection Sort", value: 7, }, { label: "Insertion Sort", value: 8, }, ], }, ], }, ]; function PreventOverflowContainer( { children, height = 500 }) { const container = useRef(); const content = useRef(); const containerStyle = { overflow: 'auto', position: 'relative' }; const contentStyle = { height: '400%', width: '230%', justifyContent: 'center', alignItems: 'center', display: 'flex', flexWrap: 'wrap' }; useEffect(() => { container.current.scrollTop = content.current.clientHeight / 2 - 60; container.current.scrollLeft = content.current.clientWidth / 2 - container.current.clientWidth / 2; }, [container, content]); return ( <div style={ { ...containerStyle, height }} ref={container}> <div style={contentStyle} ref={content}> {children(() => container.current)} </div> </div> ); } export default function App() { return ( <div> <div style={ { textAlign: "center" }}> <h2>zambiatek</h2> <h4 style={ { color: "green" }}> React Suite Cascader Container and Prevent Overflow </h4> </div> <div style={ { padding: 20, textAlign: "center" }}> <div> <PreventOverflowContainer> {getContainer => ( <Cascader preventOverflow placement={'bottomStart'} style={{ width: 224 }} container={getContainer} data={customData} /> )} </PreventOverflowContainer> </div> </div> </div> ); } |
Output:
Example 2: Below is another example that demonstrates the preventOverflow of cascader component with a subtle appearance in a container.
Javascript
import "rsuite/dist/rsuite.min.css"; import { Cascader } from "rsuite"; import { useEffect, useRef } from "react"; const customData = [ { label: "Data Structures", value: 1, children: [ { label: "Queue", value: 2, children: [ { label: "Priority Queue", value: 3, }, { label: "FIFO Queue", value: 4, }, ], }, { label: "Linked List", value: 5, children: [ { label: "Circular", value: 6, }, { label: "Double", value: 7, }, { label: "Single", value: 8, }, ], }, ], }, { label: "Algorithms", value: 1, children: [ { label: "Search", value: 2, children: [ { label: "Binary Search", value: 3, }, { label: "Linear Search", value: 4, }, ], }, { label: "Sorting", value: 5, children: [ { label: "Bubble Sort", value: 6, }, { label: "Selection Sort", value: 7, }, { label: "Insertion Sort", value: 8, }, ], }, ], }, ]; function PreventOverflowContainer( { children, height = 500 }) { const container = useRef(); const content = useRef(); const containerStyle = { overflow: 'auto', position: 'relative' }; const contentStyle = { height: '400%', width: '230%', justifyContent: 'center', alignItems: 'center', display: 'flex', flexWrap: 'wrap' }; useEffect(() => { container.current.scrollTop = content.current.clientHeight / 2 - 60; container.current.scrollLeft = content.current.clientWidth / 2 - container.current.clientWidth / 2; }, [container, content]); return ( <div style={ { ...containerStyle, height }} ref={container}> <div style={contentStyle} ref={content}> {children(() => container.current)} </div> </div> ); } export default function App() { return ( <div> <div style={{ textAlign: "center" }}> <h2>zambiatek</h2> <h4 style={{ color: "green" }}> React Suite Cascader Container and Prevent Overflow </h4> </div> <div style={ { padding: 20, textAlign: "center" }}> <div> <PreventOverflowContainer> {getContainer => ( <Cascader preventOverflow appearance="subtle" style={{ width: 224 }} container={getContainer} data={customData} /> )} </PreventOverflowContainer> </div> </div> </div> ); } |
Output:
Reference: https://rsuitejs.com/components/cascader/#container-and-prevent-overflow



