@uiw/react-split
Version:
A piece of view can be divided into areas where the width or height can be adjusted by dragging.
60 lines (59 loc) • 1.74 kB
TypeScript
import React from 'react';
import './style/index.less';
export interface SplitProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onDragEnd'> {
style?: React.CSSProperties;
className?: string;
prefixCls?: string;
/**
* 拖拽宽度/高度变化回调函数,宽度或者高度根据 mode 参数来确定
*/
onDragging?: (preSize: number, nextSize: number, paneNumber: number) => void;
/**
* 拖拽结束的回调函数
*/
onDragEnd?: (preSize: number, nextSize: number, paneNumber: number) => void;
/**
* 设置拖拽的工具条,为线条样式。
*/
lineBar?: boolean;
/**
* 设置拖拽的工具条,是否可见
*/
visiable?: boolean | number[];
/**
* 设置拖拽的工具条,禁用
*/
disable?: boolean | number[];
/**
* 类型,可选值为 `horizontal` 或 `vertical`
*/
mode?: 'horizontal' | 'vertical';
}
export interface SplitState {
dragging: boolean;
}
export default class Split extends React.Component<SplitProps, SplitState> {
static defaultProps: SplitProps;
state: SplitState;
warpper: HTMLDivElement | null;
paneNumber: number;
startX: number;
startY: number;
move: boolean;
target: HTMLDivElement;
boxWidth: number;
boxHeight: number;
preWidth: number;
nextWidth: number;
preHeight: number;
nextHeight: number;
preSize: number;
nextSize: number;
constructor(props: SplitProps);
componentWillUnmount(): void;
private removeEvent;
onMouseDown(paneNumber: number, env: React.MouseEvent<HTMLDivElement, MouseEvent>): void;
onDragging(env: Event): void;
onDragEnd(): void;
render(): JSX.Element;
}