arthub-table 0.2.7 → 0.2.8-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.
- package/dist/arthub-table.common.js +1 -1
- package/dist/arthub-table.common.js.map +1 -1
- package/dist/arthub-table.umd.js +1 -1
- package/dist/arthub-table.umd.js.map +1 -1
- package/dist/arthub-table.umd.min.js +1 -1
- package/dist/arthub-table.umd.min.js.map +1 -1
- package/dist/types/core/DataGrid.d.ts +8 -0
- package/dist/types/core/StyleManager.d.ts +8 -0
- package/dist/types/core/viewers/BooleanViewer.d.ts +7 -0
- package/dist/types/core/viewers/CpPersonViewer.d.ts +59 -0
- package/dist/types/core/viewers/index.d.ts +3 -0
- package/dist/types/core/viewers/types.d.ts +32 -0
- package/package.json +1 -1
|
@@ -793,6 +793,8 @@ declare class DataGrid {
|
|
|
793
793
|
edgeScroller: EdgeScroller;
|
|
794
794
|
rowIdMap: Map<string, number>;
|
|
795
795
|
selectedRowIds: Set<string>;
|
|
796
|
+
selectedGroupIds: Set<string>;
|
|
797
|
+
_groupSelectedRowIds: Map<string, string[]>;
|
|
796
798
|
lastSelectedRowIndex: number;
|
|
797
799
|
/** Footer 行高度(showFooter 为 false 时返回 0) */
|
|
798
800
|
get footerHeight(): number;
|
|
@@ -2276,6 +2278,12 @@ declare class DataGrid {
|
|
|
2276
2278
|
*/
|
|
2277
2279
|
private ensureRowIds;
|
|
2278
2280
|
syncGroupCheckedState(): void;
|
|
2281
|
+
/**
|
|
2282
|
+
* 受控模式下:计算组头应有的 checked 状态,如果与当前不一致则通过回调通知外部修改。
|
|
2283
|
+
* 逻辑与 syncGroupCheckedState 的计算一致,但不直接修改 data.checked 和 selectedGroupIds,
|
|
2284
|
+
* 而是通过 onGroupCheckboxChange 回调让外部决定是否更新。
|
|
2285
|
+
*/
|
|
2286
|
+
private _notifyGroupCheckedChanges;
|
|
2279
2287
|
/**
|
|
2280
2288
|
* 折叠所有任务(受控模式下触发 onCollapseAll 回调,由外部操作 tableTaskList 后刷新)
|
|
2281
2289
|
*/
|
|
@@ -217,6 +217,14 @@ export interface ThemeTokens {
|
|
|
217
217
|
loadingColor: string;
|
|
218
218
|
/** autofill 边框色 */
|
|
219
219
|
autofillBorder: string;
|
|
220
|
+
/** Boolean checkbox 边框色(未勾选 + 可编辑) */
|
|
221
|
+
checkboxBorder: string;
|
|
222
|
+
/** Boolean checkbox 边框色(未勾选 + 只读) */
|
|
223
|
+
checkboxBorderDisabled: string;
|
|
224
|
+
/** Boolean checkbox 填充色(已勾选 + 可编辑) */
|
|
225
|
+
checkboxChecked: string;
|
|
226
|
+
/** Boolean checkbox 填充色(已勾选 + 只读) */
|
|
227
|
+
checkboxCheckedDisabled: string;
|
|
220
228
|
/** 固定列阴影 */
|
|
221
229
|
shadowFixedColumn: string;
|
|
222
230
|
/** Tooltip 阴影 */
|
|
@@ -32,6 +32,13 @@ declare class BooleanViewer implements CellViewer<BooleanViewerData> {
|
|
|
32
32
|
draw(context: ViewerRenderContext, data: BooleanViewerData): void;
|
|
33
33
|
/**
|
|
34
34
|
* Draw checkbox style
|
|
35
|
+
* Colors are sourced from theme tokens (StyleManager) so the checkbox
|
|
36
|
+
* adapts to light/dark/blue themes consistently.
|
|
37
|
+
* - checkboxChecked : filled bg (editable + checked)
|
|
38
|
+
* - checkboxCheckedDisabled: filled bg (readonly + checked)
|
|
39
|
+
* - checkboxBorder : border (editable + unchecked)
|
|
40
|
+
* - checkboxBorderDisabled : border (readonly + unchecked)
|
|
41
|
+
* `data.checkedColor` may override the editable-checked fill color.
|
|
35
42
|
*/
|
|
36
43
|
private drawCheckbox;
|
|
37
44
|
/**
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CpPersonViewer - CP Person (外包人员) rendering viewer
|
|
3
|
+
* Handles avatar and name display for CP users
|
|
4
|
+
*
|
|
5
|
+
* 与 DOM 版 cpPersonViewer.ts 对齐:
|
|
6
|
+
* - value 为 CP 用户 ID 数组(string[])或单个 string
|
|
7
|
+
* - 通过 cpUserResolver 回调将 ID 解析为显示名称(companyName/roleName/nickName)
|
|
8
|
+
* - 未解析的 ID 先显示 ID 占位,异步加载后通过 requestRedraw 刷新
|
|
9
|
+
* - 样式对齐 PersonViewer:头像 + 名称
|
|
10
|
+
*/
|
|
11
|
+
import type { CellViewer, ViewerRenderContext, CpPersonViewerData } from './types';
|
|
12
|
+
/**
|
|
13
|
+
* CpPersonViewer renders CP person information in cells
|
|
14
|
+
* Style aligned with PersonViewer (avatar + name)
|
|
15
|
+
*/
|
|
16
|
+
declare class CpPersonViewer implements CellViewer<CpPersonViewerData> {
|
|
17
|
+
readonly type = "cp-person";
|
|
18
|
+
private imageManager;
|
|
19
|
+
private _sm;
|
|
20
|
+
private get avatarColors();
|
|
21
|
+
constructor();
|
|
22
|
+
/**
|
|
23
|
+
* Draw CP person content in the cell
|
|
24
|
+
*/
|
|
25
|
+
draw(context: ViewerRenderContext, data: CpPersonViewerData): void;
|
|
26
|
+
/**
|
|
27
|
+
* Draw persons list (with background tag style, aligned with PersonViewer showNameBackground mode)
|
|
28
|
+
*/
|
|
29
|
+
private drawPersons;
|
|
30
|
+
/**
|
|
31
|
+
* Draw person avatar (circle shape, using default avatar image)
|
|
32
|
+
*/
|
|
33
|
+
private drawAvatar;
|
|
34
|
+
/**
|
|
35
|
+
* Draw fallback avatar with initial character
|
|
36
|
+
*/
|
|
37
|
+
private drawFallbackAvatar;
|
|
38
|
+
/**
|
|
39
|
+
* Get consistent color index based on person id
|
|
40
|
+
*/
|
|
41
|
+
private getColorIndex;
|
|
42
|
+
/**
|
|
43
|
+
* Get initial character from name
|
|
44
|
+
*/
|
|
45
|
+
private getInitial;
|
|
46
|
+
/**
|
|
47
|
+
* Truncate text with ellipsis to fit within maxWidth
|
|
48
|
+
*/
|
|
49
|
+
private truncateText;
|
|
50
|
+
/**
|
|
51
|
+
* Draw remaining count badge
|
|
52
|
+
*/
|
|
53
|
+
private drawRemainingCount;
|
|
54
|
+
/**
|
|
55
|
+
* Draw placeholder for empty state
|
|
56
|
+
*/
|
|
57
|
+
private drawPlaceholder;
|
|
58
|
+
}
|
|
59
|
+
export default CpPersonViewer;
|
|
@@ -41,6 +41,7 @@ export { default as ChildrenViewer } from './ChildrenViewer';
|
|
|
41
41
|
export { default as OnlyShowErrorViewer } from './OnlyShowErrorViewer';
|
|
42
42
|
export { default as PerspectiveViewer } from './PerspectiveViewer';
|
|
43
43
|
export { default as RelatedTaskViewer } from './RelatedTaskViewer';
|
|
44
|
+
export { default as CpPersonViewer } from './CpPersonViewer';
|
|
44
45
|
import TextViewer from './TextViewer';
|
|
45
46
|
import DropdownViewer from './DropdownViewer';
|
|
46
47
|
import ImageViewer from './ImageViewer';
|
|
@@ -78,6 +79,7 @@ import ChildrenViewer from './ChildrenViewer';
|
|
|
78
79
|
import OnlyShowErrorViewer from './OnlyShowErrorViewer';
|
|
79
80
|
import PerspectiveViewer from './PerspectiveViewer';
|
|
80
81
|
import RelatedTaskViewer from './RelatedTaskViewer';
|
|
82
|
+
import CpPersonViewer from './CpPersonViewer';
|
|
81
83
|
/**
|
|
82
84
|
* Register all default viewers
|
|
83
85
|
* Call this function once during application initialization
|
|
@@ -129,4 +131,5 @@ export declare const defaultViewers: {
|
|
|
129
131
|
'only-show-error': typeof OnlyShowErrorViewer;
|
|
130
132
|
perspective: typeof PerspectiveViewer;
|
|
131
133
|
'related-task': typeof RelatedTaskViewer;
|
|
134
|
+
'cp-person': typeof CpPersonViewer;
|
|
132
135
|
};
|
|
@@ -969,6 +969,7 @@ export interface ViewerTypeMap {
|
|
|
969
969
|
'itfs-path': ItfsPathViewerData;
|
|
970
970
|
'deliverable-review': DeliverableReviewViewerData;
|
|
971
971
|
'rich-text': RichTextViewerData;
|
|
972
|
+
'cp-person': CpPersonViewerData;
|
|
972
973
|
}
|
|
973
974
|
/**
|
|
974
975
|
* All supported viewer types
|
|
@@ -1383,3 +1384,34 @@ export interface RelatedTaskViewerData extends CellViewerData {
|
|
|
1383
1384
|
ids: number[];
|
|
1384
1385
|
}, data: any) => void;
|
|
1385
1386
|
}
|
|
1387
|
+
/**
|
|
1388
|
+
* CP 人员信息(由 cpUserResolver 返回)
|
|
1389
|
+
*/
|
|
1390
|
+
export interface CpPersonInfo {
|
|
1391
|
+
id: string;
|
|
1392
|
+
/** 显示名称,格式如 "公司名/基地/昵称" */
|
|
1393
|
+
showName: string;
|
|
1394
|
+
}
|
|
1395
|
+
/**
|
|
1396
|
+
* CP 人员 Viewer 数据接口
|
|
1397
|
+
* 用于展示外包人员(CP User)信息
|
|
1398
|
+
* 对齐 DOM 版 cpPersonViewer.ts 的渲染逻辑
|
|
1399
|
+
*/
|
|
1400
|
+
export interface CpPersonViewerData extends CellViewerData {
|
|
1401
|
+
/** CP 用户 ID 数组或单个 ID 字符串 */
|
|
1402
|
+
value: string[] | string | null;
|
|
1403
|
+
/** 头像大小,默认 16 */
|
|
1404
|
+
avatarSize?: number;
|
|
1405
|
+
/** 最大显示人数,默认 3 */
|
|
1406
|
+
maxDisplay?: number;
|
|
1407
|
+
/** 空值占位符,默认 '-' */
|
|
1408
|
+
placeholder?: string;
|
|
1409
|
+
/**
|
|
1410
|
+
* CP 用户解析回调
|
|
1411
|
+
* 同步返回已缓存的用户信息,对未缓存的 ID 触发异步加载后调用 requestRedraw
|
|
1412
|
+
* @param ids CP 用户 ID 数组
|
|
1413
|
+
* @param requestRedraw 重绘回调,异步加载完成后调用
|
|
1414
|
+
* @returns 已解析的用户信息数组(未解析的以 ID 作为 showName)
|
|
1415
|
+
*/
|
|
1416
|
+
cpUserResolver?: (ids: string[], requestRedraw: () => void) => CpPersonInfo[];
|
|
1417
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arthub-table",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8-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",
|