import type { PropsWithChildren } from 'react'; import type { PickClassStyleType, ReactElementType, SchemaClassName } from 'jamis-core'; import type { BaseSchemaAny } from '../../types'; export type Trigger = 'hover' | 'click' | 'focus'; export interface TooltipObject { /** * 文字提示标题 */ title?: string; /** * 文字提示内容 */ content?: string | JSX.Element | BaseSchemaAny; /** * @deprecated 请使用content替代 */ body?: string | BaseSchemaAny; /** * 浮层出现位置 */ placement?: 'top' | 'right' | 'bottom' | 'left'; /** * 主题样式 */ tooltipTheme?: 'light' | 'dark'; /** * 浮层位置相对偏移量 */ offset?: [number, number]; /** * 内容区自定义样式 */ style?: React.CSSProperties; /** * 是否可以移入浮层中, 默认true */ enterable?: boolean; /** * 是否展示浮层指向箭头 */ showArrow?: boolean; /** * 是否禁用提示 */ disabled?: boolean; /** * 浮层延迟显示时间, 单位 ms */ mouseEnterDelay?: number; /** * 浮层延迟隐藏时间, 单位 ms */ mouseLeaveDelay?: number; /** * 浮层内容可通过JSX渲染 */ children?: () => JSX.Element; /** * 挂载容器元素 */ container?: ReactElementType; /** * 浮层触发方式 */ trigger?: Trigger | Array; /** * 是否点击非内容区域关闭提示,默认为true */ rootClose?: boolean; /** * 文字提示浮层CSS类名 */ tooltipClassName?: SchemaClassName; } export interface TooltipWrapperProps extends PropsWithChildren, PickClassStyleType { tooltip?: string | TooltipObject; placement: 'top' | 'right' | 'bottom' | 'left'; container?: ReactElementType; trigger: Trigger | Array; rootClose: boolean; overlay?: any; delay: number; tooltipTheme?: string; tooltipClassName?: SchemaClassName; style?: React.CSSProperties; disabled?: boolean; /** * 显示&隐藏时触发 */ onVisibleChange?: (visible: boolean) => void; } export interface TooltipWrapperState { show?: boolean; }