arthub-table 0.2.47 → 0.2.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -519,6 +519,21 @@ export interface DataGridCallbacks {
519
519
  };
520
520
  tooltipText: string;
521
521
  }) => void;
522
+ /**
523
+ * Cell overflow hover 回调:鼠标悬停在被截断的 cell 内容(普通文本 / Tag 标签 / 人员名称等)上时触发。
524
+ * 与 onViewerIconHover 的区别:position 是被截断"整段内容"的屏幕坐标矩形(不是 16x16 icon)。
525
+ * 业务侧可基于该 position 渲染 OverflowTooltip 组件做精确定位。
526
+ */
527
+ onCellOverflowHover?: (info: {
528
+ show: boolean;
529
+ position: {
530
+ x: number;
531
+ y: number;
532
+ width: number;
533
+ height: number;
534
+ };
535
+ tooltipText: string;
536
+ }) => void;
522
537
  /** Reminder 蓝色三角点击回调:点击单元格右上角蓝色提醒三角时触发(用于外部 ReminderPopper) */
523
538
  onReminderClick?: (info: {
524
539
  position: {
@@ -636,6 +636,22 @@ export interface DataGridOptions {
636
636
  };
637
637
  tooltipText: string;
638
638
  }) => void;
639
+ /**
640
+ * Cell overflow hover 回调:鼠标悬停在被截断的 cell 内容(普通文本 / Tag 标签 / 人员名称等)上时触发。
641
+ * 与 onViewerIconHover 区别:
642
+ * - position 是被截断的"整段内容"的屏幕坐标矩形(不是 16x16 的图标)
643
+ * - 适配业务侧 OverflowTooltip 组件做精确定位
644
+ */
645
+ onCellOverflowHover?: (info: {
646
+ show: boolean;
647
+ position: {
648
+ x: number;
649
+ y: number;
650
+ width: number;
651
+ height: number;
652
+ };
653
+ tooltipText: string;
654
+ }) => void;
639
655
  /** Reminder 蓝色三角点击回调:当用户点击单元格右上角蓝色提醒三角时触发 */
640
656
  onReminderClick?: (info: {
641
657
  position: {
@@ -1226,6 +1242,22 @@ declare class DataGrid {
1226
1242
  colIndex: number;
1227
1243
  tooltipText: string;
1228
1244
  } | null;
1245
+ onCellOverflowHover?: (info: {
1246
+ show: boolean;
1247
+ position: {
1248
+ x: number;
1249
+ y: number;
1250
+ width: number;
1251
+ height: number;
1252
+ };
1253
+ tooltipText: string;
1254
+ }) => void;
1255
+ /** 当前是否正在 hover cell overflow 区域(用于避免重复触发) */
1256
+ _cellOverflowHoverState: {
1257
+ rowIndex: number;
1258
+ colIndex: number;
1259
+ tooltipText: string;
1260
+ } | null;
1229
1261
  onReminderClick?: (info: {
1230
1262
  position: {
1231
1263
  x: number;
@@ -17,16 +17,39 @@ declare class CpPersonViewer implements CellViewer<CpPersonViewerData> {
17
17
  readonly type = "cp-person";
18
18
  private imageManager;
19
19
  private _sm;
20
+ /**
21
+ * 每个 cell 内"被截断的 CP person 名称"几何缓存。
22
+ * Key: `${rowIndex}-${colIndex}`;不主动清理,依赖 draw 重绘覆盖。
23
+ * 单例 viewer,无需考虑跨 grid 隔离。
24
+ */
25
+ private _personOverflowCache;
20
26
  private get avatarColors();
21
27
  constructor();
22
28
  /**
23
29
  * Draw CP person content in the cell
24
30
  */
25
31
  draw(context: ViewerRenderContext, data: CpPersonViewerData): void;
32
+ /**
33
+ * 构造整段 tooltip 文本(所有 CP 用户的 nickName,逗号空格拼接,回退到 id)
34
+ */
35
+ private buildAllPersonsTooltipText;
26
36
  /**
27
37
  * Draw persons list (with background tag style, aligned with PersonViewer showNameBackground mode)
28
38
  */
29
39
  private drawPersons;
40
+ /**
41
+ * 鼠标 hover 时检测当前 cell 是否有被截断 / 折叠的 CP person 需要显示完整文本 tooltip。
42
+ * 命中任意 tag 矩形或 +N 圆形区域,若 fullText 非空则显示。
43
+ */
44
+ getTooltip(context: ViewerRenderContext, _data: CpPersonViewerData, localX: number, localY: number): {
45
+ text: string;
46
+ bounds: {
47
+ x: number;
48
+ y: number;
49
+ width: number;
50
+ height: number;
51
+ };
52
+ } | null;
30
53
  /**
31
54
  * Draw person avatar (circle shape, using default avatar image)
32
55
  */
@@ -9,6 +9,12 @@ import type { CellViewer, ViewerRenderContext, DropdownViewerData } from './type
9
9
  */
10
10
  declare class DropdownViewer implements CellViewer<DropdownViewerData> {
11
11
  readonly type = "select";
12
+ /**
13
+ * 多选 tag 几何与"是否截断"缓存(仅 drawMultipleTags 分支写入)。
14
+ * Key: `${rowIndex}-${colIndex}`;不主动清理,依赖 draw 重绘覆盖。
15
+ * 单例 viewer,无需考虑跨 grid 隔离。
16
+ */
17
+ private _tagOverflowCache;
12
18
  /**
13
19
  * Draw select content in the cell
14
20
  */
@@ -35,6 +41,7 @@ declare class DropdownViewer implements CellViewer<DropdownViewerData> {
35
41
  private calculateTagWidth;
36
42
  /**
37
43
  * Draw a tag/badge
44
+ * @returns 实际绘制的 tag 宽度和是否被截断
38
45
  */
39
46
  private drawTag;
40
47
  /**
@@ -53,5 +60,20 @@ declare class DropdownViewer implements CellViewer<DropdownViewerData> {
53
60
  * Truncate text with ellipsis
54
61
  */
55
62
  private truncateText;
63
+ /**
64
+ * 鼠标 hover 时检测当前 cell 是否有需要显示的 tooltip。
65
+ * 命中场景:
66
+ * - 多选模式(drawMultipleTags):某个 tag 被截断 或 鼠标位于 "+N" 区域(显示全量 options 列表)
67
+ * - 单选模式(drawSingleOption):option label 被截断
68
+ */
69
+ getTooltip(context: ViewerRenderContext, _data: DropdownViewerData, localX: number, localY: number): {
70
+ text: string;
71
+ bounds: {
72
+ x: number;
73
+ y: number;
74
+ width: number;
75
+ height: number;
76
+ };
77
+ } | null;
56
78
  }
57
79
  export default DropdownViewer;
@@ -1,21 +1,27 @@
1
1
  /**
2
2
  * ModuleViewer - Module tag rendering viewer
3
3
  * Displays module information as colored tags in table cells
4
- * Supports single and multiple modules with overflow handling
4
+ * tag 渲染采用与 TextViewer.drawMultiTags 一致的策略:
5
+ * - 固定 tag 视觉规格(高度 24、圆角 4、textPadding 8、tagGap 4)
6
+ * - 单 tag 宽度上限 = 文本理想宽度(一般情况下)
7
+ * - 总宽度超过 cell 时,等比缩小所有 tag;缩到 minTagWidth=40 仍放不下则减少可见 tag 数
8
+ * - tag 框完整不被切半,超出框宽的文字使用 ellipsis 截断
9
+ * - tag 背景色取自 mod.color
10
+ * - hover 任一 tag 且存在"被截断或被隐藏"的 tag → 弹整 cell 所有 module 名
5
11
  */
6
12
  import type { CellViewer, ViewerRenderContext, ModuleViewerData } from './types';
7
13
  declare class ModuleViewer implements CellViewer<ModuleViewerData> {
8
14
  readonly type = "module";
9
15
  /**
10
- * Cache of overflow indicator bounds for click detection
11
- * Key format: "rowIndex:colIndex"
12
- */
13
- private overflowBoundsMap;
14
- /**
15
- * Cache of all modules for a cell (for overflow click callback)
16
- * Key format: "rowIndex:colIndex"
16
+ * drawColoredTags 时每个 cell 内所有 tag 的几何与"是否截断"信息缓存。
17
+ * - Key: `${rowIndex}-${colIndex}`
18
+ * - Value: 数组,对应 drawColoredTags 实际绘制的 tag 序列
19
+ *
20
+ * 写入:drawColoredTags 末尾覆盖式写入
21
+ * 读取:getTooltip localX/localY 命中后查询
22
+ * 清理策略:依赖 draw 自动刷新(每次重绘同 key 覆盖),不主动清理。
17
23
  */
18
- private cellModulesMap;
24
+ private _multiTagOverflowCache;
19
25
  /**
20
26
  * Normalize value to ModuleInfo array
21
27
  * Supports: ModuleInfo[], ModuleInfo, string[], string, null/undefined/empty
@@ -26,26 +32,28 @@ declare class ModuleViewer implements CellViewer<ModuleViewerData> {
26
32
  */
27
33
  draw(context: ViewerRenderContext, data: ModuleViewerData): void;
28
34
  /**
29
- * Handle click events — detect clicks on "+N" overflow indicator
30
- */
31
- onClick(context: ViewerRenderContext, data: ModuleViewerData, localX: number, localY: number): boolean;
32
- /**
33
- * Draw colored module tags.
35
+ * 绘制彩色 module tag。
34
36
  *
35
- * 渲染规则(参考图片型实现):
36
- * - 在单元格水平可绘制范围 [x+CELL_PADDING, x+width-CELL_PADDING] 内做矩形 clip 裁剪
37
- * - 标签按顺序逐个绘制,能完整放下的完整画
38
- * - 第一个放不下的标签:仍然绘制(背景 + 文字),由 clip 自动裁掉超出的部分;之后停止绘制
39
- * - 不再使用 "..." 省略号,也不再展示 "+N" 概览
40
- * - 极窄场景(剩余空间 1px 也要画,由 clip 处理截断)
37
+ * 渲染规则(与 TextViewer.drawMultiTags 一致,颜色取自 mod.color):
38
+ * 1. 计算每个 tag 的理想宽度 = textWidth + textPadding * 2
39
+ * 2. 总理想宽度 ≤ 可用宽度 → 各 tag 用理想宽度(每个 tag 独立宽度)
40
+ * 3. 总理想宽度 > 可用宽度 等比缩小,minTagWidth=40 兜底
41
+ * 4. 缩到 minTagWidth 仍放不下 减少可见 tag 数量
42
+ * 5. 每个 tag 内部文本超过 (tagWidth - textPadding * 2) ellipsis
41
43
  *
42
- * 注意:因为不再有 "+N" 点击区域,overflowBoundsMap 总是清空
44
+ * +N 模式的差异:不画 "+N"、tag 框永远完整、文字用 ellipsis 截断。
43
45
  */
44
46
  private drawColoredTags;
45
47
  /**
46
48
  * Draw plain text mode (comma-separated module names)
49
+ * showColor=false 时使用,保持原有逻辑不变。
47
50
  */
48
51
  private drawPlainText;
52
+ /**
53
+ * Truncate text with ellipsis if it exceeds max width
54
+ * 与 TextViewer.truncateText 完全一致
55
+ */
56
+ private truncateText;
49
57
  /**
50
58
  * Draw a rounded rectangle
51
59
  */
@@ -54,5 +62,24 @@ declare class ModuleViewer implements CellViewer<ModuleViewerData> {
54
62
  * Draw placeholder for empty state
55
63
  */
56
64
  private drawPlaceholder;
65
+ /**
66
+ * 鼠标 hover 时检测当前 cell 是否有"被截断或被隐藏"的 module tag 需要显示完整文本 tooltip。
67
+ *
68
+ * 命中规则:
69
+ * - 从 _multiTagOverflowCache 命中具体 tag → 若 fullText 非空则返回 { text, bounds }
70
+ * - 命中 tag 但 fullText 为空(即没有 overflow)→ 不显示 tooltip
71
+ * - 未命中任何 tag → 不显示 tooltip
72
+ *
73
+ * 与 TextViewer.getTooltip 的 multiTags 分支完全一致。
74
+ */
75
+ getTooltip(context: ViewerRenderContext, _data: ModuleViewerData, localX: number, localY: number): {
76
+ text: string;
77
+ bounds: {
78
+ x: number;
79
+ y: number;
80
+ width: number;
81
+ height: number;
82
+ };
83
+ } | null;
57
84
  }
58
85
  export default ModuleViewer;
@@ -11,6 +11,12 @@ declare class PersonViewer implements CellViewer<PersonViewerData> {
11
11
  readonly type = "person";
12
12
  private imageManager;
13
13
  private _sm;
14
+ /**
15
+ * 每个 cell 内"被截断的 person 名称"几何缓存。
16
+ * Key: `${rowIndex}-${colIndex}`;不主动清理,依赖 draw 重绘覆盖。
17
+ * 单例 viewer,无需考虑跨 grid 隔离。
18
+ */
19
+ private _personOverflowCache;
14
20
  private get avatarColors();
15
21
  constructor();
16
22
  /**
@@ -27,6 +33,11 @@ declare class PersonViewer implements CellViewer<PersonViewerData> {
27
33
  * 对齐 DOM 表格 personViewer.ts 中 getAccountHTML 的逻辑
28
34
  */
29
35
  private getDisplayName;
36
+ /**
37
+ * 生成单元格 tooltip 用的完整人员列表文本。
38
+ * 永远使用 "chinese_and_english" 格式(英文名 (中文名)),与单元格 nameDisplayType 解耦。
39
+ */
40
+ private buildAllPersonsTooltipText;
30
41
  /**
31
42
  * Draw persons
32
43
  */
@@ -39,6 +50,7 @@ declare class PersonViewer implements CellViewer<PersonViewerData> {
39
50
  private drawPersonsFlexLayout;
40
51
  /**
41
52
  * Draw a single person with width constraint
53
+ * @param outInfo 可选输出参数:填充该 person 的命中区域几何 + 截断后完整文本,供 getTooltip 使用
42
54
  * @returns Width of the drawn person item
43
55
  */
44
56
  private drawPersonWithConstraint;
@@ -70,5 +82,18 @@ declare class PersonViewer implements CellViewer<PersonViewerData> {
70
82
  * Draw placeholder for empty state
71
83
  */
72
84
  private drawPlaceholder;
85
+ /**
86
+ * 鼠标 hover 时检测当前 cell 是否有被截断的 person 名称需要显示完整文本 tooltip。
87
+ * 命中任意 person 卡片矩形(含背景模式 / 普通模式),若 fullText 非空则显示。
88
+ */
89
+ getTooltip(context: ViewerRenderContext, _data: PersonViewerData, localX: number, localY: number): {
90
+ text: string;
91
+ bounds: {
92
+ x: number;
93
+ y: number;
94
+ width: number;
95
+ height: number;
96
+ };
97
+ } | null;
73
98
  }
74
99
  export default PersonViewer;
@@ -9,6 +9,26 @@ import type { CellViewer, ViewerRenderContext, TextViewerData } from './types';
9
9
  */
10
10
  declare class TextViewer implements CellViewer<TextViewerData> {
11
11
  readonly type = "text";
12
+ /**
13
+ * drawMultiTags 时每个 cell 内所有 tag 的几何与"是否截断"信息缓存。
14
+ * - Key: `${rowIndex}-${colIndex}`
15
+ * - Value: 数组,对应 drawMultiTags 实际绘制的 tag 序列
16
+ *
17
+ * 写入:drawMultiTags 末尾覆盖式写入
18
+ * 读取:getTooltip 用 localX/localY 命中后查询
19
+ * 清理策略:依赖 draw 自动刷新(每次重绘同 key 覆盖),不主动清理。
20
+ * 该 viewer 在 ViewerRegistry 中是单例,所以缓存是单例级的,不需考虑跨 grid 隔离。
21
+ */
22
+ private _multiTagOverflowCache;
23
+ /**
24
+ * 单文本场景(普通 draw 分支)的"上一次绘制时的渲染区域"缓存。
25
+ * - Key: `${rowIndex}-${colIndex}`
26
+ * - Value: { x, y, width, height, padding, fontSize }
27
+ *
28
+ * 写入:draw() 普通文本分支末尾写入
29
+ * 读取:getTooltip 调用时按需通过 ctx.measureText 临时判定是否溢出
30
+ */
31
+ private _textCellGeometryCache;
12
32
  /**
13
33
  * Draw text content in the cell
14
34
  */
@@ -72,5 +92,22 @@ declare class TextViewer implements CellViewer<TextViewerData> {
72
92
  * Canvas 端手动计算标签宽度和位置,实现等价的效果
73
93
  */
74
94
  private drawMultiTags;
95
+ /**
96
+ * 鼠标 hover 时检测当前 cell 是否有"被截断的内容"需要显示完整文本 tooltip。
97
+ *
98
+ * 命中规则(按优先级):
99
+ * 1) drawMultiTags 分支:从 _multiTagOverflowCache 命中具体标签 → 走新通路(bounds = tag 矩形)
100
+ * 2) 普通文本分支:使用 ctx.measureText 临时判定是否溢出 → 走新通路(bounds = cell 渲染区域)
101
+ * 3) 否则返回 null(不显示 tooltip)
102
+ */
103
+ getTooltip(context: ViewerRenderContext, data: TextViewerData, localX: number, localY: number): {
104
+ text: string;
105
+ bounds: {
106
+ x: number;
107
+ y: number;
108
+ width: number;
109
+ height: number;
110
+ };
111
+ } | null;
75
112
  }
76
113
  export default TextViewer;
@@ -23,6 +23,18 @@ declare class TextViewerWithSwitcher implements CellViewer<TextViewerWithSwitche
23
23
  private _sm;
24
24
  private arrowColoredCanvas;
25
25
  private arrowColoredColor;
26
+ /**
27
+ * 每个 cell 文本绘制几何缓存(用于 getTooltip 中判定文本溢出 → 新通路 onCellOverflowHover)。
28
+ * - Key: `${rowIndex}-${colIndex}`
29
+ * - Value: { textStartX, y, availableWidth, height, fontSize }
30
+ * - textStartX / y 是 drawText 调用时的绝对画布坐标(与 cell.x / cell.y 不同)
31
+ * - availableWidth 是 drawText 入参,等于 cell 内文字区域的可用宽度
32
+ *
33
+ * 写入:draw() 调用 drawText 之后写入
34
+ * 读取:getTooltip 命中文本区域时按需用 ctx.measureText 临时判定是否溢出
35
+ * 清理策略:依赖 draw 每次重绘自动覆盖同 key,不主动清理。
36
+ */
37
+ private _textGeometryCache;
26
38
  constructor();
27
39
  /**
28
40
  * Preload SVG icons
@@ -189,7 +201,13 @@ declare class TextViewerWithSwitcher implements CellViewer<TextViewerWithSwitche
189
201
  */
190
202
  getTooltip(context: ViewerRenderContext, data: TextViewerWithSwitcherData, localX: number, _localY: number): {
191
203
  text: string;
192
- iconCenterX: number;
204
+ iconCenterX?: number;
205
+ bounds?: {
206
+ x: number;
207
+ y: number;
208
+ width: number;
209
+ height: number;
210
+ };
193
211
  } | null;
194
212
  /**
195
213
  * 计算文字实际渲染宽度(用于精确判定文字区域的点击和光标)
@@ -49,6 +49,40 @@ declare class WfStateViewer implements CellViewer<WfStateViewerData> {
49
49
  * Tag 模式下的光标判断
50
50
  */
51
51
  private getInteractiveCursorTagMode;
52
+ /**
53
+ * 鼠标 hover 时检测当前 cell 的状态文字是否被 ellipsis 截断,是则显示完整文本 tooltip。
54
+ *
55
+ * 命中规则(与 onClick / getInteractiveCursor 命中范围对齐):
56
+ * - 空 displayName / 占位符 → 不显示
57
+ * - 角标区域 hover → 不显示(角标本身有透明度变化反馈,无文字相关信息)
58
+ * - 鼠标不在文字区域内 → 不显示
59
+ * - 文字宽度 ≤ 可用宽度(未截断)→ 不显示
60
+ * - 否则返回 { text: displayName, bounds: 文字矩形(相对 cell 左上角)}
61
+ *
62
+ * 根据 wfStateStyle 分别走 Icon / Tag 两种模式:
63
+ * - Icon 模式:可用宽度 = width - PADDING * 2 - ICON_SIZE - ICON_TEXT_GAP
64
+ * - Tag 模式:可用宽度 = actualTagWidth - TAG_PADDING * 2
65
+ */
66
+ getTooltip(context: ViewerRenderContext, data: WfStateViewerData, localX: number, localY: number): {
67
+ text: string;
68
+ bounds: {
69
+ x: number;
70
+ y: number;
71
+ width: number;
72
+ height: number;
73
+ };
74
+ } | null;
75
+ /**
76
+ * Icon 模式下的 tooltip 命中检测
77
+ */
78
+ private getTooltipIconMode;
79
+ /**
80
+ * Tag 模式下的 tooltip 命中检测
81
+ *
82
+ * 注意:Tag 模式的命中只要鼠标在色块矩形内即可(与 onClickTagMode / getInteractiveCursorTagMode 保持一致),
83
+ * 不限制 localX 必须严格在文字内,避免色块右侧留白区域不响应造成的体验割裂。
84
+ */
85
+ private getTooltipTagMode;
52
86
  /**
53
87
  * 从 value 中提取状态类型
54
88
  */
@@ -21,6 +21,26 @@ declare class WorkflowViewer implements CellViewer<WorkflowViewerData> {
21
21
  * 获取交互光标
22
22
  */
23
23
  getInteractiveCursor(context: ViewerRenderContext, data: WorkflowViewerData, localX: number, localY: number): string | null;
24
+ /**
25
+ * 鼠标 hover 时检测当前 cell 的工作流文本是否被 ellipsis 截断,是则显示完整文本 tooltip。
26
+ *
27
+ * 命中规则:
28
+ * - parseValue 为空(占位符)→ 不显示
29
+ * - 鼠标不在文本实际占用矩形内 → 不显示
30
+ * - 整段文本宽度 ≤ 可用宽度(未截断)→ 不显示
31
+ * - 否则返回 { text: 完整 names.join(', '), bounds: 文本矩形(相对 cell 左上角)}
32
+ *
33
+ * bounds 锚定到文本实际占用矩形(而非整个 cell),与 onClick / getInteractiveCursor 的命中范围保持一致。
34
+ */
35
+ getTooltip(context: ViewerRenderContext, data: WorkflowViewerData, localX: number, localY: number): {
36
+ text: string;
37
+ bounds: {
38
+ x: number;
39
+ y: number;
40
+ width: number;
41
+ height: number;
42
+ };
43
+ } | null;
24
44
  /**
25
45
  * 绘制占位符文本
26
46
  */
@@ -163,18 +163,36 @@ export interface CellViewer<T extends CellViewerData = CellViewerData> {
163
163
  */
164
164
  onDragEnd?(context: ViewerRenderContext, data: T, newValue: any, startValue?: any): void;
165
165
  /**
166
- * Optional: Get tooltip info when mouse hovers over a specific area (e.g., task icon, IOMC icon)
166
+ * Optional: Get tooltip info when mouse hovers over a specific area (e.g., task icon, IOMC icon, overflowed text)
167
167
  * @param context Render context
168
168
  * @param data Cell data
169
169
  * @param localX Mouse X position relative to cell
170
170
  * @param localY Mouse Y position relative to cell
171
171
  * @returns Tooltip info object if hovering over a tooltip area, null otherwise.
172
- * - text: the tooltip text to display
173
- * - iconCenterX: the center X position of the icon (relative to cell) for precise popup positioning
172
+ *
173
+ * 两种通路 / 两种坐标语义(择一返回,不要同时返回):
174
+ *
175
+ * 1) 旧通路(icon hover):返回 { text, iconCenterX }
176
+ * - iconCenterX:图标中心相对于 cell 左边界的 X 坐标(px)
177
+ * - Events.ts 会将其包装为 16x16 的 anchor,触发 `onViewerIconHover`
178
+ * - 适用于:TextViewerWithSwitcher 的任务图标 / IOMC 提单图标等"图标级"提示
179
+ *
180
+ * 2) 新通路(cell overflow hover):返回 { text, bounds }
181
+ * - bounds:要 hover 的"整段文字"相对于 cell 左上角的矩形(px)
182
+ * - Events.ts 会将 cell 屏幕坐标 + bounds 拼成绝对位置,触发 `onCellOverflowHover`
183
+ * - 适用于:普通文本被截断、Tag 标签 / 人员名称被裁掉等"内容溢出"提示
184
+ *
185
+ * 仅设置 bounds 走新通路;仅设置 iconCenterX 走旧通路;两者都未设置视为非法返回,将被忽略。
174
186
  */
175
187
  getTooltip?(context: ViewerRenderContext, data: T, localX: number, localY: number): {
176
188
  text: string;
177
- iconCenterX: number;
189
+ iconCenterX?: number;
190
+ bounds?: {
191
+ x: number;
192
+ y: number;
193
+ width: number;
194
+ height: number;
195
+ };
178
196
  } | null;
179
197
  /**
180
198
  * Optional: Whether to hide the default edit icon on hover
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arthub-table",
3
- "version": "0.2.47",
3
+ "version": "0.2.48",
4
4
  "description": "High-performance canvas-based table/grid component for Vue 3 with TypeScript support, featuring virtual scrolling, cell viewers, grouped rows, and nested grids.",
5
5
  "main": "dist/arthub-table.common.js",
6
6
  "module": "dist/arthub-table.umd.min.js",