UNPKG

1.61 kBTypeScriptView Raw
1/// <reference types="react" />
2interface 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}
9export 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}
18export interface RenderItemParams<Value> {
19 value: Value;
20 props: IItemProps;
21 index?: number;
22 isDragged: boolean;
23 isSelected: boolean;
24 isOutOfBounds: boolean;
25}
26export interface RenderListParams {
27 children: React.ReactNode;
28 isDragged: boolean;
29 props: {
30 ref: React.RefObject<any>;
31 };
32}
33export interface BeforeDragParams {
34 elements: Element[];
35 index: number;
36}
37export interface OnChangeMeta {
38 oldIndex: number;
39 newIndex: number;
40 targetRect: ClientRect;
41}
42export 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}
54export declare type TEvent = React.MouseEvent | React.TouchEvent | React.KeyboardEvent;
55export {};