OverflowScroll
A set of React components that encapsulates the logic from useOverflowScroll
for building carousel-like UI components:
OverflowScroll
OverflowScroll.Items
Sample Usage
The following example demonstrates how to use OverflowScroll
and OverflowScroll.Items
to build carousel-like UI components.
Show editable code example
Any Paragon component or export may be added to the code example.
() => {const ExampleItem = ({ className }) => (<divclassName={classNames('example-item border flex-shrink-0 text-center', className)}style={{ width: 160 }}>Item</div>);const OverflowScrollContent = () => {const { overflowRef, setOverflowRef } = useContext(OverflowScrollContext);return (<divref={setOverflowRef}className="d-flex"><OverflowScroll.Items>{items}</OverflowScroll.Items></div>);};const OverflowScrollControls = () => {const {isScrolledToStart,isScrolledToEnd,scrollToPrevious,scrollToNext,} = useContext(OverflowScrollContext);return (<div className="mb-3"><ButtononClick={scrollToPrevious}disabled={isScrolledToStart}size="sm"className="mr-2">Previous</Button><ButtononClick={scrollToNext}disabled={isScrolledToEnd}size="sm">Next</Button></div>);};const itemCount = 20;const items = useMemo(() => Array.from({ length: itemCount }).map((index) => {if (index !== itemCount - 1) {return <ExampleItem key={uuidv4()} className="mr-2" />;}// last element, no right marginreturn <ExampleItem key={uuidv4()} />;}), [itemCount]);return (<OverflowScroll ariaLabel="example overflow scroll usage"><OverflowScrollControls /><OverflowScrollContent /></OverflowScroll>);};
Theme Variables (SCSS)#
$overflow-scroll-opacity-mask-transparent: var(--pgn-overflow-scroll-opacity-mask-transparent) !default;
Props API#
OverflowScroll Props API
- ariaLabel
string
Required - children
node
Required - childQuerySelector
string
- hasInteractiveChildrenDefaultfalse
bool
- disableScrollDefaultfalse
bool
- disableOpacityMasksDefaultfalse
bool
- onScrollPrevious
func
- onScrollNext
func