UNPKG

5.48 kBTypeScriptView Raw
1/// <reference types="react" />
2
3import * as React from 'react';
4import CommonProps from '../util';
5
6export interface NodeProps extends React.HTMLAttributes<HTMLElement>, CommonProps {
7 /**
8 * 树节点
9 */
10 children?: React.ReactNode;
11
12 /**
13 * 节点文本内容
14 */
15 label?: React.ReactNode;
16
17 /**
18 * 单独设置是否支持选中,覆盖 Tree 的 selectable
19 */
20 selectable?: boolean;
21
22 /**
23 * 单独设置是否出现复选框,覆盖 Tree 的 checkable
24 */
25 checkable?: boolean;
26
27 /**
28 * 单独设置是否支持编辑,覆盖 Tree 的 editable
29 */
30 editable?: boolean;
31
32 /**
33 * 单独设置是否支持拖拽,覆盖 Tree 的 draggable
34 */
35 draggable?: boolean;
36
37 /**
38 * 是否禁止节点响应
39 */
40 disabled?: boolean;
41
42 /**
43 * 是否禁止勾选节点复选框
44 */
45 checkboxDisabled?: boolean;
46
47 /**
48 * 是否是叶子节点,设置loadData时生效
49 */
50 isLeaf?: boolean;
51}
52
53export class Node extends React.Component<NodeProps, any> {}
54interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
55 onSelect?: any;
56}
57
58export interface TreeProps extends HTMLAttributesWeak, CommonProps {
59 /**
60 * 树节点
61 */
62 children?: React.ReactNode;
63
64 /**
65 * 数据源,该属性优先级高于 children
66 */
67 dataSource?: Array<any>;
68
69 /**
70 * 是否显示树的线
71 */
72 showLine?: boolean;
73
74 /**
75 * 是否支持选中节点
76 */
77 selectable?: boolean;
78
79 /**
80 * (用于受控)当前选中节点 key 的数组
81 */
82 selectedKeys?: Array<any>;
83
84 /**
85 * (用于非受控)默认选中节点 key 的数组
86 */
87 defaultSelectedKeys?: Array<any>;
88
89 /**
90 * 选中或取消选中节点时触发的回调函数
91 */
92 onSelect?: (selectedKeys: Array<any>, extra: {}) => void;
93
94 /**
95 * 是否支持多选
96 */
97 multiple?: boolean;
98
99 /**
100 * 是否支持勾选节点的复选框
101 */
102 checkable?: boolean;
103
104 /**
105 * (用于受控)当前勾选复选框节点 key 的数组或 `{checked: Array, indeterminate: Array}` 的对象
106 */
107 checkedKeys?: Array<any> | {};
108
109 /**
110 * (用于非受控)默认勾选复选框节点 key 的数组
111 */
112 defaultCheckedKeys?: Array<any>;
113
114 /**
115 * 勾选节点复选框是否完全受控(父子节点选中状态不再关联)
116 */
117 checkStrictly?: boolean;
118
119 /**
120 * 定义选中时回填的方式
121 */
122 checkedStrategy?: 'all' | 'parent' | 'child';
123
124 /**
125 * 勾选或取消勾选复选框时触发的回调函数
126 */
127 onCheck?: (checkedKeys: Array<any>, extra: {}) => void;
128
129 /**
130 * (用于受控)当前展开的节点 key 的数组
131 */
132 expandedKeys?: Array<any>;
133
134 /**
135 * (用于非受控)默认展开的节点 key 的数组
136 */
137 defaultExpandedKeys?: Array<any>;
138
139 /**
140 * 是否默认展开所有节点
141 */
142 defaultExpandAll?: boolean;
143
144 /**
145 * 是否自动展开父节点
146 */
147 autoExpandParent?: boolean;
148
149 /**
150 * 展开或收起节点时触发的回调函数
151 */
152 onExpand?: (expandedKeys: Array<any>, extra: {}) => void;
153
154 /**
155 * 是否支持编辑节点内容
156 */
157 editable?: boolean;
158
159 /**
160 * 编辑节点内容完成时触发的回调函数
161 */
162 onEditFinish?: (key: string, label: string, node: {}) => void;
163
164 /**
165 * 是否支持拖拽节点
166 */
167 draggable?: boolean;
168
169 /**
170 * 开始拖拽节点时触发的回调函数
171 */
172 onDragStart?: (info: {}) => void;
173
174 /**
175 * 拖拽节点进入目标节点时触发的回调函数
176 */
177 onDragEnter?: (info: {}) => void;
178
179 /**
180 * 拖拽节点在目标节点上移动的时候触发的回调函数
181 */
182 onDragOver?: (info: {}) => void;
183
184 /**
185 * 拖拽节点离开目标节点时触发的回调函数
186 */
187 onDragLeave?: (info: {}) => void;
188
189 /**
190 * 拖拽节点拖拽结束时触发的回调函数
191 */
192 onDragEnd?: (info: {}) => void;
193
194 /**
195 * 拖拽节点放入目标节点内或前后触发的回调函数
196 */
197 onDrop?: (info: {}) => void;
198
199 /**
200 * 节点是否可被作为拖拽的目标节点
201 */
202 canDrop?: (info: {}) => boolean;
203
204 /**
205 * 异步加载数据的函数
206 */
207 loadData?: (node: {}) => void;
208
209 /**
210 * 按需筛选高亮节点
211 */
212 filterTreeNode?: (node: {}) => boolean;
213
214 /**
215 * 右键点击节点时触发的回调函数
216 */
217 onRightClick?: (info: {}) => void;
218
219 /**
220 * 设置节点是否占满剩余空间,一般用于统一在各节点右侧添加元素(借助 flex 实现,暂时只支持 ie10+)
221 */
222 isLabelBlock?: boolean;
223
224 /**
225 * 设置节点是否占满一行
226 */
227 isNodeBlock?: boolean | {};
228
229 /**
230 * 是否开启展开收起动画
231 */
232 animation?: boolean;
233
234 /**
235 * 当前获得焦点的子菜单或菜单项 key 值
236 */
237 focusedKey?: string;
238 /**
239 * 渲染子节点
240 */
241 renderChildNodes?: (nodes: React.ReactNode) => React.ReactNode;
242 /**
243 * 渲染单个子节点
244 */
245 labelRender?: (node: {}) => React.ReactNode;
246 /**
247 * 是否是不可变数据
248 */
249 immutable?: boolean;
250}
251
252export default class Tree extends React.Component<TreeProps, any> {
253 static Node: typeof Node;
254}