import { IBox, Color } from "../../core/types"; import { MouseEventHandler } from 'react'; import { PopoverProps } from 'react-tiny-popover'; import { ReactFocusLockProps } from './focusLockProps'; import { RenderContentProp } from '../Dropdown/types'; export interface IPopoverContext { isOpen: boolean; isDisabled: boolean; onClose: () => void; onOpen: () => void; closeOnClickInside: boolean; } export declare type Placement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end'; export interface IPopover extends Omit { children: React.ReactNode; /** * render prop - renders popover content */ render?: (props: RenderContentProp) => React.ReactNode; /** * Controls whether to unmount popover content when it is closed. */ unmountOnClose?: boolean; /** * controlled open state */ isOpen?: boolean; /** * onOpen */ onOpen?: () => void; /** * onClose */ onClose?: () => void; /** * disabled popover */ isDisabled?: boolean; /** * Event handler for when popover is opened or closed */ onChangeVisibility?: (isOpen: boolean) => void; /** * event handler for when user clicks on trigger */ onClickTrigger?: MouseEventHandler; /** * event handler for when user clicks outside of the popover */ onClickOutside?: () => void; /** * event handler for when users mouse enters trigger */ onMouseEnter?: MouseEventHandler; /** * event handler for when users mouse leaves trigger */ onMouseLeave?: MouseEventHandler; /** * event handler for when users mouse leaves content */ onMouseEnterContent?: MouseEventHandler; /** * event handler for when users mouse leaves content */ onMouseLeaveContent?: MouseEventHandler; /** * event handler for when keyboard key is pressed */ onKeyDown?: (e: React.KeyboardEvent) => void; /** * sets color for content & arrow */ contentBg?: Color; /** * @deprecated Optionally displays arrow on popover */ showArrow?: boolean; /** * @deprecated style config for content body */ contentBodyStyles?: IBox; /** * style config for content container */ contentStyles?: IBox; /** * style config for trigger element */ triggerStyles?: IBox; /** * Ref that is passed to content container */ contentRef?: React.RefObject; /** * Sets placement */ placement?: Placement; /** * The main and cross-axis offset to displace popper element from its reference element. */ offset?: [number, number]; /** * Close the popover on click inside popover content */ closeOnClickInside?: boolean; /** * Check if the popover is using search input */ withSearch?: boolean; /** * max height of the content of the Popover, specified as a raw CSS value */ contentHeight?: string; /** * sets the z-index of the content. Passes this value to containerStyles. */ zIndex?: string; focusLockProps?: ReactFocusLockProps; }