Splitter

Splitter is utilized to separate and resize panels.

Usage#

import { Splitter } from 'primereact/splitter';
<Splitter>
    <Splitter.Panel />
    <Splitter.Gutter>
        <Splitter.Thumb />
    </Splitter.Gutter>
    <Splitter.Panel />
</Splitter>

Examples#

Horizontal#

Splitter requires two Splitter.Panel components as children which are displayed horizontally by default.

Panel 1
Panel 2
import { Splitter } from 'primereact/splitter';
 
export default function HorizontalDemo() {
    return (
        <div className="card ">
            <Splitter style={{ height: '300px' }}>
                <Splitter.Panel className="flex items-center justify-center"> Panel 1 </Splitter.Panel>
                <Splitter.Gutter>
                    <Splitter.Thumb />
                </Splitter.Gutter>
                <Splitter.Panel className="flex items-center justify-center"> Panel 2 </Splitter.Panel>
            </Splitter>
        </div>
    );
}

Size#

Initial dimension of a panel is percentage based and defined using the size property. In addition, minSize is provided to set a minimum value during a resize.

Panel 1
Panel 2
import { Splitter } from 'primereact/splitter';
 
export default function SizeDemo() {
    return (
        <div className="card ">
            <Splitter style={{ height: '300px' }}>
                <Splitter.Panel className="flex items-center justify-center" size={25} minSize={10}>
                    Panel 1
                </Splitter.Panel>
                <Splitter.Gutter>
                    <Splitter.Thumb />
                </Splitter.Gutter>
                <Splitter.Panel className="flex items-center justify-center" size={75}>
                    Panel 2
                </Splitter.Panel>
            </Splitter>
        </div>
    );
}

Vertical#

Splitters can be combined to create advanced layouts.

Panel 1
Panel 2
import { Splitter } from 'primereact/splitter';
 
export default function VerticalDemo() {
    return (
        <div className="card ">
            <Splitter orientation="vertical" style={{ height: '300px' }}>
                <Splitter.Panel className="flex items-center justify-center"> Panel 1 </Splitter.Panel>
                <Splitter.Gutter>
                    <Splitter.Thumb />
                </Splitter.Gutter>
                <Splitter.Panel className="flex items-center justify-center"> Panel 2 </Splitter.Panel>
            </Splitter>
        </div>
    );
}

Nested#

Splitters can be combined to create advanced layouts.

Panel 1
Panel 2
Panel 3
Panel 4
import { Splitter } from 'primereact/splitter';
 
export default function NestedDemo() {
    return (
        <div className="card ">
            <Splitter style={{ height: '300px' }}>
                <Splitter.Panel className="flex items-center justify-center" size={20} minSize={10}>
                    Panel 1
                </Splitter.Panel>
                <Splitter.Gutter>
                    <Splitter.Thumb />
                </Splitter.Gutter>
                <Splitter.Panel size={80}>
                    <Splitter orientation="vertical">
                        <Splitter.Panel className="flex items-center justify-center" size={15}>
                            Panel 2
                        </Splitter.Panel>
                        <Splitter.Gutter>
                            <Splitter.Thumb />
                        </Splitter.Gutter>
                        <Splitter.Panel size={85}>
                            <Splitter>
                                <Splitter.Panel className="flex items-center justify-center" size={20}>
                                    Panel 3
                                </Splitter.Panel>
                                <Splitter.Gutter>
                                    <Splitter.Thumb />
                                </Splitter.Gutter>
                                <Splitter.Panel className="flex items-center justify-center" size={80}>
                                    Panel 4
                                </Splitter.Panel>
                            </Splitter>
                        </Splitter.Panel>
                    </Splitter>
                </Splitter.Panel>
            </Splitter>
        </div>
    );
}

Accessibility#

Screen Reader#

Splitter bar defines separator as the role with aria-orientation set to either horizontal or vertical.

Keyboard Support#

KeyFunction
tabMoves focus through the splitter bar.
down arrowMoves a vertical splitter down.
up arrowMoves a vertical splitter up.
left arrowMoves a horizontal splitter to the left.
right arrowMoves a horizontal splitter to the right.