@hi-ui/tree-select 4.1.0 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/lib/cjs/TreeSelect.js +94 -133
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/styles/index.scss.js +0 -3
- package/lib/esm/TreeSelect.js +92 -110
- package/lib/esm/styles/index.scss.js +0 -2
- package/package.json +20 -20
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,54 @@
|
|
1
1
|
# @hi-ui/tree-select
|
2
2
|
|
3
|
+
## 4.1.2
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- fix: 修复 rollup3 打包 cjs 模块问题
|
8
|
+
- Updated dependencies
|
9
|
+
- @hi-ui/env@4.0.3
|
10
|
+
- @hi-ui/core@4.0.7
|
11
|
+
- @hi-ui/use-data-source@4.0.3
|
12
|
+
- @hi-ui/use-search-mode@4.1.3
|
13
|
+
- @hi-ui/use-toggle@4.0.3
|
14
|
+
- @hi-ui/use-uncontrolled-state@4.0.3
|
15
|
+
- @hi-ui/icons@4.0.17
|
16
|
+
- @hi-ui/highlighter@4.0.7
|
17
|
+
- @hi-ui/input@4.0.12
|
18
|
+
- @hi-ui/picker@4.1.3
|
19
|
+
- @hi-ui/popper@4.1.2
|
20
|
+
- @hi-ui/tree@4.5.7
|
21
|
+
- @hi-ui/array-utils@4.0.3
|
22
|
+
- @hi-ui/classname@4.0.3
|
23
|
+
- @hi-ui/func-utils@4.0.3
|
24
|
+
- @hi-ui/tree-utils@4.1.3
|
25
|
+
- @hi-ui/type-assertion@4.0.3
|
26
|
+
|
27
|
+
## 4.1.1
|
28
|
+
|
29
|
+
### Patch Changes
|
30
|
+
|
31
|
+
- [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
|
32
|
+
|
33
|
+
- Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
|
34
|
+
- @hi-ui/core@4.0.6
|
35
|
+
- @hi-ui/use-data-source@4.0.2
|
36
|
+
- @hi-ui/use-search-mode@4.1.2
|
37
|
+
- @hi-ui/use-toggle@4.0.2
|
38
|
+
- @hi-ui/use-uncontrolled-state@4.0.2
|
39
|
+
- @hi-ui/icons@4.0.16
|
40
|
+
- @hi-ui/highlighter@4.0.6
|
41
|
+
- @hi-ui/input@4.0.11
|
42
|
+
- @hi-ui/picker@4.1.2
|
43
|
+
- @hi-ui/popper@4.1.1
|
44
|
+
- @hi-ui/tree@4.5.6
|
45
|
+
- @hi-ui/array-utils@4.0.2
|
46
|
+
- @hi-ui/classname@4.0.2
|
47
|
+
- @hi-ui/env@4.0.2
|
48
|
+
- @hi-ui/func-utils@4.0.2
|
49
|
+
- @hi-ui/tree-utils@4.1.2
|
50
|
+
- @hi-ui/type-assertion@4.0.2
|
51
|
+
|
3
52
|
## 4.1.0
|
4
53
|
|
5
54
|
### Minor Changes
|
package/lib/cjs/TreeSelect.js
CHANGED
@@ -10,120 +10,94 @@
|
|
10
10
|
'use strict';
|
11
11
|
|
12
12
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
13
|
Object.defineProperty(exports, '__esModule', {
|
15
14
|
value: true
|
16
15
|
});
|
17
|
-
|
18
16
|
var tslib = require('tslib');
|
19
|
-
|
20
17
|
var React = require('react');
|
21
|
-
|
22
18
|
var classname = require('@hi-ui/classname');
|
23
|
-
|
24
19
|
var env = require('@hi-ui/env');
|
25
|
-
|
26
20
|
var useToggle = require('@hi-ui/use-toggle');
|
27
|
-
|
28
21
|
var tree = require('@hi-ui/tree');
|
29
|
-
|
30
22
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
31
|
-
|
32
23
|
var picker = require('@hi-ui/picker');
|
33
|
-
|
34
24
|
var treeUtils = require('@hi-ui/tree-utils');
|
35
|
-
|
36
25
|
var typeAssertion = require('@hi-ui/type-assertion');
|
37
|
-
|
38
26
|
var arrayUtils = require('@hi-ui/array-utils');
|
39
|
-
|
40
27
|
var highlighter = require('@hi-ui/highlighter');
|
41
|
-
|
42
28
|
var input = require('@hi-ui/input');
|
43
|
-
|
44
29
|
var icons = require('@hi-ui/icons');
|
45
|
-
|
46
30
|
var core = require('@hi-ui/core');
|
47
|
-
|
48
31
|
var funcUtils = require('@hi-ui/func-utils');
|
49
|
-
|
50
32
|
var useSearchMode = require('@hi-ui/use-search-mode');
|
51
|
-
|
52
|
-
function _interopDefaultLegacy(e) {
|
33
|
+
function _interopDefaultCompat(e) {
|
53
34
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
54
35
|
'default': e
|
55
36
|
};
|
56
37
|
}
|
57
|
-
|
58
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
59
|
-
|
38
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
60
39
|
var TREE_SELECT_PREFIX = classname.getPrefixCls('tree-select');
|
61
|
-
var DEFAULT_DATA = [];
|
62
|
-
|
40
|
+
var DEFAULT_DATA = [];
|
41
|
+
// const DEFAULT_VALUE = [] as []
|
63
42
|
var DEFAULT_FIELD_NAMES = {};
|
64
43
|
var DEFAULT_EXPANDED_IDS = [];
|
65
44
|
/**
|
66
45
|
* 树形选择器
|
67
46
|
*/
|
68
|
-
|
69
47
|
var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
70
48
|
var _a$prefixCls = _a.prefixCls,
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
49
|
+
prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
|
50
|
+
className = _a.className,
|
51
|
+
_a$data = _a.data,
|
52
|
+
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
53
|
+
dataSource = _a.dataSource,
|
54
|
+
_a$disabled = _a.disabled,
|
55
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
56
|
+
visible = _a.visible,
|
57
|
+
onOpen = _a.onOpen,
|
58
|
+
onClose = _a.onClose,
|
59
|
+
_a$fieldNames = _a.fieldNames,
|
60
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
61
|
+
_a$defaultExpandAll = _a.defaultExpandAll,
|
62
|
+
defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
|
63
|
+
expandedIdsProp = _a.expandedIds,
|
64
|
+
_a$defaultExpandedIds = _a.defaultExpandedIds,
|
65
|
+
defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
|
66
|
+
onExpand = _a.onExpand,
|
67
|
+
_a$defaultValue = _a.defaultValue,
|
68
|
+
defaultValue = _a$defaultValue === void 0 ? '' : _a$defaultValue,
|
69
|
+
valueProp = _a.value,
|
70
|
+
onChange = _a.onChange,
|
71
|
+
searchableProp = _a.searchable,
|
72
|
+
searchModeProp = _a.searchMode,
|
73
|
+
onLoadChildren = _a.onLoadChildren,
|
74
|
+
titleRender = _a.render,
|
75
|
+
filterOption = _a.filterOption,
|
76
|
+
onSearchProp = _a.onSearch,
|
77
|
+
clearable = _a.clearable,
|
78
|
+
invalid = _a.invalid,
|
79
|
+
displayRenderProp = _a.displayRender,
|
80
|
+
placeholderProp = _a.placeholder,
|
81
|
+
appearance = _a.appearance,
|
82
|
+
virtual = _a.virtual,
|
83
|
+
itemHeight = _a.itemHeight,
|
84
|
+
height = _a.height,
|
85
|
+
_a$size = _a.size,
|
86
|
+
size = _a$size === void 0 ? 'md' : _a$size,
|
87
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "visible", "onOpen", "onClose", "fieldNames", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "render", "filterOption", "onSearch", "clearable", "invalid", "displayRender", "placeholder", "appearance", "virtual", "itemHeight", "height", "size"]);
|
111
88
|
var i18n = core.useLocaleContext();
|
112
89
|
var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('treeSelect.placeholder') : placeholderProp;
|
113
|
-
|
114
90
|
var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
91
|
+
visible: visible,
|
92
|
+
disabled: disabled,
|
93
|
+
onOpen: onOpen,
|
94
|
+
onClose: onClose
|
95
|
+
}),
|
96
|
+
menuVisible = _useUncontrolledToggl[0],
|
97
|
+
menuVisibleAction = _useUncontrolledToggl[1];
|
122
98
|
/**
|
123
99
|
* 转换对象
|
124
100
|
*/
|
125
|
-
|
126
|
-
|
127
101
|
var getKeyFields = React.useCallback(function (node, key) {
|
128
102
|
return node[fieldNames[key] || key];
|
129
103
|
}, [fieldNames]);
|
@@ -135,7 +109,6 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
135
109
|
},
|
136
110
|
transform: function transform(node) {
|
137
111
|
var _a, _b;
|
138
|
-
|
139
112
|
var flattedNode = node;
|
140
113
|
var raw = node.raw;
|
141
114
|
flattedNode.id = getKeyFields(raw, 'id');
|
@@ -145,50 +118,44 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
145
118
|
return flattedNode;
|
146
119
|
}
|
147
120
|
});
|
148
|
-
}, [data, getKeyFields]);
|
121
|
+
}, [data, getKeyFields]);
|
122
|
+
// TODO: 抽离展开hook
|
149
123
|
// TODO: onLoadChildren 和 defaultExpandAll 共存时
|
150
|
-
|
151
124
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(function getDefaultExpandedIds() {
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
tryChangeExpandedIds = _useUncontrolledState[1];
|
163
|
-
|
125
|
+
// 开启默认展开全部
|
126
|
+
if (defaultExpandAll) {
|
127
|
+
return flattedData.map(function (node) {
|
128
|
+
return node.id;
|
129
|
+
});
|
130
|
+
}
|
131
|
+
return defaultExpandedIds;
|
132
|
+
}, expandedIdsProp, onExpand),
|
133
|
+
expandedIds = _useUncontrolledState[0],
|
134
|
+
tryChangeExpandedIds = _useUncontrolledState[1];
|
164
135
|
var _useUncontrolledState2 = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
|
165
|
-
|
166
|
-
|
167
|
-
|
136
|
+
value = _useUncontrolledState2[0],
|
137
|
+
tryChangeValue = _useUncontrolledState2[1];
|
168
138
|
var onSelect = React.useCallback(function (selectedId, selectedNode) {
|
169
139
|
// 关闭反选功能
|
170
140
|
if (selectedId) {
|
171
141
|
tryChangeValue(selectedId, selectedNode);
|
172
142
|
setSelectedItem(selectedNode);
|
173
|
-
}
|
174
|
-
|
175
|
-
|
143
|
+
}
|
144
|
+
// 关闭弹窗
|
176
145
|
menuVisibleAction.off();
|
177
|
-
}, [menuVisibleAction, tryChangeValue]);
|
178
|
-
|
146
|
+
}, [menuVisibleAction, tryChangeValue]);
|
147
|
+
// 搜索时临时选中缓存数据
|
179
148
|
var _useState = React.useState(null),
|
180
|
-
|
181
|
-
|
149
|
+
selectedItem = _useState[0],
|
150
|
+
setSelectedItem = _useState[1];
|
151
|
+
// ************************** 异步搜索 ************************* //
|
182
152
|
// const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
|
183
|
-
|
184
|
-
|
185
153
|
var _b = useSearchMode.useAsyncSearch({
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
154
|
+
dataSource: dataSource
|
155
|
+
}),
|
156
|
+
loading = _b.loading,
|
157
|
+
hasError = _b.hasError,
|
158
|
+
dataSourceStrategy = tslib.__rest(_b, ["loading", "hasError"]);
|
192
159
|
var customSearchStrategy = useSearchMode.useTreeCustomSearch({
|
193
160
|
data: data,
|
194
161
|
filterOption: filterOption
|
@@ -204,27 +171,23 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
204
171
|
flattedData: flattedData,
|
205
172
|
searchMode: searchModeProp
|
206
173
|
});
|
207
|
-
|
208
174
|
var _useSearchMode = useSearchMode.useSearchMode({
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
175
|
+
searchable: searchableProp,
|
176
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
|
177
|
+
}),
|
178
|
+
stateInSearch = _useSearchMode.state,
|
179
|
+
setStateInSearch = _useSearchMode.setStateInSearch,
|
180
|
+
searchable = _useSearchMode.searchable,
|
181
|
+
searchMode = _useSearchMode.searchMode,
|
182
|
+
onSearch = _useSearchMode.onSearch,
|
183
|
+
searchValue = _useSearchMode.keyword;
|
184
|
+
// 拦截 titleRender,自定义高亮展示
|
220
185
|
var proxyTitleRender = React.useCallback(function (node) {
|
221
186
|
if (titleRender) {
|
222
187
|
var _ret = titleRender(node);
|
223
|
-
|
224
188
|
if (_ret && _ret !== true) return _ret;
|
225
|
-
}
|
226
|
-
|
227
|
-
|
189
|
+
}
|
190
|
+
// 本地搜索执行默认高亮规则
|
228
191
|
var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
|
229
192
|
var ret = highlight ? /*#__PURE__*/React__default["default"].createElement(highlighter.Highlighter, {
|
230
193
|
keyword: searchValue
|
@@ -243,14 +206,13 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
243
206
|
});
|
244
207
|
} : tryChangeExpandedIds,
|
245
208
|
render: proxyTitleRender
|
246
|
-
};
|
247
|
-
|
209
|
+
};
|
210
|
+
// 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
248
211
|
var mergedData = React.useMemo(function () {
|
249
212
|
if (selectedItem) {
|
250
213
|
var nextData = [selectedItem].concat(flattedData);
|
251
214
|
return arrayUtils.uniqBy(nextData, 'id');
|
252
215
|
}
|
253
|
-
|
254
216
|
return flattedData;
|
255
217
|
}, [selectedItem, flattedData]);
|
256
218
|
var cls = classname.cx(prefixCls, className);
|
@@ -268,7 +230,8 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
268
230
|
searchable: searchable,
|
269
231
|
onSearch: funcUtils.callAllFuncs(onSearchProp, onSearch),
|
270
232
|
loading: rest.loading !== undefined ? rest.loading : loading,
|
271
|
-
trigger: /*#__PURE__*/React__default["default"].createElement(input.MockInput
|
233
|
+
trigger: /*#__PURE__*/React__default["default"].createElement(input.MockInput
|
234
|
+
// disabled={disabled}
|
272
235
|
, {
|
273
236
|
// disabled={disabled}
|
274
237
|
size: size,
|
@@ -284,7 +247,7 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
284
247
|
invalid: invalid,
|
285
248
|
appearance: appearance
|
286
249
|
})
|
287
|
-
}), typeAssertion.isArrayNonEmpty(treeProps.data) ? /*#__PURE__*/React__default["default"].createElement(tree.Tree, Object.assign({
|
250
|
+
}), typeAssertion.isArrayNonEmpty(treeProps.data) ? ( /*#__PURE__*/React__default["default"].createElement(tree.Tree, Object.assign({
|
288
251
|
size: 'md',
|
289
252
|
className: prefixCls + "__tree",
|
290
253
|
selectable: true,
|
@@ -297,11 +260,9 @@ var TreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
297
260
|
virtual: virtual,
|
298
261
|
itemHeight: itemHeight,
|
299
262
|
height: height
|
300
|
-
}, treeProps)) : null);
|
263
|
+
}, treeProps))) : null);
|
301
264
|
});
|
302
|
-
|
303
265
|
if (env.__DEV__) {
|
304
266
|
TreeSelect.displayName = 'TreeSelect';
|
305
267
|
}
|
306
|
-
|
307
268
|
exports.TreeSelect = TreeSelect;
|
package/lib/cjs/index.js
CHANGED
@@ -12,10 +12,7 @@
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
|
16
15
|
require('./styles/index.scss.js');
|
17
|
-
|
18
16
|
var TreeSelect = require('./TreeSelect.js');
|
19
|
-
|
20
17
|
exports.TreeSelect = TreeSelect.TreeSelect;
|
21
18
|
exports["default"] = TreeSelect.TreeSelect;
|
package/lib/esm/TreeSelect.js
CHANGED
@@ -25,72 +25,67 @@ import { useLocaleContext } from '@hi-ui/core';
|
|
25
25
|
import { callAllFuncs } from '@hi-ui/func-utils';
|
26
26
|
import { useAsyncSearch, useTreeCustomSearch, useFilterSearch, useHighlightSearch, useSearchMode } from '@hi-ui/use-search-mode';
|
27
27
|
var TREE_SELECT_PREFIX = getPrefixCls('tree-select');
|
28
|
-
var DEFAULT_DATA = [];
|
29
|
-
|
28
|
+
var DEFAULT_DATA = [];
|
29
|
+
// const DEFAULT_VALUE = [] as []
|
30
30
|
var DEFAULT_FIELD_NAMES = {};
|
31
31
|
var DEFAULT_EXPANDED_IDS = [];
|
32
32
|
/**
|
33
33
|
* 树形选择器
|
34
34
|
*/
|
35
|
-
|
36
35
|
var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
37
36
|
var _a$prefixCls = _a.prefixCls,
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
37
|
+
prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
|
38
|
+
className = _a.className,
|
39
|
+
_a$data = _a.data,
|
40
|
+
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
41
|
+
dataSource = _a.dataSource,
|
42
|
+
_a$disabled = _a.disabled,
|
43
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
44
|
+
visible = _a.visible,
|
45
|
+
onOpen = _a.onOpen,
|
46
|
+
onClose = _a.onClose,
|
47
|
+
_a$fieldNames = _a.fieldNames,
|
48
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
49
|
+
_a$defaultExpandAll = _a.defaultExpandAll,
|
50
|
+
defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
|
51
|
+
expandedIdsProp = _a.expandedIds,
|
52
|
+
_a$defaultExpandedIds = _a.defaultExpandedIds,
|
53
|
+
defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
|
54
|
+
onExpand = _a.onExpand,
|
55
|
+
_a$defaultValue = _a.defaultValue,
|
56
|
+
defaultValue = _a$defaultValue === void 0 ? '' : _a$defaultValue,
|
57
|
+
valueProp = _a.value,
|
58
|
+
onChange = _a.onChange,
|
59
|
+
searchableProp = _a.searchable,
|
60
|
+
searchModeProp = _a.searchMode,
|
61
|
+
onLoadChildren = _a.onLoadChildren,
|
62
|
+
titleRender = _a.render,
|
63
|
+
filterOption = _a.filterOption,
|
64
|
+
onSearchProp = _a.onSearch,
|
65
|
+
clearable = _a.clearable,
|
66
|
+
invalid = _a.invalid,
|
67
|
+
displayRenderProp = _a.displayRender,
|
68
|
+
placeholderProp = _a.placeholder,
|
69
|
+
appearance = _a.appearance,
|
70
|
+
virtual = _a.virtual,
|
71
|
+
itemHeight = _a.itemHeight,
|
72
|
+
height = _a.height,
|
73
|
+
_a$size = _a.size,
|
74
|
+
size = _a$size === void 0 ? 'md' : _a$size,
|
75
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "visible", "onOpen", "onClose", "fieldNames", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "render", "filterOption", "onSearch", "clearable", "invalid", "displayRender", "placeholder", "appearance", "virtual", "itemHeight", "height", "size"]);
|
78
76
|
var i18n = useLocaleContext();
|
79
77
|
var placeholder = isUndef(placeholderProp) ? i18n.get('treeSelect.placeholder') : placeholderProp;
|
80
|
-
|
81
78
|
var _useUncontrolledToggl = useUncontrolledToggle({
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
79
|
+
visible: visible,
|
80
|
+
disabled: disabled,
|
81
|
+
onOpen: onOpen,
|
82
|
+
onClose: onClose
|
83
|
+
}),
|
84
|
+
menuVisible = _useUncontrolledToggl[0],
|
85
|
+
menuVisibleAction = _useUncontrolledToggl[1];
|
89
86
|
/**
|
90
87
|
* 转换对象
|
91
88
|
*/
|
92
|
-
|
93
|
-
|
94
89
|
var getKeyFields = useCallback(function (node, key) {
|
95
90
|
return node[fieldNames[key] || key];
|
96
91
|
}, [fieldNames]);
|
@@ -102,7 +97,6 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
102
97
|
},
|
103
98
|
transform: function transform(node) {
|
104
99
|
var _a, _b;
|
105
|
-
|
106
100
|
var flattedNode = node;
|
107
101
|
var raw = node.raw;
|
108
102
|
flattedNode.id = getKeyFields(raw, 'id');
|
@@ -112,50 +106,44 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
112
106
|
return flattedNode;
|
113
107
|
}
|
114
108
|
});
|
115
|
-
}, [data, getKeyFields]);
|
109
|
+
}, [data, getKeyFields]);
|
110
|
+
// TODO: 抽离展开hook
|
116
111
|
// TODO: onLoadChildren 和 defaultExpandAll 共存时
|
117
|
-
|
118
112
|
var _useUncontrolledState = useUncontrolledState(function getDefaultExpandedIds() {
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
tryChangeExpandedIds = _useUncontrolledState[1];
|
130
|
-
|
113
|
+
// 开启默认展开全部
|
114
|
+
if (defaultExpandAll) {
|
115
|
+
return flattedData.map(function (node) {
|
116
|
+
return node.id;
|
117
|
+
});
|
118
|
+
}
|
119
|
+
return defaultExpandedIds;
|
120
|
+
}, expandedIdsProp, onExpand),
|
121
|
+
expandedIds = _useUncontrolledState[0],
|
122
|
+
tryChangeExpandedIds = _useUncontrolledState[1];
|
131
123
|
var _useUncontrolledState2 = useUncontrolledState(defaultValue, valueProp, onChange),
|
132
|
-
|
133
|
-
|
134
|
-
|
124
|
+
value = _useUncontrolledState2[0],
|
125
|
+
tryChangeValue = _useUncontrolledState2[1];
|
135
126
|
var onSelect = useCallback(function (selectedId, selectedNode) {
|
136
127
|
// 关闭反选功能
|
137
128
|
if (selectedId) {
|
138
129
|
tryChangeValue(selectedId, selectedNode);
|
139
130
|
setSelectedItem(selectedNode);
|
140
|
-
}
|
141
|
-
|
142
|
-
|
131
|
+
}
|
132
|
+
// 关闭弹窗
|
143
133
|
menuVisibleAction.off();
|
144
|
-
}, [menuVisibleAction, tryChangeValue]);
|
145
|
-
|
134
|
+
}, [menuVisibleAction, tryChangeValue]);
|
135
|
+
// 搜索时临时选中缓存数据
|
146
136
|
var _useState = useState(null),
|
147
|
-
|
148
|
-
|
137
|
+
selectedItem = _useState[0],
|
138
|
+
setSelectedItem = _useState[1];
|
139
|
+
// ************************** 异步搜索 ************************* //
|
149
140
|
// const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
|
150
|
-
|
151
|
-
|
152
141
|
var _b = useAsyncSearch({
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
142
|
+
dataSource: dataSource
|
143
|
+
}),
|
144
|
+
loading = _b.loading,
|
145
|
+
hasError = _b.hasError,
|
146
|
+
dataSourceStrategy = __rest(_b, ["loading", "hasError"]);
|
159
147
|
var customSearchStrategy = useTreeCustomSearch({
|
160
148
|
data: data,
|
161
149
|
filterOption: filterOption
|
@@ -171,27 +159,23 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
171
159
|
flattedData: flattedData,
|
172
160
|
searchMode: searchModeProp
|
173
161
|
});
|
174
|
-
|
175
162
|
var _useSearchMode = useSearchMode({
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
163
|
+
searchable: searchableProp,
|
164
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
|
165
|
+
}),
|
166
|
+
stateInSearch = _useSearchMode.state,
|
167
|
+
setStateInSearch = _useSearchMode.setStateInSearch,
|
168
|
+
searchable = _useSearchMode.searchable,
|
169
|
+
searchMode = _useSearchMode.searchMode,
|
170
|
+
onSearch = _useSearchMode.onSearch,
|
171
|
+
searchValue = _useSearchMode.keyword;
|
172
|
+
// 拦截 titleRender,自定义高亮展示
|
187
173
|
var proxyTitleRender = useCallback(function (node) {
|
188
174
|
if (titleRender) {
|
189
175
|
var _ret = titleRender(node);
|
190
|
-
|
191
176
|
if (_ret && _ret !== true) return _ret;
|
192
|
-
}
|
193
|
-
|
194
|
-
|
177
|
+
}
|
178
|
+
// 本地搜索执行默认高亮规则
|
195
179
|
var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
|
196
180
|
var ret = highlight ? /*#__PURE__*/React.createElement(Highlighter, {
|
197
181
|
keyword: searchValue
|
@@ -210,14 +194,13 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
210
194
|
});
|
211
195
|
} : tryChangeExpandedIds,
|
212
196
|
render: proxyTitleRender
|
213
|
-
};
|
214
|
-
|
197
|
+
};
|
198
|
+
// 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
215
199
|
var mergedData = useMemo(function () {
|
216
200
|
if (selectedItem) {
|
217
201
|
var nextData = [selectedItem].concat(flattedData);
|
218
202
|
return uniqBy(nextData, 'id');
|
219
203
|
}
|
220
|
-
|
221
204
|
return flattedData;
|
222
205
|
}, [selectedItem, flattedData]);
|
223
206
|
var cls = cx(prefixCls, className);
|
@@ -235,7 +218,8 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
235
218
|
searchable: searchable,
|
236
219
|
onSearch: callAllFuncs(onSearchProp, onSearch),
|
237
220
|
loading: rest.loading !== undefined ? rest.loading : loading,
|
238
|
-
trigger: /*#__PURE__*/React.createElement(MockInput
|
221
|
+
trigger: /*#__PURE__*/React.createElement(MockInput
|
222
|
+
// disabled={disabled}
|
239
223
|
, {
|
240
224
|
// disabled={disabled}
|
241
225
|
size: size,
|
@@ -251,7 +235,7 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
251
235
|
invalid: invalid,
|
252
236
|
appearance: appearance
|
253
237
|
})
|
254
|
-
}), isArrayNonEmpty(treeProps.data) ? /*#__PURE__*/React.createElement(Tree, Object.assign({
|
238
|
+
}), isArrayNonEmpty(treeProps.data) ? ( /*#__PURE__*/React.createElement(Tree, Object.assign({
|
255
239
|
size: 'md',
|
256
240
|
className: prefixCls + "__tree",
|
257
241
|
selectable: true,
|
@@ -264,11 +248,9 @@ var TreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
264
248
|
virtual: virtual,
|
265
249
|
itemHeight: itemHeight,
|
266
250
|
height: height
|
267
|
-
}, treeProps)) : null);
|
251
|
+
}, treeProps))) : null);
|
268
252
|
});
|
269
|
-
|
270
253
|
if (__DEV__) {
|
271
254
|
TreeSelect.displayName = 'TreeSelect';
|
272
255
|
}
|
273
|
-
|
274
256
|
export { TreeSelect };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hi-ui/tree-select",
|
3
|
-
"version": "4.1.
|
3
|
+
"version": "4.1.2",
|
4
4
|
"description": "A sub-package for @hi-ui/hiui.",
|
5
5
|
"keywords": [],
|
6
6
|
"author": "HiUI <mi-hiui@xiaomi.com>",
|
@@ -43,31 +43,31 @@
|
|
43
43
|
"url": "https://github.com/XiaoMi/hiui/issues"
|
44
44
|
},
|
45
45
|
"dependencies": {
|
46
|
-
"@hi-ui/array-utils": "^4.0.
|
47
|
-
"@hi-ui/classname": "^4.0.
|
48
|
-
"@hi-ui/env": "^4.0.
|
49
|
-
"@hi-ui/func-utils": "^4.0.
|
50
|
-
"@hi-ui/highlighter": "^4.0.
|
51
|
-
"@hi-ui/icons": "^4.0.
|
52
|
-
"@hi-ui/input": "^4.0.
|
53
|
-
"@hi-ui/picker": "^4.
|
54
|
-
"@hi-ui/popper": "^4.
|
55
|
-
"@hi-ui/tree": "^4.5.
|
56
|
-
"@hi-ui/tree-utils": "^4.
|
57
|
-
"@hi-ui/type-assertion": "^4.0.
|
58
|
-
"@hi-ui/use-data-source": "^4.0.
|
59
|
-
"@hi-ui/use-search-mode": "^4.
|
60
|
-
"@hi-ui/use-toggle": "^4.0.
|
61
|
-
"@hi-ui/use-uncontrolled-state": "^4.0.
|
46
|
+
"@hi-ui/array-utils": "^4.0.3",
|
47
|
+
"@hi-ui/classname": "^4.0.3",
|
48
|
+
"@hi-ui/env": "^4.0.3",
|
49
|
+
"@hi-ui/func-utils": "^4.0.3",
|
50
|
+
"@hi-ui/highlighter": "^4.0.7",
|
51
|
+
"@hi-ui/icons": "^4.0.17",
|
52
|
+
"@hi-ui/input": "^4.0.12",
|
53
|
+
"@hi-ui/picker": "^4.1.3",
|
54
|
+
"@hi-ui/popper": "^4.1.2",
|
55
|
+
"@hi-ui/tree": "^4.5.7",
|
56
|
+
"@hi-ui/tree-utils": "^4.1.3",
|
57
|
+
"@hi-ui/type-assertion": "^4.0.3",
|
58
|
+
"@hi-ui/use-data-source": "^4.0.3",
|
59
|
+
"@hi-ui/use-search-mode": "^4.1.3",
|
60
|
+
"@hi-ui/use-toggle": "^4.0.3",
|
61
|
+
"@hi-ui/use-uncontrolled-state": "^4.0.3"
|
62
62
|
},
|
63
63
|
"peerDependencies": {
|
64
|
-
"@hi-ui/core": ">=4.0.
|
64
|
+
"@hi-ui/core": ">=4.0.7",
|
65
65
|
"react": ">=16.8.6",
|
66
66
|
"react-dom": ">=16.8.6"
|
67
67
|
},
|
68
68
|
"devDependencies": {
|
69
|
-
"@hi-ui/core": "^4.0.
|
70
|
-
"@hi-ui/core-css": "^4.1.
|
69
|
+
"@hi-ui/core": "^4.0.7",
|
70
|
+
"@hi-ui/core-css": "^4.1.4",
|
71
71
|
"react": "^17.0.1",
|
72
72
|
"react-dom": "^17.0.1"
|
73
73
|
}
|