Skip to content

Commit fe40d64

Browse files
kiramybyxiaoluoHe
authored andcommitted
feat(theme): support tooltip.trigger and tooltip.triggerOut
1 parent b48c278 commit fe40d64

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

packages/vchart/src/component/tooltip/interface/theme.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import type { ITextAttribute } from '@visactor/vrender-core';
2-
import type { ILayoutNumber, ITooltipShapePattern, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';
2+
import type {
3+
ILayoutNumber,
4+
ITooltipShapePattern,
5+
StringOrNumber,
6+
TextAlign,
7+
TextBaseLine,
8+
MaybeArray
9+
} from '../../../typings';
310
import type { Padding } from '@visactor/vrender-components';
411
import type { ITokenKey } from '../../../theme/token/interface';
12+
import type { EventSourceType, EventType } from '../../../event/interface';
513

614
export interface ITooltipTextTheme<ColorType = string> {
715
/**
@@ -126,4 +134,24 @@ export interface ITooltipTheme<ColorType = string> {
126134
* @since 1.11.5
127135
*/
128136
align?: 'left' | 'right';
137+
/**
138+
* tooltip触发方式
139+
* hover: 鼠标悬停时显示
140+
* click: 点击时显示
141+
* none: 不显示
142+
*/
143+
trigger?:
144+
| MaybeArray<'hover' | 'click' | { eventType: EventType; source?: EventSourceType; consume?: boolean }>
145+
| 'none';
146+
/**
147+
* 隐藏tooltip的触发方式(目前仅支持和trigger一致的设置以及none)
148+
* (*会影响自定义handler)
149+
*/
150+
triggerOff?:
151+
| MaybeArray<
152+
| 'hover'
153+
| 'click'
154+
| { eventType: EventType; source?: EventSourceType; consume?: boolean; checkOutside?: boolean }
155+
>
156+
| 'none';
129157
}

packages/vchart/src/component/tooltip/tooltip-transformer.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,16 @@ export class TooltipSpecTransformer extends BaseComponentSpecTransformer<any> {
1313

1414
protected _initTheme(spec: any, chartSpec: any): { spec: any; theme: any } {
1515
const { spec: newSpec, theme } = super._initTheme(spec, chartSpec);
16+
17+
// 合并样式和配置
1618
newSpec.style = mergeSpec({}, this._theme, newSpec.style);
1719
newSpec.offset = mergeSpec({}, theme.offset, spec.offset);
1820
newSpec.transitionDuration = spec.transitionDuration ?? theme.transitionDuration;
21+
22+
// 合并交互相关配置
23+
newSpec.trigger = spec.trigger ?? theme.trigger;
24+
newSpec.triggerOff = spec.triggerOff ?? theme.triggerOff;
25+
1926
return { spec: newSpec, theme };
2027
}
2128

0 commit comments

Comments
 (0)