arthub-table 0.2.51 → 0.2.52-next.0

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.
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * BooleanViewer - Boolean/Checkbox rendering viewer
3
- * Handles boolean value display with checkbox, switch, or text styles
3
+ * Handles boolean value display with checkbox, switch, or text styles.
4
+ * 支持单值和数组值(多节点引用场景)。
4
5
  */
5
6
  import type { CellViewer, ViewerRenderContext, BooleanViewerData } from './types';
6
7
  /**
@@ -11,15 +12,14 @@ declare class BooleanViewer implements CellViewer<BooleanViewerData> {
11
12
  readonly type = "boolean";
12
13
  readonly hideEditIcon = true;
13
14
  /**
14
- * Handle click on boolean cell
15
- * Returns true if the click was on the checkbox/switch area
16
- * 注意:实际的值切换、乐观更新、onValueChange 回调和重绘由 Row.mouseDown 统一处理
17
- * 此方法仅做命中检测,返回 true 表示点击在交互区域内
15
+ * Handle click on boolean cell.
16
+ * 数组值场景不支持点击切换(无法确定用户点击了哪个元素),返回 false。
17
+ * 单值场景返回命中检测结果。
18
18
  */
19
19
  onClick(context: ViewerRenderContext, data: BooleanViewerData, localX: number, localY: number): boolean;
20
20
  /**
21
21
  * 鼠标悬停在 checkbox/switch 交互区域时显示指针光标
22
- * 注意:不能调用 onClick,否则会在 mousemove 时触发值变更
22
+ * 数组值场景不显示交互指针
23
23
  */
24
24
  getInteractiveCursor(context: ViewerRenderContext, data: BooleanViewerData, localX: number, localY: number): string | null;
25
25
  /**
@@ -27,7 +27,8 @@ declare class BooleanViewer implements CellViewer<BooleanViewerData> {
27
27
  */
28
28
  private hitTestArea;
29
29
  /**
30
- * Draw boolean content in the cell
30
+ * Draw boolean content in the cell.
31
+ * 数组值场景:渲染多个 checkbox/switch/text 标签并排显示。
31
32
  */
32
33
  draw(context: ViewerRenderContext, data: BooleanViewerData): void;
33
34
  /**
@@ -40,6 +41,9 @@ declare class BooleanViewer implements CellViewer<BooleanViewerData> {
40
41
  * - checkboxBorderDisabled : border (readonly + unchecked)
41
42
  * `data.checkedColor` may override the editable-checked fill color.
42
43
  */
44
+ /**
45
+ * Draw a single checkbox using toBool for string-compatible boolean detection.
46
+ */
43
47
  private drawCheckbox;
44
48
  /**
45
49
  * Draw switch style
@@ -49,6 +53,18 @@ declare class BooleanViewer implements CellViewer<BooleanViewerData> {
49
53
  * Draw text style
50
54
  */
51
55
  private drawText;
56
+ /**
57
+ * 绘制空状态(数组值全为空/无有效值时显示)
58
+ */
59
+ private drawEmpty;
60
+ /**
61
+ * 绘制多个 checkbox 标签(数组值场景),每项 16×16,间隔 4px,整组居中
62
+ */
63
+ private drawCheckboxes;
64
+ /**
65
+ * 数组值 fallback:用文本形式展示多个布尔值,以逗号分隔
66
+ */
67
+ private drawTexts;
52
68
  /**
53
69
  * Draw a filled rounded rectangle
54
70
  */
@@ -8,8 +8,8 @@ import type { CellViewer, ViewerRenderContext, CellViewerData } from './types';
8
8
  * 超链接 Viewer 数据接口
9
9
  */
10
10
  export interface HyperlinkTextViewerData extends CellViewerData {
11
- /** 值格式:[显示文本, 链接URL] 或 null */
12
- value: [string, string] | null;
11
+ /** 值格式:扁平数组 [文本1, URL1, 文本2, URL2, ...] 或 null,每两个元素为一组链接 */
12
+ value: string[] | null;
13
13
  /** 数据行 ID */
14
14
  id?: string | number;
15
15
  /** 属性 key */
@@ -45,14 +45,14 @@ declare class HyperlinkTextViewer implements CellViewer<HyperlinkTextViewerData>
45
45
  */
46
46
  getInteractiveCursor(context: ViewerRenderContext, data: HyperlinkTextViewerData, localX: number, localY: number): string | null;
47
47
  /**
48
- * 解析超链接值
49
- * 值格式为数组 [显示文本, 链接URL]
48
+ * 解析超链接值(支持扁平数组 [文本1,url1,文本2,url2,...])
49
+ * 每两个元素为一组链接,返回解析后的数组
50
50
  */
51
- private parseValue;
51
+ private parseValues;
52
52
  /**
53
- * 绘制超链接文本
53
+ * 绘制超链接文本(支持多条以逗号间隔)
54
54
  */
55
- private drawHyperLinkText;
55
+ private drawHyperLinkTexts;
56
56
  /**
57
57
  * 绘制右侧编辑按钮
58
58
  */
@@ -74,8 +74,8 @@ declare class HyperlinkTextViewer implements CellViewer<HyperlinkTextViewerData>
74
74
  */
75
75
  private drawErrorIcon;
76
76
  /**
77
- * 文本截断,超出宽度时显示省略号
77
+ * 根据点击的局部 x 坐标查找被点击的超链接索引,返回 -1 表示未命中
78
78
  */
79
- private truncateText;
79
+ private findClickedLinkIndex;
80
80
  }
81
81
  export default HyperlinkTextViewer;
