react-movable
Version:
Drag and drop lists.
80 lines (79 loc) • 2.69 kB
TypeScript
import * as React from "react";
import type { IProps, TEvent } from "./types.js";
declare class List<Value = string> extends React.Component<IProps<Value>> {
listRef: React.RefObject<HTMLElement>;
ghostRef: React.RefObject<HTMLElement>;
topOffsets: number[];
itemTranslateOffsets: number[];
initialYOffset: number;
lastScroll: number;
lastYOffset: number;
lastListYOffset: number;
dropTimeout?: number;
needle: number;
afterIndex: number;
state: {
itemDragged: number;
itemDraggedOutOfBounds: number;
selectedItem: number;
initialX: number;
initialY: number;
targetX: number;
targetY: number;
targetHeight: number;
targetWidth: number;
liveText: string;
scrollingSpeed: number;
scrollWindow: boolean;
};
schdOnMouseMove: {
(e: MouseEvent): void;
cancel(): void;
};
schdOnTouchMove: {
(e: TouchEvent): void;
cancel(): void;
};
schdOnEnd: {
(e: Event): void;
cancel(): void;
};
constructor(props: IProps<Value>);
componentDidMount(): void;
componentDidUpdate(_prevProps: any, prevState: {
scrollingSpeed: number;
}): void;
componentWillUnmount(): void;
doScrolling: () => void;
getChildren: () => Element[];
static defaultProps: {
transitionDuration: number;
lockVertically: boolean;
removableByMove: boolean;
voiceover: {
item: (position: number) => string;
lifted: (position: number) => string;
moved: (position: number, up: boolean) => string;
dropped: (from: number, to: number) => string;
canceled: (position: number) => string;
};
};
calculateOffsets: () => void;
getTargetIndex: (e: TEvent) => number;
onMouseOrTouchStart: (e: MouseEvent & TouchEvent) => void;
getYOffset: () => number;
onStart: (target: HTMLElement, clientX: number, clientY: number, index: number) => void;
onMouseMove: (e: MouseEvent) => void;
onTouchMove: (e: TouchEvent) => void;
onWheel: (e: React.WheelEvent) => void;
onMove: (clientX: number, clientY: number) => null | undefined;
moveOtherItems: () => void;
autoScrolling: (clientY: number, delta: number) => void;
animateItems: (needle: number, movedItem: number, offset: number, animateMovedItem?: boolean) => void;
isDraggedItemOutOfBounds: () => boolean;
onEnd: (e: TouchEvent & MouseEvent) => void;
finishDrop: () => void;
onKeyDown: (e: React.KeyboardEvent) => void;
render(): React.JSX.Element;
}
export default List;