UNPKG

5.55 kBTypeScriptView Raw
1/// <reference types="react" />
2
3import React from 'react';
4import { CommonProps } from '../util';
5import { PopupProps } from '../overlay';
6import { TreeProps, Node } from '../tree';
7import { item } from '../select';
8
9interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
10 defaultValue?: any;
11 onChange?: any;
12}
13
14export interface TreeSelectProps extends HTMLAttributesWeak, CommonProps {
15 /**
16 * 树节点
17 */
18 children?: React.ReactNode;
19
20 /**
21 * 选择框大小
22 */
23 size?: 'small' | 'medium' | 'large';
24
25 /**
26 * 选择框占位符
27 */
28 placeholder?: string;
29
30 /**
31 * 是否禁用
32 */
33 disabled?: boolean;
34
35 /**
36 * 是否有下拉箭头
37 */
38 hasArrow?: boolean;
39
40 /**
41 * 是否有边框
42 */
43 hasBorder?: boolean;
44
45 /**
46 * 是否有清空按钮
47 */
48 hasClear?: boolean;
49
50 /**
51 * 自定义内联 label
52 */
53 label?: React.ReactNode;
54
55 /**
56 * 是否只读,只读模式下可以展开弹层但不能选择
57 */
58 readOnly?: boolean;
59
60 /**
61 * 下拉框是否与选择器对齐
62 */
63 autoWidth?: boolean;
64
65 /**
66 * 数据源,该属性优先级高于 children
67 */
68 dataSource?: Array<any>;
69
70 /**
71 * (受控)当前值
72 */
73 value?: string | object | Array<any>;
74
75 /**
76 * (非受控)默认值
77 */
78 defaultValue?: string | object | Array<any>;
79
80 /**
81 * value/defaultValue 在 dataSource 中不存在时,是否展示
82 */
83 preserveNonExistentValue?: boolean;
84
85 /**
86 * 选中值改变时触发的回调函数
87 */
88 onChange?: (value: any | Array<any>, data: any | Array<any>) => void;
89
90 /**
91 * onChange 返回的 value 使用 dataSource 的对象
92 */
93 useDetailValue?: boolean;
94
95 /**
96 * 是否一行显示,仅在 multiple 和 treeCheckable 为 true 时生效
97 */
98 tagInline?: boolean;
99
100 /**
101 * 隐藏多余 tag 时显示的内容,在 tagInline 生效时起作用
102 * @param {Object[]} selectedValues 当前已选中的元素
103 * @param {Object[]} [totalValues] 总待选元素,treeCheckedStrategy = 'parent' 时为 undefined
104 */
105 maxTagPlaceholder?: (
106 selectedValues: any[],
107 totalValues?: any[]
108 ) => React.ReactNode | HTMLElement;
109
110 /**
111 * 是否自动清除 searchValue
112 */
113 autoClearSearch?: boolean;
114
115 /**
116 * 是否显示搜索框
117 */
118 showSearch?: boolean;
119
120 /**
121 * 在搜索框中输入时触发的回调函数
122 */
123 onSearch?: (keyword: string) => void;
124 onSearchClear?: (actionType: string) => void;
125 /**
126 * 无数据时显示内容
127 */
128 notFoundContent?: React.ReactNode;
129
130 /**
131 * 是否支持多选
132 */
133 multiple?: boolean;
134
135 /**
136 * 下拉框中的树是否支持勾选节点的复选框
137 */
138 treeCheckable?: boolean;
139
140 /**
141 * 下拉框中的树勾选节点复选框是否完全受控(父子节点选中状态不再关联)
142 */
143 treeCheckStrictly?: boolean;
144
145 /**
146 * 定义选中时回填的方式
147 */
148 treeCheckedStrategy?: 'all' | 'parent' | 'child';
149
150 /**
151 * 下拉框中的树是否默认展开所有节点
152 */
153 treeDefaultExpandAll?: boolean;
154
155 /**
156 * 下拉框中的树默认展开节点key的数组
157 */
158 treeDefaultExpandedKeys?: Array<any>;
159
160 /**
161 * 下拉框中的树异步加载数据的函数,使用请参考[Tree的异步加载数据Demo](https://fusion.design/pc/component/basic/tree#%E5%BC%82%E6%AD%A5%E5%8A%A0%E8%BD%BD%E6%95%B0%E6%8D%AE)
162 */
163 treeLoadData?: (node: React.ReactElement<any>) => void;
164
165 /**
166 * 透传到 Tree 的属性对象
167 */
168 treeProps?: TreeProps;
169
170 /**
171 * 初始下拉框是否显示
172 */
173 defaultVisible?: boolean;
174
175 /**
176 * 当前下拉框是否显示
177 */
178 visible?: boolean;
179
180 /**
181 * 下拉框显示或关闭时触发事件的回调函数
182 */
183 onVisibleChange?: (visible: boolean, type: string) => void;
184
185 /**
186 * 下拉框自定义样式对象
187 */
188 popupStyle?: React.CSSProperties;
189
190 /**
191 * 下拉框样式自定义类名
192 */
193 popupClassName?: string;
194
195 /**
196 * 下拉框挂载的容器节点
197 */
198 popupContainer?: string | HTMLElement | ((target: HTMLElement) => HTMLElement);
199
200 /**
201 * 透传到 Popup 的属性对象
202 */
203 popupProps?: PopupProps;
204 /**
205 * 是否跟随滚动
206 */
207 followTrigger?: boolean;
208
209 /**
210 * 是否为预览态
211 */
212 isPreview?: boolean;
213
214 /**
215 * 预览态模式下渲染的内容
216 * @param {Array<data>} value 选择值 { label: , value:}
217 */
218 renderPreview?: (data: string | Array<any>, props: any | Array<any>) => React.ReactNode;
219
220 /**
221 * 是否开启虚拟滚动
222 */
223 useVirtual?: boolean;
224
225 /**
226 * 是否关闭本地搜索
227 */
228 filterLocal?: boolean;
229
230 immutable?: boolean;
231
232 /**
233 * 填充到选择框里的值的 key,默认是 value
234 */
235 fillProps?: string;
236
237 /**
238 * 点击文本是否可以勾选
239 */
240 clickToCheck?: boolean;
241
242 /**
243 * 渲染 Select 区域展现内容的方法
244 * @param {Object} item 渲染项
245 * @param {Object[]} itemPaths 渲染项在dataSource内的路径
246 */
247 valueRender?: (item: any, itemPaths: item[]) => React.ReactNode;
248}
249
250export default class TreeSelect extends React.Component<TreeSelectProps, any> {
251 static Node: typeof Node;
252}