Tooltip
A tooltip is a brief, informative message that appears when a user interacts with an element. Tooltips are usually initiated in one of two ways: through a mouse-hover gesture or through a keyboard-hover gesture.
The Tooltip component follows the
WAI-ARIA Tooltip Pattern.
Import#
import { Tooltip } from "@chakra-ui/react"
Usage#
If the children of Tooltip is a string, we wrap with in a span with
tabIndex set to 0, to ensure it meets the accessibility requirements.
Note 🚨: If the
Tooltipis wrapping a functional component, ensure that the functional component accepts arefusingforwardRef.
With an icon#
Note 🚨: If you're wrapping an icon from
react-icons, you need to also wrap the icon in aspanelement asreact-iconsicons do not useforwardRef.
With arrow#
Tooltip with focusable content#
If the children of the tooltip is a focusable element, the tooltip will show when you focus or hover on the element, and will hide when you blur or move cursor out of the element.
Disabled Tooltip#
Placement#
Using the placement prop you can adjust where your tooltip will be displayed.
More examples#
Props#
| Name | Type | Description | Default |
|---|---|---|---|
| children | requiredReactNode | The react component to use as the trigger for the tooltip | - |
| aria-label | string | The accessible, human friendly label to use for screen readers. If passed, tooltip will show the content `label` but expose only `aria-label` to assistive technologies | - |
| arrowPadding | number | The padding required to prevent the arrow from reaching the very edge of the popper. | 8 |
| arrowShadowColor | string | - | |
| arrowSize | number | - | |
| closeDelay | number | Delay (in ms) before hiding the tooltip | 0ms |
| closeOnClick | boolean | If `true`, the tooltip will hide on click | - |
| closeOnMouseDown | boolean | If `true`, the tooltip will hide while the mouse is down | - |
| colorScheme | "blue" | "cyan" | "gray" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "whiteAlpha" | "blackAlpha" | "linkedin" | "facebook" | "messenger" | "whatsapp" | "twitter" | "telegram" | Color Schemes for Tooltip are not implemented in the default theme. You can extend the theme to implement them. | - |
| defaultIsOpen | boolean | If `true`, the tooltip will be initially shown | - |
| gutter | number | The distance or margin between the reference and popper. It is used internally to create an `offset` modifier. NB: If you define `offset` prop, it'll override the gutter. | 8 |
| hasArrow | boolean | If `true`, the tooltip will show an arrow tip | - |
| isDisabled | boolean | - | |
| isOpen | boolean | If `true`, the tooltip will be shown (in controlled mode) | - |
| label | ReactNode | The label of the tooltip | - |
| modifiers | Partial<Modifier<string, any>>[] | Array of popper.js modifiers. Check the docs to see the list of possible modifiers you can pass. @see Docs https://popper.js.org/docs/v2/modifiers/ | - |
| offset | [crossAxis: number, mainAxis: number] | The main and cross-axis offset to displace popper element from its reference element. | - |
| onClose | (() => void) | Callback to run when the tooltip hides | - |
| onOpen | (() => void) | Callback to run when the tooltip shows | - |
| openDelay | number | Delay (in ms) before showing the tooltip | 0ms |
| placement | "top" | "right" | "bottom" | "left" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end" | The Popper.js placement of the tooltip | - |
| portalProps | Pick<PortalProps, "appendToParentPortal" | "containerRef"> | Props to be forwarded to the portal component | - |
| shouldWrapChildren | boolean | If `true`, the tooltip will wrap its children in a `<span/>` with `tabIndex=0` | - |
| size | string | Sizes for Tooltip are not implemented in the default theme. You can extend the theme to implement them. | - |
| variant | string | Variants for Tooltip are not implemented in the default theme. You can extend the theme to implement them. | - |