Tooltip

Tooltip is a component that displays a tooltip when the user hovers over an element.

Usage#

import { Tooltip } from 'primereact/tooltip';
<Tooltip.Group>
    <Tooltip>
        <Tooltip.Trigger></Tooltip.Trigger>
        <Tooltip.Portal>
            <Tooltip.Content>
                <Tooltip.Arrow />
            </Tooltip.Content>
        </Tooltip.Portal>
    </Tooltip>
</Tooltip.Group>

Examples#

Arrow#

import { Button } from 'primereact/button';
import { Tooltip } from 'primereact/tooltip';
 
export default function ArrowDemo() {
    return (
        <div className="card flex items-center justify-center gap-6">
            <Tooltip>
                <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                    Show Tooltip
                </Tooltip.Trigger>
                <Tooltip.Portal>
                    <Tooltip.Content>
                        <p>Tooltip with arrow</p>
                        <Tooltip.Arrow />
                    </Tooltip.Content>
                </Tooltip.Portal>
            </Tooltip>
            <Tooltip>
                <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                    Show Tooltip
                </Tooltip.Trigger>
                <Tooltip.Portal>
                    <Tooltip.Content>
                        <p>Tooltip without arrow</p>
                    </Tooltip.Content>
                </Tooltip.Portal>
            </Tooltip>
        </div>
    );
}

Placement#

Use side and align to control the placement of the tooltip.

import { Button } from 'primereact/button';
import { Tooltip } from 'primereact/tooltip';
 
export default function PlacementDemo() {
    return (
        <div className="card flex flex-col items-center justify-center gap-12">
            <div className="flex items-center justify-center gap-6">
                <Tooltip side="top">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Top
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip placed to the top</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip side="bottom">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Bottom
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip placed to the bottom</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip side="right">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Right
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip placed to the right</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip side="left">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Left
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip placed to the left</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
            </div>
            <div className="flex items-center justify-center gap-6">
                <Tooltip align="start">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Start
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip aligned to the start</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip align="center">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        Center
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip aligned to the center</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip align="end">
                    <Tooltip.Trigger as={Button} severity="secondary" variant="outlined">
                        End
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>Tooltip aligned to the end</p>
                            <Tooltip.Arrow />
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
            </div>
        </div>
    );
}

Offset#

Use sideOffset and alignOffset to control the offset of the tooltip.

import { Button } from 'primereact/button';
import { Tooltip } from 'primereact/tooltip';
 
function OffsetDemo() {
    return (
        <div className="card flex items-center justify-center gap-4">
            <Tooltip sideOffset={24}>
                <Tooltip.Trigger as={Button} variant="outlined" severity="secondary">
                    Show Tooltip
                </Tooltip.Trigger>
                <Tooltip.Portal>
                    <Tooltip.Content>
                        <p>Tooltip with 24px side offset</p>
                        <Tooltip.Arrow />
                    </Tooltip.Content>
                </Tooltip.Portal>
            </Tooltip>
            <Tooltip alignOffset={24} align="end" side="bottom">
                <Tooltip.Trigger as={Button} variant="outlined" severity="secondary">
                    Show Tooltip
                </Tooltip.Trigger>
                <Tooltip.Portal>
                    <Tooltip.Content>
                        <p>Tooltip with 24px align offset</p>
                        <Tooltip.Arrow />
                    </Tooltip.Content>
                </Tooltip.Portal>
            </Tooltip>
        </div>
    );
}
 
export default OffsetDemo;

Delay#

Use showDelayDuration and hideDelayDuration to control the delay of the tooltip. For Tooltip.Group, use timeout and skipTimeout instead.

import { Button } from 'primereact/button';
import { Tooltip } from 'primereact/tooltip';
 
export default function DelayDemo() {
    return (
        <div className="card flex flex-col items-center justify-center gap-8">
            <Tooltip showDelayDuration={1000} hideDelayDuration={1000}>
                <Tooltip.Trigger as={Button} severity="secondary">
                    Show Tooltip
                </Tooltip.Trigger>
                <Tooltip.Portal>
                    <Tooltip.Content>
                        <p>This is a tooltip</p>
                    </Tooltip.Content>
                </Tooltip.Portal>
            </Tooltip>
            <Tooltip.Group as="div" className="flex items-center gap-2" timeout={1000} skipTimeout={300}>
                <Tooltip>
                    <Tooltip.Trigger as={Button} severity="secondary">
                        Item 1
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>This is a tooltip</p>
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
                <Tooltip>
                    <Tooltip.Trigger as={Button} severity="secondary">
                        Item 2
                    </Tooltip.Trigger>
                    <Tooltip.Portal>
                        <Tooltip.Content>
                            <p>This is a tooltip</p>
                        </Tooltip.Content>
                    </Tooltip.Portal>
                </Tooltip>
            </Tooltip.Group>
        </div>
    );
}

With ToggleButton#

import { ToggleButton } from 'primereact/togglebutton';
import { Tooltip } from 'primereact/tooltip';
 
const content = [
    {
        icon: 'pi pi-align-left',
        label: 'Align left',
        value: 'left'
    },
    {
        icon: 'pi pi-align-center',
        label: 'Align center',
        value: 'center'
    },
    {
        icon: 'pi pi-align-right',
        label: 'Align right',
        value: 'right'
    },
    {
        icon: 'pi pi-align-justify',
        label: 'Align justify',
        value: 'justify'
    }
];
 
export default function WithToggleButtonDemo() {
    return (
        <div className="card flex items-center justify-center">
            <Tooltip.Group>
                <ToggleButton.Group allowEmpty={false}>
                    {content.map((item) => (
                        <Tooltip key={item.value}>
                            <Tooltip.Trigger as={ToggleButton} value={item.value}>
                                <ToggleButton.Indicator>
                                    <i className={item.icon}></i>
                                </ToggleButton.Indicator>
                            </Tooltip.Trigger>
                            <Tooltip.Portal>
                                <Tooltip.Content>
                                    <p>{item.label}</p>
                                    <Tooltip.Arrow />
                                </Tooltip.Content>
                            </Tooltip.Portal>
                        </Tooltip>
                    ))}
                </ToggleButton.Group>
            </Tooltip.Group>
        </div>
    );
}