1 |
|
2 | 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 | }
|
9 | export interface IItemProps {
|
10 | key?: number;
|
11 | tabIndex?: number;
|
12 | 'aria-roledescription'?: string;
|
13 | onKeyDown?: (e: React.KeyboardEvent) => void;
|
14 | onWheel?: (e: React.WheelEvent) => void;
|
15 | style?: React.CSSProperties;
|
16 | ref?: React.RefObject<any>;
|
17 | }
|
18 | export interface RenderItemParams<Value> {
|
19 | value: Value;
|
20 | props: IItemProps;
|
21 | index?: number;
|
22 | isDragged: boolean;
|
23 | isSelected: boolean;
|
24 | isOutOfBounds: boolean;
|
25 | }
|
26 | export interface RenderListParams {
|
27 | children: React.ReactNode;
|
28 | isDragged: boolean;
|
29 | props: {
|
30 | ref: React.RefObject<any>;
|
31 | };
|
32 | }
|
33 | export interface BeforeDragParams {
|
34 | elements: Element[];
|
35 | index: number;
|
36 | }
|
37 | export interface OnChangeMeta {
|
38 | oldIndex: number;
|
39 | newIndex: number;
|
40 | targetRect: ClientRect;
|
41 | }
|
42 | export interface IProps<Value> {
|
43 | beforeDrag?: (params: BeforeDragParams) => void;
|
44 | renderItem: (params: RenderItemParams<Value>) => React.ReactNode;
|
45 | renderList: (props: RenderListParams) => React.ReactNode;
|
46 | values: Value[];
|
47 | onChange: (meta: OnChangeMeta) => void;
|
48 | transitionDuration: number;
|
49 | removableByMove: boolean;
|
50 | lockVertically: boolean;
|
51 | voiceover: IVoiceover;
|
52 | container?: Element | null;
|
53 | }
|
54 | export declare type TEvent = React.MouseEvent | React.TouchEvent | React.KeyboardEvent;
|
55 | export {};
|