UNPKG

3.18 kBTypeScriptView Raw
1import * as React from 'react';
2export interface IVoiceover {
3 item: (position: number) => string;
4 lifted: (position: number) => string;
5 dropped: (from: number, to: number) => string;
6 moved: (position: number, up: boolean) => string;
7 canceled: (position: number) => string;
8}
9interface IItemProps {
10 key?: number;
11 tabIndex?: number;
12 onKeyDown?: (e: React.KeyboardEvent) => void;
13 onMouseDown?: (e: React.MouseEvent) => void;
14 onTouchStart?: (e: React.TouchEvent) => void;
15 onWheel?: (e: React.WheelEvent) => void;
16 style?: React.CSSProperties;
17 ref?: React.RefObject<any>;
18}
19interface IListProps<Value> {
20 renderItem: (params: {
21 value: Value;
22 props: IItemProps;
23 index?: number;
24 isDragged: boolean;
25 isSelected: boolean;
26 }) => React.ReactNode;
27 renderList: (props: {
28 children: any;
29 isDragged: boolean;
30 props: {
31 ref: React.RefObject<any>;
32 };
33 }) => React.ReactNode;
34 values: Value[];
35 onChange: (meta: {
36 oldIndex: number;
37 newIndex: number;
38 }) => void;
39 transitionDuration: number;
40 lockVertically: boolean;
41 voiceover: IVoiceover;
42}
43declare type TEvent = React.MouseEvent | React.TouchEvent | React.KeyboardEvent;
44declare class List<Value = string> extends React.Component<IListProps<Value>> {
45 listRef: React.RefObject<HTMLElement>;
46 ghostRef: React.RefObject<HTMLElement>;
47 topOffsets: number[];
48 itemTranslateOffsets: number[];
49 initialYOffset: number;
50 lastScroll: number;
51 needle: number;
52 afterIndex: number;
53 state: {
54 itemDragged: number;
55 selectedItem: number;
56 initialX: number;
57 initialY: number;
58 targetX: number;
59 targetY: number;
60 targetHeight: number;
61 targetWidth: number;
62 liveText: string;
63 };
64 componentDidMount(): void;
65 getChildren: () => Element[];
66 static defaultProps: {
67 transitionDuration: number;
68 lockVertically: boolean;
69 voiceover: {
70 item: (position: number) => string;
71 lifted: (position: number) => string;
72 moved: (position: number, up: boolean) => string;
73 dropped: (from: number, to: number) => string;
74 canceled: (position: number) => string;
75 };
76 };
77 calculateOffsets: () => void;
78 getTargetIndex: (e: TEvent) => number;
79 onMouseDown: (e: React.MouseEvent<Element, MouseEvent>) => void;
80 onTouchStart: (e: React.TouchEvent<Element>) => void;
81 getYOffset: () => number;
82 onStart: (target: HTMLElement, clientX: number, clientY: number, index: number) => void;
83 onMouseMove: (e: MouseEvent) => null | undefined;
84 onTouchMove: (e: TouchEvent) => null | undefined;
85 onWheel: (e: React.WheelEvent<Element>) => void;
86 onMove: (clientX: number, clientY: number) => null | undefined;
87 moveOtherItems: () => void;
88 animateItems: (needle: number, movedItem: number, offset: number, animateMovedItem?: boolean) => void;
89 onEnd: () => void;
90 onKeyDown: (e: React.KeyboardEvent<Element>) => void;
91 render(): JSX.Element;
92}
93export default List;