1 | import * as React from 'react';
|
2 | import {StyletronComponent} from 'styletron-react';
|
3 | import {Override} from '../overrides';
|
4 | import {
|
5 | arrayMove as arrayMoveT,
|
6 | arrayRemove as arrayRemoveT,
|
7 | } from 'react-movable';
|
8 |
|
9 |
|
10 |
|
11 | export interface STATE_CHANGE_TYPE {
|
12 | change: 'change';
|
13 | }
|
14 |
|
15 | export type StateReducer = (
|
16 | stateChangeType: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
|
17 | nextState: State,
|
18 | currentState: State,
|
19 | ) => State;
|
20 |
|
21 | export interface StatefulListProps {
|
22 | initialState?: State;
|
23 | stateReducer?: StateReducer;
|
24 | removable?: boolean;
|
25 | removableByMove?: boolean;
|
26 | onChange?: (
|
27 | params: {
|
28 | newState: React.ReactNode[];
|
29 | oldIndex: number;
|
30 | newIndex: number;
|
31 | },
|
32 | ) => any;
|
33 | overrides?: ListOverrides;
|
34 | }
|
35 |
|
36 | export const StatefulList: React.FC<StatefulListProps>;
|
37 |
|
38 | export interface State {
|
39 | items: React.ReactNode[];
|
40 | }
|
41 | export type StatefulComponentContainerProps = StatefulListProps & {
|
42 | initialState?: State;
|
43 | children: React.ReactNode;
|
44 | };
|
45 |
|
46 | export class StatefulListContainer extends React.Component<
|
47 | StatefulComponentContainerProps,
|
48 | State
|
49 | > {
|
50 | onChange({oldIndex, newIndex}: {oldIndex: number; newIndex: number}): void;
|
51 | internalSetState(
|
52 | type: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
|
53 | changes: State,
|
54 | ): void;
|
55 | }
|
56 |
|
57 | export interface SharedStylePropsArgT {
|
58 | $isDragged: boolean;
|
59 | $isSelected: boolean;
|
60 | $isRemovable: boolean;
|
61 | $isRemovableByMove: boolean;
|
62 | $value: React.ReactNode;
|
63 | }
|
64 |
|
65 | export interface ListOverrides {
|
66 | Root?: Override<SharedStylePropsArgT>;
|
67 | List?: Override<SharedStylePropsArgT>;
|
68 | Item?: Override<SharedStylePropsArgT>;
|
69 | DragHandle?: Override<SharedStylePropsArgT>;
|
70 | CloseHandle?: Override<SharedStylePropsArgT>;
|
71 | Label?: Override<SharedStylePropsArgT>;
|
72 | }
|
73 |
|
74 | export interface ListProps {
|
75 | removable?: boolean;
|
76 | removableByMove?: boolean;
|
77 | items?: React.ReactNode[];
|
78 | onChange?: (args: {oldIndex: number; newIndex: number}) => any;
|
79 | overrides?: ListOverrides;
|
80 | }
|
81 |
|
82 | export class List extends React.Component<ListProps> {}
|
83 |
|
84 | export const StyledRoot: StyletronComponent<any>;
|
85 | export const StyledList: StyletronComponent<any>;
|
86 | export const StyledItem: StyletronComponent<any>;
|
87 | export const StyledDragHandle: StyletronComponent<any>;
|
88 | export const StyledCloseHandle: StyletronComponent<any>;
|
89 | export const StyledLabel: StyletronComponent<any>;
|
90 |
|
91 | export const STATE_CHANGE_TYPE: STATE_CHANGE_TYPE;
|
92 | export const arrayMove: typeof arrayMoveT;
|
93 | export const arrayRemove: typeof arrayRemoveT;
|