@antv/s2
Version:
effective spreadsheet render core lib
197 lines (196 loc) • 9 kB
TypeScript
import { FederatedPointerEvent as GEvent } from '@antv/g';
import type { ColCell, CornerCell, DataCell, MergedCell, RowCell, SeriesNumberCell, TableDataCell } from '../cell';
import type { BaseTooltipOperatorMenuOptions, CellScrollPosition, CellSelectedHandler, CopyableList, HeaderActionIcon, HiddenColumnsInfo, LayoutResult, Pagination, RawData, ResizeInfo, ResizeParams, RowCellCollapsedParams, S2CellType, S2DataConfig, S2MountContainer, S2Options, S2RenderOptions, SortParams, TargetCellInfo, ThemeCfg, TooltipContentType, TooltipOperatorOptions, ViewMeta, ViewMetaData } from '../common';
import type { Node } from '../facet/layout/node';
import type { SpreadSheet } from '../sheet-type';
export type Adaptive = boolean | {
width?: boolean;
height?: boolean;
getContainer?: () => HTMLElement;
};
export type SheetType = 'pivot' | 'table' | 'chart' | 'pivotChart' | 'gridAnalysis' | 'strategy' | 'editable';
/** render callback */
export type SheetUpdateCallback = (params: S2RenderOptions) => S2RenderOptions;
export type LayoutPaginationParams = {
pageSize: number;
pageCount: number;
total: number;
current: number;
};
export interface BaseSheetComponentProps<PartialDrillDown = PartDrillDown, Options = S2Options<TooltipContentType, Pagination>> {
sheetType?: SheetType;
spreadsheet?: (container: S2MountContainer, dataCfg: S2DataConfig, options: Options) => SpreadSheet;
dataCfg: S2DataConfig;
options?: Options;
loading?: boolean;
partDrillDown?: PartialDrillDown;
adaptive?: Adaptive;
themeCfg?: ThemeCfg;
onRowCellHover?: (data: TargetCellInfo) => void;
onRowCellClick?: (data: TargetCellInfo) => void;
onRowCellDoubleClick?: (data: TargetCellInfo) => void;
onRowCellContextMenu?: (data: TargetCellInfo) => void;
onRowCellMouseDown?: (data: TargetCellInfo) => void;
onRowCellMouseUp?: (data: TargetCellInfo) => void;
onRowCellMouseMove?: (data: TargetCellInfo) => void;
onRowCellCollapsed?: (params: RowCellCollapsedParams) => void;
onRowCellAllCollapsed?: (isCollapsed: boolean) => void;
onRowCellScroll?: (position: CellScrollPosition) => void;
onRowCellRender?: (cell: RowCell) => void;
onRowCellSelected?: CellSelectedHandler;
onColCellHover?: (data: TargetCellInfo) => void;
onColCellClick?: (data: TargetCellInfo) => void;
onColCellDoubleClick?: (data: TargetCellInfo) => void;
onColCellContextMenu?: (data: TargetCellInfo) => void;
onColCellMouseDown?: (data: TargetCellInfo) => void;
onColCellMouseUp?: (data: TargetCellInfo) => void;
onColCellMouseMove?: (data: TargetCellInfo) => void;
onColCellExpanded?: (node: Node) => void;
onColCellExpandIconHover?: (data: {
event: GEvent;
meta: Node;
hiddenNodes: Node[];
}) => void;
onColCellHidden?: (data: {
currentHiddenColumnsInfo: HiddenColumnsInfo;
hiddenColumnsDetail: HiddenColumnsInfo[];
}) => void;
onColCellRender?: (cell: ColCell) => void;
onColCellSelected?: CellSelectedHandler;
onDataCellHover?: (data: TargetCellInfo) => void;
onDataCellClick?: (data: TargetCellInfo) => void;
onDataCellDoubleClick?: (data: TargetCellInfo) => void;
onDataCellContextMenu?: (data: TargetCellInfo) => void;
onDataCellMouseDown?: (data: TargetCellInfo) => void;
onDataCellMouseUp?: (data: TargetCellInfo) => void;
onDataCellMouseMove?: (data: TargetCellInfo) => void;
onDataCellBrushSelection?: (brushRangeDataCells: DataCell[]) => void;
onDataCellSelectMove?: (metaList: ViewMetaData[]) => void;
onDataCellRender?: (cell: DataCell) => void;
onDataCellEditStart?: (meta: ViewMeta, cell: TableDataCell) => void;
onDataCellEditEnd?: (meta: ViewMeta, cell: TableDataCell) => void;
onDataCellSelected?: CellSelectedHandler;
onCornerCellHover?: (data: TargetCellInfo) => void;
onCornerCellClick?: (data: TargetCellInfo) => void;
onCornerCellDoubleClick?: (data: TargetCellInfo) => void;
onCornerCellContextMenu?: (data: TargetCellInfo) => void;
onCornerCellMouseDown?: (data: TargetCellInfo) => void;
onCornerCellMouseUp?: (data: TargetCellInfo) => void;
onCornerCellMouseMove?: (data: TargetCellInfo) => void;
onCornerCellRender?: (cell: CornerCell) => void;
onCornerCellSelected?: CellSelectedHandler;
onMergedCellsHover?: (data: TargetCellInfo) => void;
onMergedCellsClick?: (data: TargetCellInfo) => void;
onMergedCellsDoubleClick?: (data: TargetCellInfo) => void;
onMergedCellsContextMenu?: (data: TargetCellInfo) => void;
onMergedCellsMouseDown?: (data: TargetCellInfo) => void;
onMergedCellsMouseUp?: (data: TargetCellInfo) => void;
onMergedCellsMouseMove?: (data: TargetCellInfo) => void;
onMergedCellsRender?: (cell: MergedCell) => void;
/** ================ SeriesNumber Cell ================ */
onSeriesNumberCellRender?: (cell: SeriesNumberCell) => void;
onRangeSort?: (params: SortParams) => void;
onRangeSorted?: (event: GEvent) => void;
onRangeFilter?: (data: {
filterKey: string;
filteredValues: string[];
}) => void;
onRangeFiltered?: (data: ViewMetaData[]) => void;
onLayoutAfterHeaderLayout?: (layoutResult: LayoutResult) => void;
onLayoutPagination?: (data: LayoutPaginationParams) => void;
onLayoutCellRender?: <T extends S2CellType = S2CellType>(cell: T) => void;
onBeforeRender?: () => void;
onAfterRender?: () => void;
onMounted?: (spreadsheet: SpreadSheet) => void;
onUpdate?: (renderOptions: S2RenderOptions) => S2RenderOptions | void;
onUpdateAfterRender?: (renderOptions: S2RenderOptions) => void;
onLoading?: (loading: boolean) => void;
onDestroy?: () => void;
onLayoutResize?: (params: ResizeParams) => void;
onLayoutResizeSeriesWidth?: (params: ResizeParams) => void;
onLayoutResizeRowWidth?: (params: ResizeParams) => void;
onLayoutResizeRowHeight?: (params: ResizeParams) => void;
onLayoutResizeColWidth?: (params: ResizeParams) => void;
onLayoutResizeColHeight?: (params: ResizeParams) => void;
onLayoutResizeTreeWidth?: (params: ResizeParams) => void;
onLayoutResizeMouseDown?: (data: {
event: Partial<MouseEvent>;
resizeInfo?: ResizeInfo;
}) => void;
onLayoutResizeMouseUp?: (data: {
event: Partial<MouseEvent>;
resizeInfo?: ResizeInfo;
}) => void;
onLayoutResizeMouseMove?: (data: {
event: Partial<MouseEvent>;
resizeInfo?: ResizeInfo;
}) => void;
onKeyBoardDown?: (event: KeyboardEvent) => void;
onKeyBoardUp?: (event: KeyboardEvent) => void;
onCopied?: (data: CopyableList) => void;
onActionIconHover?: (event: GEvent) => void;
onActionIconHoverOff?: (event: GEvent) => void;
onActionIconClick?: (event: GEvent) => void;
onContextMenu?: (event: GEvent) => void;
onClick?: (event: GEvent) => void;
onHover?: (event: GEvent) => void;
onDoubleClick?: (event: GEvent) => void;
onMouseHover?: (event: GEvent) => void;
onMouseUp?: (event: MouseEvent) => void;
onMouseDown?: (event: MouseEvent) => void;
onMouseMove?: (event: MouseEvent) => void;
onSelected?: CellSelectedHandler;
onReset?: (event: KeyboardEvent) => void;
onLinkFieldJump?: (data: {
field: string;
record: RawData;
}) => void;
onScroll?: (position: CellScrollPosition) => void;
onLayoutAfterRealDataCellRender?: (options: {
add: [number, number][];
remove: [number, number][];
spreadsheet: SpreadSheet;
}) => void;
onRowCellBrushSelection?: (event: GEvent) => void;
onColCellBrushSelection?: (event: GEvent) => void;
}
export interface ResizeEffectParams {
s2: SpreadSheet;
container: HTMLDivElement;
wrapper: HTMLDivElement;
adaptive: Adaptive | undefined;
}
export interface TooltipOperatorProps<Menu = BaseTooltipOperatorMenuOptions> extends TooltipOperatorOptions<Menu> {
onlyShowOperator?: boolean;
cell: S2CellType;
}
export interface BaseDrillDownDataSet {
name: string;
value: string;
type?: 'text' | 'location' | 'date';
disabled?: boolean;
}
export interface BaseDrillDownComponentProps<DataSet = BaseDrillDownDataSet, Text = string> {
className?: string;
title?: Text;
searchText?: string;
clearText?: Text;
dataSet?: DataSet[] | undefined;
drillFields?: string[];
disabledFields?: string[];
getDrillFields?: (drillFields: string[]) => void;
setDrillFields?: (drillFields: string[]) => void;
drillVisible?: boolean;
}
export interface PartDrillDownInfo {
drillData: RawData[];
drillField: string;
}
export interface PartDrillDown<T = BaseDrillDownComponentProps> extends Pick<HeaderActionIcon, 'displayCondition'> {
drillConfig: T;
drillItemsNum?: number;
fetchData: (meta: Node, drillFields: string[]) => Promise<PartDrillDownInfo>;
clearDrillDown?: {
rowId: string;
};
}