@taskctrl/canvas-grid 0.1.0 → 0.1.1
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/canvas-grid.cjs.js +1 -1
- package/dist/canvas-grid.es.js +978 -790
- package/dist/capture.d.ts +11 -1
- package/dist/dom/ColumnHeaders.d.ts +8 -2
- package/dist/layers/CellLayer.d.ts +5 -0
- package/dist/types.d.ts +33 -2
- package/package.json +1 -1
package/dist/capture.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TreeEngine } from './core/TreeEngine';
|
|
2
2
|
import { ColumnEngine } from './core/ColumnEngine';
|
|
3
3
|
import { SelectionEngine } from './core/SelectionEngine';
|
|
4
|
-
import { ColumnGroup, CaptureOptions } from './types';
|
|
4
|
+
import { ColumnGroup, CaptureOptions, HeaderOrientation } from './types';
|
|
5
5
|
import { GridLayerConfig } from './layers/GridLayer';
|
|
6
6
|
import { CellLayerConfig } from './layers/CellLayer';
|
|
7
7
|
export interface CaptureGridOptions extends CaptureOptions {
|
|
@@ -11,7 +11,17 @@ export interface CaptureGridOptions extends CaptureOptions {
|
|
|
11
11
|
columnGroups?: ColumnGroup[];
|
|
12
12
|
rowHeight: number;
|
|
13
13
|
sidebarWidth: number;
|
|
14
|
+
headerOrientation?: HeaderOrientation;
|
|
15
|
+
columnHeaderHeight?: number;
|
|
14
16
|
gridLayerConfig: GridLayerConfig;
|
|
15
17
|
cellLayerConfig: CellLayerConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Capture only rows [start, end) (end exclusive), repeating the header. Used
|
|
20
|
+
* for paginated export of tall grids that exceed the canvas size limit.
|
|
21
|
+
*/
|
|
22
|
+
rowRange?: {
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
};
|
|
16
26
|
}
|
|
17
27
|
export declare function captureGrid(options: CaptureGridOptions): HTMLCanvasElement;
|
|
@@ -6,9 +6,15 @@ export interface ColumnHeadersProps {
|
|
|
6
6
|
columnGroups?: ColumnGroup[];
|
|
7
7
|
scrollX: number;
|
|
8
8
|
orientation?: HeaderOrientation;
|
|
9
|
+
columnHeaderHeight?: number;
|
|
9
10
|
onColumnClick?: (colId: string, e: React.PointerEvent) => void;
|
|
10
11
|
onColumnResize?: (colId: string, newWidth: number) => void;
|
|
11
12
|
onColumnReorder?: (colId: string, newIndex: number) => void;
|
|
12
|
-
|
|
13
|
+
onColumnFilterClick?: (colId: string, rect: DOMRect) => void;
|
|
14
|
+
columnHeaderRenderer?: (colId: string, title: string, meta: {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
orientation: HeaderOrientation;
|
|
18
|
+
}) => React.ReactNode;
|
|
13
19
|
}
|
|
14
|
-
export declare function ColumnHeaders({ columnEngine, columnGroups, scrollX, orientation, onColumnClick, onColumnResize, onColumnReorder, columnHeaderRenderer, }: ColumnHeadersProps): React.ReactElement;
|
|
20
|
+
export declare function ColumnHeaders({ columnEngine, columnGroups, scrollX, orientation, columnHeaderHeight: columnHeaderHeightProp, onColumnClick, onColumnResize, onColumnReorder, onColumnFilterClick, columnHeaderRenderer, }: ColumnHeadersProps): React.ReactElement;
|
|
@@ -10,5 +10,10 @@ export interface CellLayerConfig {
|
|
|
10
10
|
rowId: string | number;
|
|
11
11
|
colId: string;
|
|
12
12
|
} | null;
|
|
13
|
+
/**
|
|
14
|
+
* Clear the canvas before drawing. True for the live overlay canvas; set
|
|
15
|
+
* false for single-canvas capture so the grid background isn't erased.
|
|
16
|
+
*/
|
|
17
|
+
clearBackground?: boolean;
|
|
13
18
|
}
|
|
14
19
|
export declare function drawCellLayer(ctx: CanvasRenderingContext2D, viewState: ViewState, treeEngine: TreeEngine, columnEngine: ColumnEngine, selectionEngine: SelectionEngine, config: CellLayerConfig): void;
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export interface Column {
|
|
|
12
12
|
minWidth?: number;
|
|
13
13
|
hidden?: boolean;
|
|
14
14
|
pinned?: 'left';
|
|
15
|
+
/** Show a built-in filter icon in this column's header (any orientation). */
|
|
16
|
+
filterable?: boolean;
|
|
17
|
+
/** Render the filter icon in its active (highlighted) state. */
|
|
18
|
+
filterActive?: boolean;
|
|
15
19
|
[key: string]: unknown;
|
|
16
20
|
}
|
|
17
21
|
export interface ColumnGroup {
|
|
@@ -63,9 +67,16 @@ export interface Selection {
|
|
|
63
67
|
export type LayerName = 'grid' | 'cells' | 'overlay';
|
|
64
68
|
export interface CaptureOptions {
|
|
65
69
|
scale?: number;
|
|
70
|
+
/** Capture only rows [start, end) (end exclusive), for paginated export. */
|
|
71
|
+
rowRange?: {
|
|
72
|
+
start: number;
|
|
73
|
+
end: number;
|
|
74
|
+
};
|
|
66
75
|
}
|
|
67
76
|
export interface CanvasGridRef {
|
|
68
77
|
captureToCanvas(options?: CaptureOptions): HTMLCanvasElement;
|
|
78
|
+
/** Number of currently-visible (flattened, after expand/collapse) rows. */
|
|
79
|
+
getRowCount(): number;
|
|
69
80
|
}
|
|
70
81
|
export interface CanvasGridProps {
|
|
71
82
|
rows: Row[];
|
|
@@ -78,6 +89,13 @@ export interface CanvasGridProps {
|
|
|
78
89
|
sidebarWidth?: number;
|
|
79
90
|
rowHeight?: number;
|
|
80
91
|
headerOrientation?: HeaderOrientation;
|
|
92
|
+
/**
|
|
93
|
+
* Height (px) of the column-label band, excluding the group-header row.
|
|
94
|
+
* Defaults to 120 for 'vertical' headers and 32 for 'horizontal'.
|
|
95
|
+
*/
|
|
96
|
+
columnHeaderHeight?: number;
|
|
97
|
+
/** Cap the grid's height so its body scrolls internally. number = px. */
|
|
98
|
+
maxHeight?: number | string;
|
|
81
99
|
rowStyle?: (row: Row, depth: number) => {
|
|
82
100
|
backgroundColor?: string;
|
|
83
101
|
} | null;
|
|
@@ -89,8 +107,21 @@ export interface CanvasGridProps {
|
|
|
89
107
|
onCellHover?: (rowId: string | number | null, colId: string | null, e: PointerEvent) => void;
|
|
90
108
|
onRowHeaderClick?: (rowId: string | number, e: PointerEvent) => void;
|
|
91
109
|
onColumnHeaderClick?: (colId: string, e: PointerEvent) => void;
|
|
92
|
-
/**
|
|
93
|
-
|
|
110
|
+
/**
|
|
111
|
+
* Custom React content to render inside a column header cell (e.g. a label
|
|
112
|
+
* wrapped in the consumer's own tooltip). `meta` gives the cell's width,
|
|
113
|
+
* height and resolved orientation so the consumer can lay out vertical text.
|
|
114
|
+
*/
|
|
115
|
+
columnHeaderRenderer?: (colId: string, title: string, meta: {
|
|
116
|
+
width: number;
|
|
117
|
+
height: number;
|
|
118
|
+
orientation: HeaderOrientation;
|
|
119
|
+
}) => React.ReactNode;
|
|
120
|
+
/**
|
|
121
|
+
* Fired when a column's built-in filter icon is clicked. `rect` is the
|
|
122
|
+
* icon's bounding box (viewport coords) so the consumer can anchor a popup.
|
|
123
|
+
*/
|
|
124
|
+
onColumnFilterClick?: (colId: string, rect: DOMRect) => void;
|
|
94
125
|
defaultExpandedRows?: (string | number)[];
|
|
95
126
|
onExpandChange?: (expandedRows: (string | number)[]) => void;
|
|
96
127
|
onColumnResize?: (colId: string, width: number) => void;
|