arthub-table 0.0.3
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/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +257 -0
- package/dist/arthub-table.common.js +2 -0
- package/dist/arthub-table.common.js.map +1 -0
- package/dist/arthub-table.css +1 -0
- package/dist/arthub-table.umd.js +2 -0
- package/dist/arthub-table.umd.js.map +1 -0
- package/dist/arthub-table.umd.min.js +2 -0
- package/dist/arthub-table.umd.min.js.map +1 -0
- package/dist/demo.html +1 -0
- package/dist/img/ah-icon_audio_pause.55c06fbf.svg +3 -0
- package/dist/img/ah-icon_closeshape.82e52181.svg +3 -0
- package/dist/img/icon_attachment.724d33ba.svg +3 -0
- package/dist/img/icon_default.9ef1a394.svg +5 -0
- package/dist/img/icon_edit.9966e699.svg +3 -0
- package/dist/img/icon_error_dark.2a057cdd.svg +17 -0
- package/dist/img/icon_error_light.ac6763e9.svg +17 -0
- package/dist/img/icon_failure_dark.f68723a7.svg +25 -0
- package/dist/img/icon_failure_light.489a7167.svg +25 -0
- package/dist/img/icon_folder.ea3efcce.svg +11 -0
- package/dist/img/icon_netdisc.d8bbe2e0.svg +4 -0
- package/dist/img/icon_singlearrowright.6adcd336.svg +4 -0
- package/dist/img/icon_totalNum.23a86d16.svg +3 -0
- package/dist/img/icon_transform_dark.033764ea.svg +26 -0
- package/dist/img/icon_transform_light.fa9fbcbd.svg +26 -0
- package/dist/img/img_3d.39b27128.svg +14 -0
- package/dist/img/img_aep.a898e3e7.svg +8 -0
- package/dist/img/img_ai.61f08a0a.svg +8 -0
- package/dist/img/img_audio.e4ada65c.svg +5 -0
- package/dist/img/img_enf.ad88f95d.svg +28 -0
- package/dist/img/img_excel.56663d85.svg +30 -0
- package/dist/img/img_exe.5e3fc198.svg +27 -0
- package/dist/img/img_img.ac2e0d0c.svg +8 -0
- package/dist/img/img_mcp.393ef169.svg +28 -0
- package/dist/img/img_pdf.f4da9922.svg +7 -0
- package/dist/img/img_ppt.d172780f.svg +26 -0
- package/dist/img/img_pxcook.7e9fce57.svg +18 -0
- package/dist/img/img_rarzip7z.e3b1de82.svg +28 -0
- package/dist/img/img_sketch.d49a9bd4.svg +32 -0
- package/dist/img/img_video.b6ac6198.svg +7 -0
- package/dist/img/img_word.0c1d3c88.svg +31 -0
- package/dist/img/img_x2d.6acc94f6.svg +28 -0
- package/dist/img/img_xd.cc23d09a.svg +28 -0
- package/dist/img/matrix-icon_finish.617f5d3e.svg +3 -0
- package/dist/img/matrix-icon_inprogress.3781156a.svg +3 -0
- package/dist/img/matrix-icon_supervise.edae43f0.svg +3 -0
- package/dist/types/assets/icon/iconBase64.d.ts +3 -0
- package/dist/types/components/Icon/index.d.ts +2 -0
- package/dist/types/components/clickoutside.d.ts +3 -0
- package/dist/types/core/Body.d.ts +142 -0
- package/dist/types/core/Cell.d.ts +94 -0
- package/dist/types/core/Clipboard.d.ts +16 -0
- package/dist/types/core/ColumnHeader.d.ts +24 -0
- package/dist/types/core/Context.d.ts +24 -0
- package/dist/types/core/DataGrid.d.ts +749 -0
- package/dist/types/core/EdgeScroller.d.ts +75 -0
- package/dist/types/core/Editor.d.ts +33 -0
- package/dist/types/core/Events.d.ts +25 -0
- package/dist/types/core/Footer.d.ts +37 -0
- package/dist/types/core/GifAnimationManager.d.ts +69 -0
- package/dist/types/core/GifOverlay.d.ts +33 -0
- package/dist/types/core/GroupRow.d.ts +80 -0
- package/dist/types/core/Header.d.ts +40 -0
- package/dist/types/core/History.d.ts +27 -0
- package/dist/types/core/ImageManager.d.ts +94 -0
- package/dist/types/core/NestedGrid.d.ts +177 -0
- package/dist/types/core/Paint.d.ts +101 -0
- package/dist/types/core/PerformanceMonitor.d.ts +96 -0
- package/dist/types/core/Row.d.ts +31 -0
- package/dist/types/core/RowHeader.d.ts +22 -0
- package/dist/types/core/Scroller.d.ts +33 -0
- package/dist/types/core/Selector.d.ts +9 -0
- package/dist/types/core/StyleManager.d.ts +108 -0
- package/dist/types/core/Tooltip.d.ts +28 -0
- package/dist/types/core/Validator.d.ts +26 -0
- package/dist/types/core/config.d.ts +5 -0
- package/dist/types/core/constants.d.ts +39 -0
- package/dist/types/core/element.d.ts +36 -0
- package/dist/types/core/extension-type-mapping.d.ts +5 -0
- package/dist/types/core/footer/utils.d.ts +7 -0
- package/dist/types/core/types.d.ts +399 -0
- package/dist/types/core/util.d.ts +17 -0
- package/dist/types/core/viewers/BooleanViewer.d.ts +46 -0
- package/dist/types/core/viewers/DatetimeViewer.d.ts +33 -0
- package/dist/types/core/viewers/DeliverableReviewViewer.d.ts +87 -0
- package/dist/types/core/viewers/FileStorageSpecViewer.d.ts +37 -0
- package/dist/types/core/viewers/FileViewer.d.ts +118 -0
- package/dist/types/core/viewers/GroupHeaderViewer.d.ts +73 -0
- package/dist/types/core/viewers/HyperlinkTextViewer.d.ts +80 -0
- package/dist/types/core/viewers/ImageViewer.d.ts +31 -0
- package/dist/types/core/viewers/ItfsPathViewer.d.ts +58 -0
- package/dist/types/core/viewers/ModuleViewer.d.ts +53 -0
- package/dist/types/core/viewers/NestedGridViewer.d.ts +47 -0
- package/dist/types/core/viewers/PersonViewer.d.ts +61 -0
- package/dist/types/core/viewers/PivotViewer.d.ts +43 -0
- package/dist/types/core/viewers/PriorityTextViewer.d.ts +35 -0
- package/dist/types/core/viewers/ProgressViewer.d.ts +68 -0
- package/dist/types/core/viewers/PunchTimingViewer.d.ts +42 -0
- package/dist/types/core/viewers/PunchViewer.d.ts +116 -0
- package/dist/types/core/viewers/RichTextViewer.d.ts +83 -0
- package/dist/types/core/viewers/SelectViewer.d.ts +57 -0
- package/dist/types/core/viewers/SeparatorRowViewer.d.ts +25 -0
- package/dist/types/core/viewers/StatusTextViewer.d.ts +40 -0
- package/dist/types/core/viewers/StatusViewer.d.ts +53 -0
- package/dist/types/core/viewers/TableActionButtonViewer.d.ts +77 -0
- package/dist/types/core/viewers/TaskNodeViewer.d.ts +106 -0
- package/dist/types/core/viewers/TextViewer.d.ts +37 -0
- package/dist/types/core/viewers/TextViewerWithSwitcher.d.ts +112 -0
- package/dist/types/core/viewers/ThemeViewer.d.ts +36 -0
- package/dist/types/core/viewers/TreeDropdownViewer.d.ts +55 -0
- package/dist/types/core/viewers/UpstreamViewer.d.ts +79 -0
- package/dist/types/core/viewers/ViewerRegistry.d.ts +76 -0
- package/dist/types/core/viewers/WfStateViewer.d.ts +76 -0
- package/dist/types/core/viewers/WorkflowViewer.d.ts +37 -0
- package/dist/types/core/viewers/index.d.ts +114 -0
- package/dist/types/core/viewers/types.d.ts +1097 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/testing/SnapshotManager.d.ts +55 -0
- package/dist/types/testing/TestHooks.d.ts +275 -0
- package/dist/types/testing/index.d.ts +3 -0
- package/dist/types/testing/installTestHooks.d.ts +16 -0
- package/package.json +126 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 画笔
|
|
3
|
+
*/
|
|
4
|
+
interface DrawLineOptions {
|
|
5
|
+
lineCap?: CanvasLineCap;
|
|
6
|
+
lineJoin?: CanvasLineJoin;
|
|
7
|
+
borderWidth?: number;
|
|
8
|
+
borderColor?: string;
|
|
9
|
+
fillColor?: string;
|
|
10
|
+
lineDash?: number[];
|
|
11
|
+
}
|
|
12
|
+
interface DrawTextOptions {
|
|
13
|
+
font?: string;
|
|
14
|
+
color?: string;
|
|
15
|
+
align?: CanvasTextAlign | "left" | "right";
|
|
16
|
+
baseLine?: CanvasTextBaseline;
|
|
17
|
+
bold?: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface DrawCellTextOptions extends DrawTextOptions {
|
|
20
|
+
icon?: HTMLImageElement | {
|
|
21
|
+
src: string;
|
|
22
|
+
} | null;
|
|
23
|
+
iconWidth?: number;
|
|
24
|
+
iconHeight?: number;
|
|
25
|
+
iconOffsetX?: number;
|
|
26
|
+
iconOffsetY?: number;
|
|
27
|
+
}
|
|
28
|
+
interface DrawRectOptions {
|
|
29
|
+
borderWidth?: number;
|
|
30
|
+
borderColor?: string;
|
|
31
|
+
fillColor?: string;
|
|
32
|
+
shadowOffsetX?: number;
|
|
33
|
+
shadowOffsetY?: number;
|
|
34
|
+
shadowBlur?: number;
|
|
35
|
+
shadowColor?: string;
|
|
36
|
+
}
|
|
37
|
+
interface DrawIconOptions extends DrawTextOptions {
|
|
38
|
+
}
|
|
39
|
+
interface DrawCellAffixIconOptions {
|
|
40
|
+
color?: string;
|
|
41
|
+
fillColor?: string;
|
|
42
|
+
}
|
|
43
|
+
declare class Paint {
|
|
44
|
+
ctx: CanvasRenderingContext2D;
|
|
45
|
+
constructor(target: HTMLCanvasElement);
|
|
46
|
+
scaleCanvas(dpr: number): void;
|
|
47
|
+
drawLine(points: number[][], options?: DrawLineOptions): void;
|
|
48
|
+
/**
|
|
49
|
+
* 在指定位置渲染文本
|
|
50
|
+
* @param text 渲染的文本
|
|
51
|
+
* @param x 渲染的x轴位置
|
|
52
|
+
* @param y 渲染的y轴位置
|
|
53
|
+
* @param options 配置选项
|
|
54
|
+
*/
|
|
55
|
+
drawText(text: string | number, x: number, y: number, options?: DrawTextOptions): void;
|
|
56
|
+
/**
|
|
57
|
+
* 在指定宽高的盒子里渲染文本,会结合文本的长度和盒子的宽来决定对齐方式
|
|
58
|
+
* @param text 渲染的文本
|
|
59
|
+
* @param x 渲染的初始x轴位置
|
|
60
|
+
* @param y 渲染的初始y轴位置
|
|
61
|
+
* @param width 盒子的宽
|
|
62
|
+
* @param height 盒子的高
|
|
63
|
+
* @param padding 左右边距
|
|
64
|
+
* @param options color, font, align...
|
|
65
|
+
*/
|
|
66
|
+
drawCellText(text: string | number, x: number, y: number, width: number, height: number, padding: number, options?: DrawCellTextOptions): void;
|
|
67
|
+
drawCellAffixIcon(icon: string, x: number, y: number, width: number, height: number, options?: DrawCellAffixIconOptions): void;
|
|
68
|
+
/**
|
|
69
|
+
* 在文本前指定距离的位置渲染一个图标
|
|
70
|
+
* @param label 支持字符串图标或者实体字符
|
|
71
|
+
* @param text 指定文本
|
|
72
|
+
* @param x x坐标
|
|
73
|
+
* @param y y坐标
|
|
74
|
+
* @param width 宽度
|
|
75
|
+
* @param padding 边距
|
|
76
|
+
* @param offsetX 横坐标位移
|
|
77
|
+
* @param offsetY 纵坐标位移
|
|
78
|
+
* @param options 配置选项
|
|
79
|
+
*/
|
|
80
|
+
drawIcon(label: string, text: string | number, x: number, y: number, width: number, padding: number, offsetX: number, offsetY: number, options?: DrawIconOptions): void;
|
|
81
|
+
drawRect(x: number, y: number, width: number, height: number, options?: DrawRectOptions): void;
|
|
82
|
+
drawRoundRect(x: number, y: number, width: number, height: number, raidus: number, options?: DrawRectOptions): void;
|
|
83
|
+
drawImage(img: HTMLImageElement | HTMLCanvasElement | {
|
|
84
|
+
src: string;
|
|
85
|
+
}, x: number, y: number, width: number, height: number): void;
|
|
86
|
+
clearCanvas(x?: number, y?: number, width?: number, height?: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* 计算长文本自动换行
|
|
89
|
+
* @param text 文本
|
|
90
|
+
* @param width 单元格宽度
|
|
91
|
+
* @param padding 左右需要留出的padding
|
|
92
|
+
*/
|
|
93
|
+
getTextWrapping(text: string | number, width: number, padding: number): string[];
|
|
94
|
+
/**
|
|
95
|
+
* 测量文本宽度
|
|
96
|
+
* @param text 文本
|
|
97
|
+
* @param fontSize 字体大小
|
|
98
|
+
*/
|
|
99
|
+
measureText(text: string, fontSize?: number): number;
|
|
100
|
+
}
|
|
101
|
+
export default Paint;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PerformanceMonitor - Performance monitoring and profiling utility for canvas-table.
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - performance.mark / performance.measure wrappers
|
|
6
|
+
* - Development mode performance warnings
|
|
7
|
+
* - Frame rate monitoring
|
|
8
|
+
* - Render timing statistics
|
|
9
|
+
*/
|
|
10
|
+
/** Log level for debug output */
|
|
11
|
+
export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'verbose';
|
|
12
|
+
/** Performance monitor configuration */
|
|
13
|
+
export interface PerformanceMonitorConfig {
|
|
14
|
+
/** Enable performance monitoring (default: false) */
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
/** Log level for console output (default: 'warn') */
|
|
17
|
+
logLevel: LogLevel;
|
|
18
|
+
/** Row count threshold for performance warning (default: 5000) */
|
|
19
|
+
largeDataThreshold: number;
|
|
20
|
+
/** Column count threshold for performance warning (default: 50) */
|
|
21
|
+
largeColumnThreshold: number;
|
|
22
|
+
/** Frame time warning threshold in ms (default: 16.67 for 60fps) */
|
|
23
|
+
frameTimeThreshold: number;
|
|
24
|
+
}
|
|
25
|
+
/** Render timing entry */
|
|
26
|
+
interface TimingEntry {
|
|
27
|
+
name: string;
|
|
28
|
+
startTime: number;
|
|
29
|
+
duration: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class PerformanceMonitor {
|
|
32
|
+
private config;
|
|
33
|
+
private timings;
|
|
34
|
+
private frameCount;
|
|
35
|
+
private lastFpsTime;
|
|
36
|
+
private currentFps;
|
|
37
|
+
private markMap;
|
|
38
|
+
constructor(config?: Partial<PerformanceMonitorConfig>);
|
|
39
|
+
/**
|
|
40
|
+
* Update configuration
|
|
41
|
+
*/
|
|
42
|
+
setConfig(config: Partial<PerformanceMonitorConfig>): void;
|
|
43
|
+
/**
|
|
44
|
+
* Check if monitoring is enabled
|
|
45
|
+
*/
|
|
46
|
+
get isEnabled(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Set debug/enabled state
|
|
49
|
+
*/
|
|
50
|
+
setEnabled(enabled: boolean): void;
|
|
51
|
+
/**
|
|
52
|
+
* Place a performance mark
|
|
53
|
+
*/
|
|
54
|
+
mark(name: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Measure duration between two marks
|
|
57
|
+
*/
|
|
58
|
+
measure(name: string, startMark: string, endMark?: string): number;
|
|
59
|
+
/**
|
|
60
|
+
* Call once per frame to track FPS
|
|
61
|
+
*/
|
|
62
|
+
trackFrame(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Get current FPS
|
|
65
|
+
*/
|
|
66
|
+
getFps(): number;
|
|
67
|
+
/**
|
|
68
|
+
* Check data size and emit warnings if thresholds are exceeded
|
|
69
|
+
*/
|
|
70
|
+
checkDataSize(rowCount: number, columnCount: number): void;
|
|
71
|
+
/**
|
|
72
|
+
* Warn if a render frame takes too long
|
|
73
|
+
*/
|
|
74
|
+
checkFrameTime(duration: number): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get collected timing statistics
|
|
77
|
+
*/
|
|
78
|
+
getTimings(): ReadonlyArray<TimingEntry>;
|
|
79
|
+
/**
|
|
80
|
+
* Get average duration for a named measure
|
|
81
|
+
*/
|
|
82
|
+
getAverageDuration(name: string): number;
|
|
83
|
+
/**
|
|
84
|
+
* Clear all collected timings
|
|
85
|
+
*/
|
|
86
|
+
clearTimings(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Log a message at the specified level
|
|
89
|
+
*/
|
|
90
|
+
log(level: Exclude<LogLevel, 'silent'>, message: string): void;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get or create the global PerformanceMonitor instance
|
|
94
|
+
*/
|
|
95
|
+
export declare function getPerformanceMonitor(config?: Partial<PerformanceMonitorConfig>): PerformanceMonitor;
|
|
96
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import RowHeader from "./RowHeader";
|
|
2
|
+
import Cell from "./Cell";
|
|
3
|
+
import Context from "./Context";
|
|
4
|
+
import type DataGrid from "./DataGrid";
|
|
5
|
+
interface RowData {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
8
|
+
declare class Row extends Context {
|
|
9
|
+
data: RowData;
|
|
10
|
+
rowIndex: number;
|
|
11
|
+
_rowId: string;
|
|
12
|
+
checked: boolean;
|
|
13
|
+
allCells: Cell[];
|
|
14
|
+
fixedCells: Cell[];
|
|
15
|
+
cells: Cell[];
|
|
16
|
+
rowHeader: RowHeader;
|
|
17
|
+
constructor(grid: DataGrid, rowIndex: number, x: number, y: number, height: number, data: RowData);
|
|
18
|
+
isInVerticalAutofill(mouseX: number, mouseY: number): boolean;
|
|
19
|
+
handleCheck(checked?: boolean): void;
|
|
20
|
+
mouseDown(x: number, y: number): void;
|
|
21
|
+
mouseMove(mouseX: number, mouseY: number): void;
|
|
22
|
+
handleAutofill(x: number, y: number): void;
|
|
23
|
+
handleStartAutofill(x: number, y: number): void;
|
|
24
|
+
click(x: number, y: number): void;
|
|
25
|
+
dbClick(x: number, y: number): void;
|
|
26
|
+
resizeColumn(colIndex: number, diffWidth: number): void;
|
|
27
|
+
resizeRow(rowIndex: number, height: number): void;
|
|
28
|
+
rePaint(): void;
|
|
29
|
+
draw(): void;
|
|
30
|
+
}
|
|
31
|
+
export default Row;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import Context from "./Context";
|
|
2
|
+
import type DataGrid from "./DataGrid";
|
|
3
|
+
interface RowHeaderOptions {
|
|
4
|
+
borderColor?: string;
|
|
5
|
+
fillColor?: string;
|
|
6
|
+
borderWidth?: number;
|
|
7
|
+
color?: string;
|
|
8
|
+
checked?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare class RowHeader extends Context {
|
|
11
|
+
rowIndex: number;
|
|
12
|
+
text: string | number;
|
|
13
|
+
checked: boolean;
|
|
14
|
+
borderColor?: string;
|
|
15
|
+
fillColor?: string;
|
|
16
|
+
borderWidth?: number;
|
|
17
|
+
color?: string;
|
|
18
|
+
constructor(grid: DataGrid, rowIndex: number, x: number, y: number, width: number, height: number, options?: RowHeaderOptions);
|
|
19
|
+
handleCheck(val: boolean): void;
|
|
20
|
+
draw(): void;
|
|
21
|
+
}
|
|
22
|
+
export default RowHeader;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type DataGrid from "./DataGrid";
|
|
2
|
+
interface ScrollerState {
|
|
3
|
+
x?: number;
|
|
4
|
+
y?: number;
|
|
5
|
+
move: boolean;
|
|
6
|
+
focus: boolean;
|
|
7
|
+
size: number;
|
|
8
|
+
ratio: number;
|
|
9
|
+
has: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare class Scroller {
|
|
12
|
+
grid: DataGrid;
|
|
13
|
+
horizontalScroller: ScrollerState;
|
|
14
|
+
verticalScroller: ScrollerState;
|
|
15
|
+
mouseOriginalX?: number;
|
|
16
|
+
mouseOriginalY?: number;
|
|
17
|
+
constructor(grid: DataGrid);
|
|
18
|
+
/**
|
|
19
|
+
* 初始化滚动条配置
|
|
20
|
+
*/
|
|
21
|
+
reset(): void;
|
|
22
|
+
update(diff: number, dir: "HORIZONTAL" | "VERTICAL"): void;
|
|
23
|
+
setPosition(): void;
|
|
24
|
+
isInsideHorizontalScroller(mouseX: number, mouseY: number): boolean;
|
|
25
|
+
isInsideHorizontalScrollerBar(mouseX: number, mouseY: number): boolean;
|
|
26
|
+
isInsideVerticalScroller(mouseX: number, mouseY: number): boolean;
|
|
27
|
+
isInsideVerticalScrollerBar(mouseX: number, mouseY: number): boolean;
|
|
28
|
+
mouseDown(x: number, y: number): void;
|
|
29
|
+
mouseMove(x: number, y: number): void;
|
|
30
|
+
mouseUp(): void;
|
|
31
|
+
draw(): void;
|
|
32
|
+
}
|
|
33
|
+
export default Scroller;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas 样式管理器
|
|
3
|
+
* 提供类似 CSS 的样式定义和管理方式
|
|
4
|
+
*/
|
|
5
|
+
export interface CellStyle {
|
|
6
|
+
backgroundColor?: string;
|
|
7
|
+
backgroundColorHover?: string;
|
|
8
|
+
backgroundColorActive?: string;
|
|
9
|
+
backgroundColorReadonly?: string;
|
|
10
|
+
color?: string;
|
|
11
|
+
fontSize?: number;
|
|
12
|
+
fontFamily?: string;
|
|
13
|
+
fontWeight?: string;
|
|
14
|
+
textAlign?: CanvasTextAlign;
|
|
15
|
+
textBaseline?: CanvasTextBaseline;
|
|
16
|
+
borderColor?: string;
|
|
17
|
+
borderWidth?: number;
|
|
18
|
+
borderStyle?: 'solid' | 'dashed' | 'dotted';
|
|
19
|
+
paddingTop?: number;
|
|
20
|
+
paddingRight?: number;
|
|
21
|
+
paddingBottom?: number;
|
|
22
|
+
paddingLeft?: number;
|
|
23
|
+
opacity?: number;
|
|
24
|
+
cursor?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TableTheme {
|
|
27
|
+
global?: CellStyle;
|
|
28
|
+
header?: CellStyle;
|
|
29
|
+
cell?: CellStyle;
|
|
30
|
+
readonly?: CellStyle;
|
|
31
|
+
striped?: {
|
|
32
|
+
enabled?: boolean;
|
|
33
|
+
oddColor?: string;
|
|
34
|
+
evenColor?: string;
|
|
35
|
+
};
|
|
36
|
+
hover?: {
|
|
37
|
+
enabled?: boolean;
|
|
38
|
+
backgroundColor?: string;
|
|
39
|
+
};
|
|
40
|
+
selected?: CellStyle;
|
|
41
|
+
editing?: CellStyle;
|
|
42
|
+
checked?: {
|
|
43
|
+
enabled?: boolean;
|
|
44
|
+
backgroundColor?: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 预定义主题
|
|
49
|
+
*/
|
|
50
|
+
export declare const themes: Record<string, TableTheme>;
|
|
51
|
+
/**
|
|
52
|
+
* 样式管理器类
|
|
53
|
+
*/
|
|
54
|
+
export declare class StyleManager {
|
|
55
|
+
private currentTheme;
|
|
56
|
+
private customStyles;
|
|
57
|
+
constructor(theme?: TableTheme | string);
|
|
58
|
+
/**
|
|
59
|
+
* 切换主题
|
|
60
|
+
*/
|
|
61
|
+
setTheme(theme: TableTheme | string): void;
|
|
62
|
+
/**
|
|
63
|
+
* 获取当前主题
|
|
64
|
+
*/
|
|
65
|
+
getTheme(): TableTheme;
|
|
66
|
+
/**
|
|
67
|
+
* 合并样式(类似 CSS 的层叠)
|
|
68
|
+
*/
|
|
69
|
+
mergeStyles(...styles: (CellStyle | undefined)[]): CellStyle;
|
|
70
|
+
/**
|
|
71
|
+
* 获取单元格样式
|
|
72
|
+
*/
|
|
73
|
+
getCellStyle(options: {
|
|
74
|
+
isHeader?: boolean;
|
|
75
|
+
isReadonly?: boolean;
|
|
76
|
+
isHover?: boolean;
|
|
77
|
+
isEditing?: boolean;
|
|
78
|
+
isStriped?: boolean;
|
|
79
|
+
isChecked?: boolean;
|
|
80
|
+
rowIndex?: number;
|
|
81
|
+
customClass?: string;
|
|
82
|
+
}): CellStyle;
|
|
83
|
+
/**
|
|
84
|
+
* 注册自定义样式类(类似 CSS class)
|
|
85
|
+
*/
|
|
86
|
+
registerStyle(className: string, style: CellStyle): void;
|
|
87
|
+
/**
|
|
88
|
+
* 批量注册样式
|
|
89
|
+
*/
|
|
90
|
+
registerStyles(styles: Record<string, CellStyle>): void;
|
|
91
|
+
/**
|
|
92
|
+
* 应用样式到 Canvas 上下文
|
|
93
|
+
*/
|
|
94
|
+
applyToContext(ctx: CanvasRenderingContext2D, style: CellStyle): void;
|
|
95
|
+
/**
|
|
96
|
+
* 解析 padding 简写(类似 CSS)
|
|
97
|
+
*/
|
|
98
|
+
parsePadding(padding: number | string): {
|
|
99
|
+
top: number;
|
|
100
|
+
right: number;
|
|
101
|
+
bottom: number;
|
|
102
|
+
left: number;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 创建默认样式管理器实例
|
|
107
|
+
*/
|
|
108
|
+
export declare const defaultStyleManager: StyleManager;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type DataGrid from "./DataGrid";
|
|
2
|
+
interface TooltipValue {
|
|
3
|
+
x?: number;
|
|
4
|
+
y?: number;
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
valid?: boolean;
|
|
8
|
+
message?: string;
|
|
9
|
+
colWidth?: number;
|
|
10
|
+
colHeight?: number;
|
|
11
|
+
fixed?: string;
|
|
12
|
+
}
|
|
13
|
+
declare class Tooltip {
|
|
14
|
+
grid: DataGrid;
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
valid: boolean;
|
|
20
|
+
message?: string;
|
|
21
|
+
colWidth?: number;
|
|
22
|
+
colHeight?: number;
|
|
23
|
+
fixed?: string;
|
|
24
|
+
constructor(grid: DataGrid, x: number, y: number, message?: string, _type?: string);
|
|
25
|
+
update(value: TooltipValue): void;
|
|
26
|
+
draw(): void;
|
|
27
|
+
}
|
|
28
|
+
export default Tooltip;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ColumnConfig, ColumnType } from "./types";
|
|
2
|
+
import type { ViewerOption } from "./viewers/types";
|
|
3
|
+
interface ValidationResult {
|
|
4
|
+
flag: boolean;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
type ValidatorFunction = (value: any, row: any, callback: (res: string | boolean) => void) => void | Promise<void>;
|
|
8
|
+
declare class Validator {
|
|
9
|
+
validateKey: string;
|
|
10
|
+
validateTitle: string;
|
|
11
|
+
columnType?: ColumnType;
|
|
12
|
+
type?: 'list' | 'number' | 'date' | 'phone' | 'email';
|
|
13
|
+
options?: ViewerOption[];
|
|
14
|
+
required?: boolean;
|
|
15
|
+
validator?: RegExp | ValidatorFunction;
|
|
16
|
+
operator?: string;
|
|
17
|
+
message?: string;
|
|
18
|
+
descriptor?: any;
|
|
19
|
+
pattern?: string | RegExp;
|
|
20
|
+
min?: number;
|
|
21
|
+
max?: number;
|
|
22
|
+
immediate?: boolean;
|
|
23
|
+
constructor(column: ColumnConfig);
|
|
24
|
+
validate(v: any, row: any): Promise<ValidationResult>;
|
|
25
|
+
}
|
|
26
|
+
export default Validator;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const CSS_PREFIX = "xs-data-grid";
|
|
2
|
+
export declare const HEADER_HEIGHT = 36;
|
|
3
|
+
export declare const FOOTER_HEIGHT = 36;
|
|
4
|
+
export declare const ROW_INDEX_WIDTH = 36;
|
|
5
|
+
export declare const CHECK_BOX_WIDTH = 36;
|
|
6
|
+
export declare const CELL_HEIGHT = 36;
|
|
7
|
+
export declare const MIN_CELL_WIDTH = 100;
|
|
8
|
+
export declare const MIN_CELL_HEIGHT = 36;
|
|
9
|
+
export declare const SCROLLER_TRACK_SIZE = 16;
|
|
10
|
+
export declare const SCROLLER_SIZE = 8;
|
|
11
|
+
export declare const SCROLLER_COLOR = "#dee0e3";
|
|
12
|
+
export declare const SCROLLER_FOCUS_COLOR = "#bbbec4";
|
|
13
|
+
export declare const SELECT_BORDER_COLOR = "rgb(82,146,247)";
|
|
14
|
+
export declare const SELECT_AREA_COLOR = "rgba(82,146,247,0.1)";
|
|
15
|
+
export declare const SELECT_BG_COLOR = "rgba(82,146,247,0.1)";
|
|
16
|
+
export declare const READONLY_COLOR = "#f8f8f9";
|
|
17
|
+
export declare const READONLY_TEXT_COLOR = "#80848f";
|
|
18
|
+
export declare const ERROR_TIP_COLOR = "#ED3F14";
|
|
19
|
+
/** 空值占位符 */
|
|
20
|
+
export declare const EMPTY_VALUE = "-";
|
|
21
|
+
/** 日期显示类型 */
|
|
22
|
+
export declare enum DATE_DISPLAY_TYPE {
|
|
23
|
+
RELATIVE = "relative_date",
|
|
24
|
+
ABSOLUTE = "absolute_date"
|
|
25
|
+
}
|
|
26
|
+
export declare const SIZE_MAP: {
|
|
27
|
+
mini: number;
|
|
28
|
+
small: number;
|
|
29
|
+
medium: number;
|
|
30
|
+
large: number;
|
|
31
|
+
};
|
|
32
|
+
export declare const VALIDATOR_TYPES: string[];
|
|
33
|
+
export declare const FILE_TYPE_FIELDS: {
|
|
34
|
+
readonly AssetConvertStatusNotSupport: -3;
|
|
35
|
+
readonly AssetConvertStatusUnknown: -2;
|
|
36
|
+
readonly AssetConvertStatusFailed: -1;
|
|
37
|
+
readonly AssetConvertStatusSuccess: 0;
|
|
38
|
+
readonly AssetConvertStatusSubmit: 1;
|
|
39
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
declare class Element {
|
|
2
|
+
el: HTMLElement;
|
|
3
|
+
private dataMap;
|
|
4
|
+
constructor(tag: string | HTMLElement, className?: string);
|
|
5
|
+
data(key: string, value?: any): any;
|
|
6
|
+
on(eventNames: string, handler: (evt: Event) => void): this;
|
|
7
|
+
offset(value?: any): any;
|
|
8
|
+
scroll(v?: any): any;
|
|
9
|
+
box(): DOMRect;
|
|
10
|
+
parent(): Element;
|
|
11
|
+
children(...eles: any[]): any;
|
|
12
|
+
removeChild(el: Node): void;
|
|
13
|
+
child(arg: string | Element | Node): this;
|
|
14
|
+
contains(ele: Node): boolean;
|
|
15
|
+
className(v?: string): any;
|
|
16
|
+
addClass(name: string): this;
|
|
17
|
+
hasClass(name: string): boolean;
|
|
18
|
+
removeClass(name: string): this;
|
|
19
|
+
toggle(cls?: string): boolean;
|
|
20
|
+
toggleClass(name: string): boolean;
|
|
21
|
+
active(flag?: boolean, cls?: string): this;
|
|
22
|
+
checked(flag?: boolean): this;
|
|
23
|
+
disabled(flag?: boolean): this;
|
|
24
|
+
attr(key: string | Record<string, any>, value?: string): any;
|
|
25
|
+
removeAttr(key: string): this;
|
|
26
|
+
html(content?: string): any;
|
|
27
|
+
val(v?: any): any;
|
|
28
|
+
focus(): void;
|
|
29
|
+
cssRemoveKeys(...keys: string[]): this;
|
|
30
|
+
css(name: string | Record<string, any>, value?: string): any;
|
|
31
|
+
computedStyle(): CSSStyleDeclaration;
|
|
32
|
+
show(): this;
|
|
33
|
+
hide(): this;
|
|
34
|
+
}
|
|
35
|
+
declare const h: (tag: string | HTMLElement, className?: string) => Element;
|
|
36
|
+
export { Element, h };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export function e2t(extension: any): "image" | "versionset" | "pdf" | "exe" | "aep" | "ai" | "enf" | "mcp" | "x2d" | "xd" | "sketch" | "model" | "models" | "images" | "video" | "zipped" | "na" | "misc" | "iframeOffice" | "iframe" | "audio" | "pxcook";
|
|
2
|
+
export function typeArr(type: any): string[];
|
|
3
|
+
export function allExt(): string[];
|
|
4
|
+
export function allowUploadExt(): string[];
|
|
5
|
+
export function documentType(extension: any): "cell" | "word" | "slide";
|