import React from 'react'; import PropTypes from 'prop-types'; import { ContextValue } from '../configProvider/context'; import Tooltip, { ArrowBounding, Position, TooltipProps, Trigger, RenderContentProps } from '../tooltip/index'; import '@douyinfe/semi-foundation/lib/cjs/popover/popover.css'; import { BaseProps } from '../_base/baseComponent'; import type { ArrowProps } from './Arrow'; export type { ArrowProps }; declare interface ArrowStyle { borderColor?: string; backgroundColor?: string; borderOpacity?: string | number; } export interface PopoverProps extends BaseProps { autoAdjustOverflow?: boolean; children?: React.ReactNode; content?: TooltipProps['content']; visible?: boolean; position?: Position; motion?: boolean; margin?: TooltipProps['margin']; mouseEnterDelay?: number; mouseLeaveDelay?: number; trigger?: Trigger; contentClassName?: string | any[]; onVisibleChange?: (visible: boolean) => void; onClickOutSide?: (e: React.MouseEvent) => void; showArrow?: boolean; spacing?: number | { x: number; y: number; }; stopPropagation?: boolean | string; arrowStyle?: ArrowStyle; arrowBounding?: ArrowBounding; arrowPointAtCenter?: boolean; prefixCls?: string; rePosKey?: string | number; getPopupContainer?: () => HTMLElement; zIndex?: number; closeOnEsc?: TooltipProps['closeOnEsc']; guardFocus?: TooltipProps['guardFocus']; returnFocusOnClose?: TooltipProps['returnFocusOnClose']; onEscKeyDown?: TooltipProps['onEscKeyDown']; clickToHide?: TooltipProps['clickToHide']; disableFocusListener?: boolean; afterClose?: () => void; keepDOM?: boolean; /** * Whether to allow the popover to show * When set to false, the popover will not show when triggered * @default true */ condition?: boolean; } export interface PopoverState { popConfirmVisible: boolean; } declare class Popover extends React.PureComponent { static contextType: React.Context; static propTypes: { children: PropTypes.Requireable; content: PropTypes.Requireable any)>>; visible: PropTypes.Requireable; autoAdjustOverflow: PropTypes.Requireable; motion: PropTypes.Requireable; position: PropTypes.Requireable<"left" | "top" | "right" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">; margin: PropTypes.Requireable>; mouseEnterDelay: PropTypes.Requireable; mouseLeaveDelay: PropTypes.Requireable; trigger: PropTypes.Validator>; contentClassName: PropTypes.Requireable>; onVisibleChange: PropTypes.Requireable<(...args: any[]) => any>; onClickOutSide: PropTypes.Requireable<(...args: any[]) => any>; style: PropTypes.Requireable; spacing: PropTypes.Requireable>; zIndex: PropTypes.Requireable; showArrow: PropTypes.Requireable; arrowStyle: PropTypes.Requireable; backgroundColor: PropTypes.Requireable; borderOpacity: PropTypes.Requireable>; }>>; arrowPointAtCenter: PropTypes.Requireable; arrowBounding: PropTypes.Requireable; prefixCls: PropTypes.Requireable; guardFocus: PropTypes.Requireable; disableArrowKeyDown: PropTypes.Requireable; condition: PropTypes.Requireable; }; static __SemiComponentName__: string; static defaultProps: any; context: ContextValue; tooltipRef: React.RefObject; constructor(props: PopoverProps); /** * focus on tooltip trigger */ focusTrigger: () => void; renderPopCard: ({ initialFocusRef }: { initialFocusRef: RenderContentProps['initialFocusRef']; }) => React.JSX.Element; renderContentNode: (props: { content: TooltipProps['content']; initialFocusRef: RenderContentProps['initialFocusRef']; }) => React.ReactNode; render(): React.JSX.Element; } export default Popover;