@@ -12,11 +12,16 @@ declare class PriorityTextViewer implements CellViewer<PriorityTextViewerData> {
12
12
  /** 空值占位符 */
13
13
  private readonly emptyValue;
14
14
  /**
15
- * 绘制优先级标签内容
15
+ * 绘制优先级标签内容。
16
+ * 支持单值(string | number)和多节点引用场景的数组值。
16
17
  */
17
18
  draw(context: ViewerRenderContext, data: PriorityTextViewerData): void;
18
19
  /**
19
- * 绘制优先级标签
20
+ * 绘制多个优先级标签(数组值场景),标签之间间隔 gap 像素
21
+ */
22
+ private drawPriorityTags;
23
+ /**
24
+ * 绘制单个优先级标签
20
25
  */
21
26
  private drawPriorityTag;
22
27
  /**
@@ -18,6 +18,10 @@ declare class ProgressViewer implements CellViewer<ProgressViewerData> {
18
18
  * Draw progress bar in the cell
19
19
  */
20
20
  draw(context: ViewerRenderContext, data: ProgressViewerData): void;
21
+ /**
22
+ * 绘制数组数值文本(逗号间隔,不渲染进度条)
23
+ */
24
+ private drawArrayText;
21
25
  /**
22
26
  * Check if mouse is over the drag handle
23
27
  */
@@ -34,6 +38,10 @@ declare class ProgressViewer implements CellViewer<ProgressViewerData> {
34
38
  * Handle drag end - trigger onProgressChange callback for data persistence
35
39
  */
36
40
  onDragEnd(_context: ViewerRenderContext, data: ProgressViewerData, newValue: any, startValue?: any): void;
41
+ /**
42
+ * 从 data.value 中提取单值(数组长度 <= 1 时取首个元素,否则返回 NaN)
43
+ */
44
+ private getSingleValue;
37
45
  /**
38
46
  * Check if mouse is over the drag handle
39
47
  */
@@ -9,8 +9,8 @@ import type { CellViewer, ViewerRenderContext, CellViewerData } from './types';
9
9
  * 富文本 Viewer 数据接口
10
10
  */
11
11
  export interface RichTextViewerData extends CellViewerData {
12
- /** HTML 富文本内容或纯文本 */
13
- value: string | null;
12
+ /** HTML 富文本内容或纯文本,支持数组(逗号拼接) */
13
+ value: string | string[] | null;
14
14
  /** 数据行 ID */
15
15
  id?: string | number;
16
16
  /** 属性 key */
@@ -35,7 +35,7 @@ export interface RichTextViewerData extends CellViewerData {
35
35
  * 解析富文本值,去除 HTML 标签 + 解码常见 HTML 实体。
36
36
  * <img> 标签替换为 [图片],<video> 标签替换为 [视频]
37
37
  */
38
- export declare function getDisplayValue(value: string | null | undefined): string;
38
+ export declare function getDisplayValue(value: string | string[] | null | undefined): string;
39
39
  declare class RichTextViewer implements CellViewer<RichTextViewerData> {
40
40
  readonly type = "rich-text";
41
41
  private _sm;
@@ -409,7 +409,7 @@ export interface PersonInfo {
409
409
  * Progress viewer data
410
410
  */
411
411
  export interface ProgressViewerData extends CellViewerData {
412
- value: number;
412
+ value: number | number[];
413
413
  /** Minimum value (default 0) */
414
414
  min?: number;
415
415
  /** Maximum value (default 100) */
@@ -460,7 +460,8 @@ export interface DatetimeViewerData extends CellViewerData {
460
460
  * Boolean/Checkbox viewer data
461
461
  */
462
462
  export interface BooleanViewerData extends CellViewerData {
463
- value: boolean | null;
463
+ /** 布尔值,支持单值或数组(多节点引用场景);数组元素支持 boolean 或字符串 'true'/'false' */
464
+ value: (boolean | string)[] | boolean | string | null;
464
465
  /** Display style */
465
466
  displayStyle?: 'checkbox' | 'switch' | 'text';
466
467
  /** Text for true value */
@@ -800,8 +801,8 @@ export interface FileViewerData extends CellViewerData {
800
801
  * HyperLink text viewer data (超链接文本)
801
802
  */
802
803
  export interface HyperlinkTextViewerData extends CellViewerData {
803
- /** 值格式:[显示文本, 链接URL] 或 null */
804
- value: [string, string] | null;
804
+ /** 值格式:扁平数组 [文本1, URL1, 文本2, URL2, ...] 或 null,每两个元素为一组链接 */
805
+ value: string[] | null;
805
806
  /** 数据行 ID */
806
807
  id?: string | number;
807
808
  /** 属性 key */
@@ -1274,8 +1275,8 @@ export interface PunchTimingViewerData extends CellViewerData {
1274
1275
  * 用于展示优先级标签(P0-P4+),带有对应的颜色和背景色
1275
1276
  */
1276
1277
  export interface PriorityTextViewerData extends CellViewerData {
1277
- /** 优先级值,支持数字或字符串(如 0, 1, 2, '0', '1' */
1278
- value: string | number | null;
1278
+ /** 优先级值,支持数字或字符串(如 0, 1, 2, '0', '1'),或数组(多节点引用场景) */
1279
+ value: (string | number)[] | string | number | null;
1279
1280
  /** 文本对齐方式,默认 'center' */
1280
1281
  textAlign?: 'left' | 'center' | 'right';
1281
1282
  /** 标签圆角半径,默认 2 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arthub-table",
3
- "version": "0.2.51",
3
+ "version": "0.2.52-next.0",
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",