UNPKG

@progress/kendo-react-tooltip

Version:

React Tooltips library represents popups with information that is related to a UI element. KendoReact Tooltips package

572 lines (546 loc) 18.3 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { BaseEvent } from '@progress/kendo-react-common'; import { CollisionType } from '@progress/kendo-react-popup'; import { default as default_2 } from 'prop-types'; import { JSX as JSX_2 } from 'react/jsx-runtime'; import { Margin } from '@progress/kendo-react-popup'; import { Offset } from '@progress/kendo-react-popup'; import { PopupAnimation } from '@progress/kendo-react-popup'; import { PositionMode } from '@progress/kendo-react-popup'; import * as React_2 from 'react'; import { ZIndexContext } from '@progress/kendo-react-common'; import { ZIndexContextType } from '@progress/kendo-react-common'; /** * Represents the Popover component. */ export declare const Popover: React_2.ForwardRefExoticComponent<PopoverProps & React_2.RefAttributes<PopoverHandle | null>>; /** * Represents the PopoverActionsBar component. */ export declare const PopoverActionsBar: React_2.ForwardRefExoticComponent<PopoverActionsBarProps & React_2.RefAttributes<PopoverActionsBarHandle | null>>; /** * Represents the Object which is passed to the [`ref`](https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom) callback of the PopoverActionBar component. */ export declare interface PopoverActionsBarHandle { /** * The props of the PopoverActionsBar. */ props: PopoverActionsBarProps; /** * The current element or `null` if there is none. */ element: HTMLDivElement | null; } /** * Represents the props of the [KendoReact PopoverActionsBar]({% slug api_tooltip_popoveractionsbar %}) component. */ export declare interface PopoverActionsBarProps { /** * Sets the horizontal alignment of the PopoverActionsBar buttons. * * The possible values are: * * `start` * * `center` * * `end` * * `stretched` (default) */ alignment?: string; /** * Sets the orientation of the PopoverActionsBar buttons. * * The possible values are: * * `horizontal` (default) * * `vertical` */ orientation?: string; /** * @hidden */ children?: React.ReactNode; } /** * The animation settings of the Popover. */ export declare interface PopoverAnimation extends PopupAnimation { } /** * Represents the object of the `Close` Popover event. */ export declare interface PopoverCloseEvent { /** * An event target. */ target: PopoverHandle; } /** * Defines the horizontal and vertical collision behavior of the Popover. */ export declare interface PopoverCollision { /** * Defines the horizontal collision behavior of the Popover. */ horizontal: PopoverCollisionType; /** * Defines the vertical collision behavior of the Popover. */ vertical: PopoverCollisionType; } /** * Defines the possible collision behavior when the Popover is not fully visible. * * The available options are: * - `fit`&mdash;Moves the Popover horizontally until it is fully displayed in the viewport. * - `flip`&mdash;Flips the Popover position based on the origin and the position properties. * - `none`&mdash;The Popover is rendered at its original position. Usable when the Popover is focused on open and the page is scrolled to it. */ export declare type PopoverCollisionType = CollisionType; /** * Represents the Object which is passed to the [`ref`](https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom) callback of the Popover component. */ export declare interface PopoverHandle { /** * The props of the Popover. */ props: PopoverProps; } /** * Represents the object of the `KeyDown` Popover event. */ export declare interface PopoverKeyDownEvent { /** * An event target. */ target: PopoverHandle; /** * A boolean value that indicates whether the Popover is visible. */ show?: boolean; } /** * Defines the horizontal and the vertical margin offset of the component. */ export declare interface PopoverMargin extends Margin { /** * Defines the possible horizontal margin value. */ horizontal: number; /** * Defines the possible vertical margin value. */ vertical: number; } /** * The offset position of the Popover. */ export declare interface PopoverOffset extends Offset { /** * Defines the top position of the Popover. */ top: number; /** * Defines the left position of the Popover. */ left: number; } /** * Represents the object of the `Open` Popover event. */ export declare interface PopoverOpenEvent { /** * An event target. */ target: PopoverHandle; } /** * The position of the Popover. * The available options are: * - `top` * - `left` * - `bottom` * - `right` */ export declare type PopoverPosition = 'top' | 'left' | 'bottom' | 'right'; /** * Represents the object of the `Position` Popover event. */ export declare interface PopoverPositionEvent { /** * An event target. */ target: PopoverHandle; /** * Indicates if the position is fitted. */ fitted: boolean; /** * Indicates if the position is flipped. */ flipped: boolean; } /** * The type which defines all possible position modes of the Popover. */ export declare type PopoverPositionMode = PositionMode; export declare interface PopoverProps { /** * Specifies the title of the Popover component. */ title?: React.ReactNode; /** * Specifies the position of the Popover element relative to the current anchor or offset. */ position?: PopoverPosition; /** * Controls the Popover callout element. If set to `false`, the callout element will not be rendered. */ callout?: boolean; /** * Controls the Popover animation. By default, the opening and closing animations are enabled. */ animate?: boolean | PopoverAnimation; /** * Specifies the element which will be used as an anchor. The Popover opens next to that element. */ anchor?: HTMLElement | null; /** * Defines the container to which the Popover will be appended. Defaults to [`body`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body). * * If set to `null` the Popover will be rendered without React Portal. */ appendTo?: HTMLElement | null; /** * Configures the collision behavior of the Popover. By default, it's set to `none`. */ collision?: PopoverCollision; /** * Configures the margin value that will be added to the Popover dimensions * in pixels and leaves a blank space between the Popover and the anchor. * By default, it's automatically set based on the Popover position prop. * */ margin?: PopoverMargin; /** * Specifies the position mode of the component. By default, the Popover uses fixed positioning. * To make the Popover acquire absolute positioning, set this option to `absolute`. * * > If you need to support mobile browsers with the zoom option, use the `absolute` positioning of the Popover. */ positionMode?: PopoverPositionMode; /** * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale). * * The document or container scale is required to compute the popover position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. * * > Using this token is not necessary for user-applied browser zoom. * */ scale?: number; /** * Specifies the absolute position of the element. * The Popover opens next to that point. The pivot point of the Popover is defined by the `position` configuration option. * The boundary detection is applied by using the window viewport. */ offset?: PopoverOffset; /** * Specifies a list of CSS classes that will be added to the internal animated element. */ popoverClass?: string | Array<string> | { [key: string]: boolean; }; /** * Specifies a list of CSS classes that will be added to the Popover element. */ className?: string | Array<string>; /** * Specifies the id that will be added to the Popover element. */ id?: string; /** * Represents the styles that are applied to the Popover. */ style?: React.CSSProperties; /** * Represents the styles that are applied to the content element of the Popover. */ contentStyle?: React.CSSProperties; /** * Controls the Popover visibility. Defaults to `false`. */ show?: boolean; /** * Fires after the Popover is opened and the opening animation ends. */ onOpen?: (event: PopoverOpenEvent) => void; /** * Fires after the Popover is closed. */ onClose?: (event: PopoverCloseEvent) => void; /** * Fires after the Popover position is set. */ onPosition?: (event: PopoverPositionEvent) => void; /** * Fires when the Popover is focused and a key is pressed. */ onKeyDown?: (event: PopoverKeyDownEvent) => void; /** * @hidden */ children?: React.ReactNode; } export declare class Tooltip extends React_2.PureComponent<TooltipProps, TooltipState> { /** * @hidden */ static propTypes: { anchorElement: default_2.Requireable<string>; content: default_2.Requireable<(...args: any[]) => any>; filter: default_2.Requireable<(...args: any[]) => any>; openDelay: default_2.Requireable<number>; position: default_2.Requireable<string>; updateInterval: default_2.Requireable<number>; showOption: default_2.Requireable<object>; }; static defaultProps: { anchorElement: string; openDelay: number; position: string; showCallout: boolean; parentTitle: boolean; }; /** * @hidden */ static contextType: React_2.Context<ZIndexContextType>; /** * @hidden */ context: React_2.ContextType<typeof ZIndexContext>; /** * @hidden */ readonly state: TooltipState; private top; private left; private openTimeoutId?; private updateIntervalId?; private willOpen; /** * @hidden */ componentDidMount(): void; /** * @hidden */ componentWillUnmount(): void; /** * @hidden */ componentDidUpdate(): void; /** * The method is used on the MouseOut event to hide the Tooltip. */ handleMouseOut: (event: any) => void; private compareTargets; private handleEscape; /** * @hidden */ handleTargetItemClick: (event: React_2.MouseEvent<HTMLDivElement, MouseEvent>) => void; private handleKeyDown; /** * Used on the `MouseOver` event to show the Tooltip. */ handleMouseOver: (event: any) => void; /** * @hidden */ render(): "" | JSX_2.Element | null; private handleBodyMousemove; private onClose; private showToolTip; private setUpdateInterval; private onIntervalUpdate; private isVisible; private position; private getTitle; private calloutClassName; private getCurrentZIndex; } export declare interface TooltipEvent extends BaseEvent<Tooltip> { } /** * @hidden */ export declare type TooltipPosition = 'right' | 'left' | 'bottom' | 'top' | 'auto'; export declare interface TooltipPositionEvent extends BaseEvent<Tooltip> { /** * The Tooltip element. Useful to get the actual `width` and `height` of rendered Tooltip. */ element: HTMLDivElement; /** * The current target element. Useful to calculate `top` and `left` position of the Tooltip element. */ targetElement: HTMLElement | null; /** * The current mouse `top` position; */ mouseTop: number; /** * The current mouse `left` position. */ mouseLeft: number; /** * The Tooltip anchor element prop. */ anchorElement?: string; /** * The Tooltip position prop. */ position?: TooltipPosition; } /** * Represents the props of the [KendoReact Tooltip component]({% slug overview_tooltip %}). */ export declare interface TooltipProps { /** * Specifies the `id` of the wrapping element of the Tooltip component. */ id?: string; /** * Sets the anchor element of the Tooltip. * * The available options are: * - (Default) `pointer`&mdash;Shows a Tooltip where the cursor is located. * - `target`&mdash;Positions the Tooltip based on the anchor element. */ anchorElement?: string; /** * Defines the container to which the Tooltip will be appended. Defaults to [`body`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body). */ appendTo?: HTMLElement | null; /** * Sets the position of the Tooltip ([see example]({% slug positioning_tooltip %})). * * The available options are: * - (Default) `auto`&mdash;Positions the Tooltip depending on the available space. * - `right`&mdash;Positions the Tooltip to the right side of the element. * - `left`&mdash;Positions the Tooltip to the left side of the element. * - `bottom`&mdash;Positions the Tooltip at the bottom of the element. * - `top`&mdash;Positions the Tooltip at the top of the element. */ position?: TooltipPosition; /** * Sets a class of the Tooltip animation container. */ className?: string; /** * Specifies when the Тooltip will be rendered. * The available options are: * - `hover`&mdash;Shows the Tooltip when the mouse hovers over the target element(Set to `true` by default). * - `click`&mdash;Shows the Tooltip when the target element is clicked(Set to `false` by default). * - `focus`&mdash;Shows the Tooltip when the target element is focused(Set to `false` by default). * - `keys`&mdash;Shows the Tooltip when the target element is focused and a specific key is pressed(Set to `false` by default). * - `none`&mdash;Doesn't show the Tooltip(Set to `false` by default). */ showOption?: TooltipShowOptions; /** * Sets the content of the Tooltip ([see example]({% slug templates_tooltip %})). */ content?: any; /** * Sets the content of the Tooltip. */ children?: any; /** * Specifies if the Tooltip will be open. * Sets the Tooltip in its controlled mode ([see example]({% slug controlledmode_tooltip %})). * Requires you to set the `targetElement` property. */ open?: boolean; /** * Sets a delay in milliseconds. */ openDelay?: number; /** * If any of the parent elements has a title, displays a Tooltip. */ parentTitle?: boolean; /** * Specifies if the Tooltip callout will be displayed. */ showCallout?: boolean; /** * When the position is set to `auto`, sets the start point of the Tooltip callout (in pixels). */ setCalloutOnPositionAuto?: any; /** * Specifies the styles which are set to the Tooltip animation container. */ style?: React.CSSProperties; /** * Sets the Tooltip target element. You have to use it with the `open` property. */ targetElement?: any; /** * Specifies the CSS class names which are set to the Tooltip DOM element. */ tooltipClassName?: string; /** * Specifies the styles which are set to the Tooltip DOM element. */ tooltipStyle?: React.CSSProperties; /** * Fires when the Tooltip is shown. */ onOpen?: (event: TooltipEvent) => void; /** * Fires when the Tooltip is hidden. */ onClose?: (event: TooltipEvent) => void; /** * Callback called when the Tooltip calculates it's position. Useful to modify the default position behavior. * Require to return the `top` and `left` position of the Tooltip. */ onPosition?: (event: TooltipPositionEvent) => { top: number; left: number; }; /** * Represents a callback function which determines if a Tooltip will be displayed ([see example]({% slug filter_elements_tooltip %})). */ filter?: (target: HTMLElement) => void; /** * The milliseconds interval on which the Tooltip will check for title change. By default the Tooltip does not track for title updates. */ updateInterval?: number; } /** * Specifies when the options of the [showTooltip](slug:api_tooltip_tooltipprops#toc-showoption) props. * - `hover`&mdash;Shows the Tooltip when the mouse hovers over the target element(Set to `true` by default). * - `click`&mdash;Shows the Tooltip when the target element is clicked(Set to `false` by default). * - `focus`&mdash;Shows the Tooltip when the target element is focused(Set to `false` by default). * - `keys`&mdash;Shows the Tooltip when the target element is focused and a specific key is pressed(Set to `false` by default). * - `none`&mdash;Doesn't show the Tooltip(Set to `false` by default). */ declare type TooltipShowOptions = { hover?: boolean; click?: boolean; focus?: boolean; keys?: string[]; none?: boolean; }; /** * @hidden */ declare interface TooltipState { targetElement: HTMLElement | null; open: boolean; title: string; } export { }