choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
66 lines (65 loc) • 2.11 kB
TypeScript
import * as React from 'react';
import TableContext from './TableContext';
import { TableScrollLength } from './Table';
export interface ScrollbarProps {
vertical?: boolean;
length: number;
scrollLength: number;
scrollBarOffset: number;
className?: string;
classPrefix?: string;
tableId?: string;
onScroll?: (delta: number, event: React.MouseEvent) => void;
onMouseDown?: (event: React.MouseEvent) => void;
clickScrollLength: TableScrollLength;
showScrollArrow?: boolean;
[key: string]: any;
}
declare type Offset = {
top: number;
left: number;
height?: number;
width?: number;
};
declare type State = {
barOffset: Offset;
handlePressed: boolean;
};
declare class Scrollbar extends React.PureComponent<ScrollbarProps, State> {
static get contextType(): typeof TableContext;
static defaultProps: {
classPrefix: string;
scrollLength: number;
length: number;
};
scrollOffset: number;
mouseMoveTracker: null;
handleRef: React.RefObject<HTMLDivElement>;
barRef: React.RefObject<HTMLDivElement>;
constructor(props: ScrollbarProps);
componentDidMount(): void;
componentDidUpdate(prevProps: any): void;
componentWillUnmount(): void;
onWheelScroll(delta: number): void;
getMouseMoveTracker(): any;
initBarOffset(): void;
handleMouseDown: (event: React.MouseEvent<Element, MouseEvent>) => void;
handleDragEnd: () => void;
handleScroll(delta: number, event: React.MouseEvent): void;
resetScrollBarPosition(forceDelta?: number): void;
updateScrollBarPosition(delta: number, forceDelta?: number): void;
releaseMouseMoves(): void;
handleDragMove: (deltaX: number, deltaY: number, event: React.MouseEvent<Element, MouseEvent>) => void;
/**
* 点击滚动条,然后滚动到指定位置
*/
handleClick: (event: React.MouseEvent<Element, MouseEvent>) => void;
/**
*
* @param e
* @param sort
*/
handleArrowClick: (e: any, sort: any) => void;
render(): JSX.Element;
}
export default Scrollbar;