UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

97 lines (96 loc) 3.15 kB
import * as React from 'react'; import type { FloatingDelayGroup, Placement } from '@floating-ui/react'; import type { PolymorphicForwardRefComponent, PortalProps } from '../../utils/index.js'; export declare const defaultTooltipDelay: React.ComponentPropsWithoutRef<typeof FloatingDelayGroup>['delay']; type TooltipOptions = { /** * Placement of the Tooltip * @default 'top' */ placement?: Placement; /** * Property for manual visibility control */ visible?: boolean; /** * Callback invoked every time the tooltip visibility changes as a result * of internal logic. Should be used alongside `visible` prop. */ onVisibleChange?: (visible: boolean) => void; /** * autoUpdate options that recalculates position * to ensure the floating element remains anchored * to its reference element, such as when scrolling * and resizing the screen. * * @see [floating-ui docs](https://floating-ui.com/docs/autoUpdate#options) */ autoUpdateOptions?: { ancestorScroll?: boolean; ancestorResize?: boolean; elementResize?: boolean; /** * Use this if you want Tooltip to follow moving trigger element */ animationFrame?: boolean; layoutShift?: boolean; }; /** * Tooltip middleware options. * * @see [floating-ui docs](https://floating-ui.com/docs/middleware) */ middleware?: { offset?: number; flip?: boolean; shift?: boolean; size?: boolean; autoPlacement?: boolean; hide?: boolean; inline?: boolean; }; /** * Sets reference point to user provided element. * @example * const [trigger, setTrigger] = React.useState(null); * ... * <Button ref={setTrigger} /> * <Tooltip content='tooltip text' reference={trigger} /> */ reference?: HTMLElement | null; /** * By default, the tooltip will be associated with the reference element * using `aria-describedby`. * * Pass "label" if you want to use `aria-labelledby` instead, or pass "none" * if you don't want any association. * * @default 'description' */ ariaStrategy?: 'description' | 'label' | 'none'; id?: string; }; type TooltipOwnProps = { /** * Content of the tooltip. */ content: React.ReactNode; /** * Element to have tooltip on. Has to be a valid JSX element and needs to forward its ref. * If not specified, the `reference` prop should be used instead. */ children?: React.ReactNode; } & PortalProps; /** * Basic tooltip component to display informative content when an element is hovered or focused. * Uses [FloatingUI](https://floating-ui.com/). * @example * <Tooltip content='tooltip text' placement='top'>Hover here</Tooltip> * @example * const [trigger, setTrigger] = React.useState(null); * ... * <Button ref={setTrigger} /> * <Tooltip content='tooltip text' reference={trigger} /> */ export declare const Tooltip: PolymorphicForwardRefComponent<"div", TooltipOwnProps & TooltipOptions>; export {};