UNPKG

3.64 kBTypeScriptView Raw
1import PropTypes from 'prop-types';
2import React from 'react';
3import { OverlayChildren, OverlayProps } from './Overlay';
4export declare type OverlayTriggerType = 'hover' | 'click' | 'focus';
5export declare type OverlayDelay = number | {
6 show: number;
7 hide: number;
8};
9export declare type OverlayInjectedProps = {
10 onFocus?: (...args: any[]) => any;
11};
12export declare type OverlayTriggerRenderProps = OverlayInjectedProps & {
13 ref: React.Ref<any>;
14};
15export interface OverlayTriggerProps extends Omit<OverlayProps, 'children' | 'target'> {
16 children: React.ReactElement | ((props: OverlayTriggerRenderProps) => React.ReactNode);
17 trigger?: OverlayTriggerType | OverlayTriggerType[];
18 delay?: OverlayDelay;
19 show?: boolean;
20 defaultShow?: boolean;
21 onToggle?: (nextShow: boolean) => void;
22 flip?: boolean;
23 overlay: OverlayChildren;
24 target?: never;
25 onHide?: never;
26}
27declare function OverlayTrigger({ trigger, overlay, children, popperConfig, show: propsShow, defaultShow, onToggle, delay: propsDelay, placement, flip, ...props }: OverlayTriggerProps): JSX.Element;
28declare namespace OverlayTrigger {
29 var propTypes: {
30 children: PropTypes.Validator<((...args: any[]) => any) | PropTypes.ReactElementLike>;
31 /**
32 * Specify which action or actions trigger Overlay visibility
33 *
34 * @type {'hover' | 'click' |'focus' | Array<'hover' | 'click' |'focus'>}
35 */
36 trigger: PropTypes.Requireable<string | (string | null | undefined)[]>;
37 /**
38 * A millisecond delay amount to show and hide the Overlay once triggered
39 */
40 delay: PropTypes.Requireable<number | PropTypes.InferProps<{
41 show: PropTypes.Requireable<number>;
42 hide: PropTypes.Requireable<number>;
43 }>>;
44 /**
45 * The visibility of the Overlay. `show` is a _controlled_ prop so should be paired
46 * with `onToggle` to avoid breaking user interactions.
47 *
48 * Manually toggling `show` does **not** wait for `delay` to change the visibility.
49 *
50 * @controllable onToggle
51 */
52 show: PropTypes.Requireable<boolean>;
53 /**
54 * The initial visibility state of the Overlay.
55 */
56 defaultShow: PropTypes.Requireable<boolean>;
57 /**
58 * A callback that fires when the user triggers a change in tooltip visibility.
59 *
60 * `onToggle` is called with the desired next `show`, and generally should be passed
61 * back to the `show` prop. `onToggle` fires _after_ the configured `delay`
62 *
63 * @controllable `show`
64 */
65 onToggle: PropTypes.Requireable<(...args: any[]) => any>;
66 /**
67 The initial flip state of the Overlay.
68 */
69 flip: PropTypes.Requireable<boolean>;
70 /**
71 * An element or text to overlay next to the target.
72 */
73 overlay: PropTypes.Requireable<((...args: any[]) => any) | PropTypes.ReactElementLike>;
74 /**
75 * A Popper.js config object passed to the the underlying popper instance.
76 */
77 popperConfig: PropTypes.Requireable<object>;
78 /**
79 * @private
80 */
81 target: PropTypes.Requireable<null>;
82 /**
83 * @private
84 */
85 onHide: PropTypes.Requireable<null>;
86 /**
87 * The placement of the Overlay in relation to it's `target`.
88 */
89 placement: PropTypes.Requireable<string>;
90 };
91 var defaultProps: {
92 defaultShow: boolean;
93 trigger: string[];
94 };
95}
96export default OverlayTrigger;
97
\No newline at end of file