choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
79 lines (78 loc) • 2.76 kB
TypeScript
import * as React from 'react';
import PropTypes from 'prop-types';
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(): React.Context<import("./TableContext").Props>;
static propTypes: {
tableId: PropTypes.Requireable<string>;
vertical: PropTypes.Requireable<boolean>;
length: PropTypes.Requireable<number>;
scrollLength: PropTypes.Requireable<number>;
scrollBarOffset: PropTypes.Requireable<number>;
clickScrollLength: PropTypes.Requireable<object>;
showScrollArrow: PropTypes.Requireable<boolean>;
className: PropTypes.Requireable<string>;
classPrefix: PropTypes.Requireable<string>;
onScroll: PropTypes.Requireable<(...args: any[]) => any>;
onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
};
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;