jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
94 lines (93 loc) • 2.22 kB
TypeScript
import type { PropsWithChildren } from 'react';
import type { BaseSchemaAny, ReactElementType, SchemaClassName } from 'jamis-core';
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<Trigger>;
/**
* 是否点击非内容区域关闭提示,默认为true
*/
rootClose?: boolean;
/**
* 文字提示浮层CSS类名
*/
tooltipClassName?: SchemaClassName;
}
export interface TooltipWrapperProps extends PropsWithChildren {
tooltip?: string | TooltipObject;
placement: 'top' | 'right' | 'bottom' | 'left';
container?: ReactElementType;
trigger: Trigger | Array<Trigger>;
rootClose: boolean;
overlay?: any;
delay: number;
tooltipTheme?: string;
tooltipClassName?: SchemaClassName;
style?: React.CSSProperties;
disabled?: boolean;
/**
* 显示&隐藏时触发
*/
onVisibleChange?: (visible: boolean) => void;
}
export interface TooltipWrapperState {
show?: boolean;
}