UNPKG

@antv/s2

Version:

effective spreadsheet render core lib

197 lines (196 loc) 9 kB
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; }; }