@hi-ui/check-tree-select 4.0.0-alpha.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/LICENSE +21 -0
- package/README.md +11 -0
- package/lib/cjs/CheckTreeSelect.js +346 -0
- package/lib/cjs/CheckTreeSelect.js.map +1 -0
- package/lib/cjs/index.js +23 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/styles/index.scss.js +22 -0
- package/lib/cjs/styles/index.scss.js.map +1 -0
- package/lib/esm/CheckTreeSelect.js +314 -0
- package/lib/esm/CheckTreeSelect.js.map +1 -0
- package/lib/esm/index.js +12 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/styles/index.scss.js +17 -0
- package/lib/esm/styles/index.scss.js.map +1 -0
- package/lib/types/CheckTreeSelect.d.ts +135 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/types.d.ts +57 -0
- package/package.json +73 -0
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018 Xiaomi
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
@@ -0,0 +1,346 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
'use strict';
|
11
|
+
|
12
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
+
|
14
|
+
Object.defineProperty(exports, '__esModule', {
|
15
|
+
value: true
|
16
|
+
});
|
17
|
+
|
18
|
+
var tslib = require('tslib');
|
19
|
+
|
20
|
+
var React = require('react');
|
21
|
+
|
22
|
+
var classname = require('@hi-ui/classname');
|
23
|
+
|
24
|
+
var env = require('@hi-ui/env');
|
25
|
+
|
26
|
+
var useToggle = require('@hi-ui/use-toggle');
|
27
|
+
|
28
|
+
var tree = require('@hi-ui/tree');
|
29
|
+
|
30
|
+
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
31
|
+
|
32
|
+
var picker = require('@hi-ui/picker');
|
33
|
+
|
34
|
+
var treeUtils = require('@hi-ui/tree-utils');
|
35
|
+
|
36
|
+
var typeAssertion = require('@hi-ui/type-assertion');
|
37
|
+
|
38
|
+
var lodash = require('lodash');
|
39
|
+
|
40
|
+
var highlighter = require('@hi-ui/highlighter');
|
41
|
+
|
42
|
+
var tagInput = require('@hi-ui/tag-input');
|
43
|
+
|
44
|
+
var icons = require('@hi-ui/icons');
|
45
|
+
|
46
|
+
var useSearchMode = require('@hi-ui/use-search-mode');
|
47
|
+
|
48
|
+
function _interopDefaultLegacy(e) {
|
49
|
+
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
50
|
+
'default': e
|
51
|
+
};
|
52
|
+
}
|
53
|
+
|
54
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
55
|
+
|
56
|
+
var TREE_SELECT_PREFIX = classname.getPrefixCls('check-tree-select');
|
57
|
+
var DEFAULT_DATA = [];
|
58
|
+
var DEFAULT_VALUE = [];
|
59
|
+
var DEFAULT_FIELD_NAMES = {};
|
60
|
+
var DEFAULT_EXPANDED_IDS = [];
|
61
|
+
/**
|
62
|
+
* TODO: What is CheckTreeSelect
|
63
|
+
*/
|
64
|
+
|
65
|
+
var CheckTreeSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
66
|
+
var _a$prefixCls = _a.prefixCls,
|
67
|
+
prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
|
68
|
+
className = _a.className,
|
69
|
+
_a$data = _a.data,
|
70
|
+
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
71
|
+
dataSource = _a.dataSource,
|
72
|
+
_a$fieldNames = _a.fieldNames,
|
73
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
74
|
+
_a$defaultExpandAll = _a.defaultExpandAll,
|
75
|
+
defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
|
76
|
+
expandedIdsProp = _a.expandedIds,
|
77
|
+
_a$defaultExpandedIds = _a.defaultExpandedIds,
|
78
|
+
defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
|
79
|
+
onExpand = _a.onExpand,
|
80
|
+
_a$defaultValue = _a.defaultValue,
|
81
|
+
defaultValue = _a$defaultValue === void 0 ? DEFAULT_VALUE : _a$defaultValue,
|
82
|
+
valueProp = _a.value,
|
83
|
+
onChange = _a.onChange,
|
84
|
+
searchableProp = _a.searchable,
|
85
|
+
searchModeProp = _a.searchMode,
|
86
|
+
onLoadChildren = _a.onLoadChildren,
|
87
|
+
titleRender = _a.titleRender,
|
88
|
+
filterOption = _a.filterOption,
|
89
|
+
clearable = _a.clearable,
|
90
|
+
invalid = _a.invalid,
|
91
|
+
displayRender = _a.displayRender,
|
92
|
+
_a$placeholder = _a.placeholder,
|
93
|
+
placeholder = _a$placeholder === void 0 ? '请选择' : _a$placeholder,
|
94
|
+
appearance = _a.appearance,
|
95
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "fieldNames", "showCheckedMode", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "titleRender", "filterOption", "clearable", "invalid", "displayRender", "placeholder", "appearance"]);
|
96
|
+
|
97
|
+
var _useToggle = useToggle.useToggle(),
|
98
|
+
menuVisible = _useToggle[0],
|
99
|
+
menuVisibleAction = _useToggle[1]; // const [viewSelected, setViewSelected] = useState(false)
|
100
|
+
|
101
|
+
/**
|
102
|
+
* 转换对象
|
103
|
+
*/
|
104
|
+
|
105
|
+
|
106
|
+
var getKeyFields = React.useCallback(function (node, key) {
|
107
|
+
return node[fieldNames[key] || key];
|
108
|
+
}, [fieldNames]);
|
109
|
+
var flattedData = React.useMemo(function () {
|
110
|
+
return treeUtils.flattenTree(data, function (node) {
|
111
|
+
node.id = getKeyFields(node.raw, 'id'); // @ts-ignore
|
112
|
+
|
113
|
+
node.title = getKeyFields(node.raw, 'title');
|
114
|
+
return node;
|
115
|
+
});
|
116
|
+
}, [data, getKeyFields]); // TODO: 抽离展开hook
|
117
|
+
// TODO: onLoadChildren 和 defaultExpandAll 共存时
|
118
|
+
|
119
|
+
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(function getDefaultExpandedIds() {
|
120
|
+
// 开启默认展开全部
|
121
|
+
if (defaultExpandAll) {
|
122
|
+
return flattedData.map(function (node) {
|
123
|
+
return node.id;
|
124
|
+
});
|
125
|
+
}
|
126
|
+
|
127
|
+
return defaultExpandedIds;
|
128
|
+
}, expandedIdsProp, onExpand),
|
129
|
+
expandedIds = _useUncontrolledState[0],
|
130
|
+
tryChangeExpandedIds = _useUncontrolledState[1];
|
131
|
+
|
132
|
+
var _useUncontrolledState2 = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
|
133
|
+
value = _useUncontrolledState2[0],
|
134
|
+
tryChangeValue = _useUncontrolledState2[1]; // 搜索时临时选中缓存数据
|
135
|
+
|
136
|
+
|
137
|
+
var _useState = React.useState([]),
|
138
|
+
selectedItems = _useState[0],
|
139
|
+
setSelectedItems = _useState[1];
|
140
|
+
|
141
|
+
var onSelect = React.useCallback(function (_ref, node, checked) {
|
142
|
+
var checkedIds = _ref.checkedIds;
|
143
|
+
tryChangeValue(checkedIds, node); // 存取异步选中数据
|
144
|
+
|
145
|
+
setSelectedItems(function (prev) {
|
146
|
+
var next = [].concat(prev);
|
147
|
+
|
148
|
+
if (checked) {
|
149
|
+
next.push(node);
|
150
|
+
} else {
|
151
|
+
next.filter(function (item) {
|
152
|
+
return item.id !== node.id;
|
153
|
+
});
|
154
|
+
}
|
155
|
+
|
156
|
+
return next;
|
157
|
+
});
|
158
|
+
}, [tryChangeValue]); // ************************** 异步搜索 ************************* //
|
159
|
+
// const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
|
160
|
+
|
161
|
+
var _b = useSearchMode.useAsyncSearch({
|
162
|
+
dataSource: dataSource
|
163
|
+
}),
|
164
|
+
loading = _b.loading,
|
165
|
+
hasError = _b.hasError,
|
166
|
+
dataSourceStrategy = tslib.__rest(_b, ["loading", "hasError"]);
|
167
|
+
|
168
|
+
var customSearchStrategy = useSearchMode.useTreeCustomSearch({
|
169
|
+
data: data,
|
170
|
+
filterOption: filterOption
|
171
|
+
});
|
172
|
+
var filterSearchStrategy = useSearchMode.useFilterSearch({
|
173
|
+
data: data,
|
174
|
+
flattedData: flattedData,
|
175
|
+
searchMode: searchModeProp
|
176
|
+
});
|
177
|
+
var highlightSearchStrategy = useSearchMode.useHighlightSearch({
|
178
|
+
data: data,
|
179
|
+
flattedData: flattedData,
|
180
|
+
searchMode: searchModeProp
|
181
|
+
});
|
182
|
+
|
183
|
+
var _useSearchMode = useSearchMode.useSearchMode({
|
184
|
+
searchable: searchableProp,
|
185
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
|
186
|
+
}),
|
187
|
+
stateInSearch = _useSearchMode.state,
|
188
|
+
setStateInSearch = _useSearchMode.setStateInSearch,
|
189
|
+
searchable = _useSearchMode.searchable,
|
190
|
+
searchMode = _useSearchMode.searchMode,
|
191
|
+
onSearch = _useSearchMode.onSearch,
|
192
|
+
searchValue = _useSearchMode.keyword; // 拦截 titleRender,自定义高亮展示
|
193
|
+
|
194
|
+
|
195
|
+
var proxyTitleRender = React.useCallback(function (node) {
|
196
|
+
if (titleRender) {
|
197
|
+
var _ret = titleRender(node);
|
198
|
+
|
199
|
+
if (_ret && _ret !== true) return _ret;
|
200
|
+
} // 本地搜索执行默认高亮规则
|
201
|
+
|
202
|
+
|
203
|
+
var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
|
204
|
+
var ret = highlight ? /*#__PURE__*/React__default['default'].createElement(highlighter.Highlighter, {
|
205
|
+
keyword: searchValue
|
206
|
+
}, node.title) : true;
|
207
|
+
return ret;
|
208
|
+
}, [titleRender, searchValue, searchMode]);
|
209
|
+
var shouldUseSearch = !!searchValue && !hasError;
|
210
|
+
var treeProps = {
|
211
|
+
data: shouldUseSearch ? stateInSearch.data : data,
|
212
|
+
expandedIds: shouldUseSearch ? stateInSearch.expandedIds : expandedIds,
|
213
|
+
onExpand: shouldUseSearch ? function (ids) {
|
214
|
+
return setStateInSearch(function (prev) {
|
215
|
+
return Object.assign(Object.assign({}, prev), {
|
216
|
+
expandedIds: ids
|
217
|
+
});
|
218
|
+
});
|
219
|
+
} : tryChangeExpandedIds,
|
220
|
+
titleRender: proxyTitleRender
|
221
|
+
}; // 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
222
|
+
|
223
|
+
var mergedData = React.useMemo(function () {
|
224
|
+
var nextData = selectedItems.concat(flattedData);
|
225
|
+
return lodash.uniqBy(nextData, 'id');
|
226
|
+
}, [selectedItems, flattedData]);
|
227
|
+
var cls = classname.cx(prefixCls, className); // 过滤掉未选中的数据
|
228
|
+
// const tagList = useMemo(() => {
|
229
|
+
// // @ts-ignore
|
230
|
+
// const [semiCheckedIds] = getSemiCheckedIdsWithSet(flattedData, (id) => value.includes(id))
|
231
|
+
// const ids = Array.from(new Set([...semiCheckedIds, ...value]))
|
232
|
+
// return flattedData.filter((item) => ids.includes(item.id))
|
233
|
+
// }, [value, flattedData])
|
234
|
+
|
235
|
+
return /*#__PURE__*/React__default['default'].createElement(picker.Picker, Object.assign({
|
236
|
+
ref: ref,
|
237
|
+
className: cls
|
238
|
+
}, rest, {
|
239
|
+
visible: menuVisible,
|
240
|
+
onOpen: function onOpen() {
|
241
|
+
// setViewSelected(false)
|
242
|
+
menuVisibleAction.on();
|
243
|
+
},
|
244
|
+
onClose: menuVisibleAction.off,
|
245
|
+
// value={value}
|
246
|
+
// onChange={tryChangeValue}
|
247
|
+
// data={mergedData}
|
248
|
+
searchable: searchable,
|
249
|
+
onSearch: onSearch,
|
250
|
+
loading: loading,
|
251
|
+
trigger: /*#__PURE__*/React__default['default'].createElement(tagInput.TagInputMock // ref={targetElementRef}
|
252
|
+
// onClick={openMenu}
|
253
|
+
// disabled={disabled}
|
254
|
+
, {
|
255
|
+
// ref={targetElementRef}
|
256
|
+
// onClick={openMenu}
|
257
|
+
// disabled={disabled}
|
258
|
+
clearable: clearable,
|
259
|
+
placeholder: placeholder,
|
260
|
+
// @ts-ignore
|
261
|
+
displayRender: displayRender,
|
262
|
+
suffix: menuVisible ? /*#__PURE__*/React__default['default'].createElement(icons.UpOutlined, null) : /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, null),
|
263
|
+
focused: menuVisible,
|
264
|
+
appearance: appearance,
|
265
|
+
value: value,
|
266
|
+
onChange: tryChangeValue,
|
267
|
+
data: mergedData,
|
268
|
+
// @ts-ignore
|
269
|
+
invalid: invalid,
|
270
|
+
onExpand: function onExpand() {
|
271
|
+
// setViewSelected(true)
|
272
|
+
menuVisibleAction.on();
|
273
|
+
}
|
274
|
+
})
|
275
|
+
}), typeAssertion.isArrayNonEmpty(treeProps.data) ? /*#__PURE__*/React__default['default'].createElement(tree.Tree, Object.assign({
|
276
|
+
className: prefixCls + "__tree",
|
277
|
+
selectable: false,
|
278
|
+
checkable: true,
|
279
|
+
// checkOnSelect
|
280
|
+
checkedIds: value,
|
281
|
+
onCheck: onSelect,
|
282
|
+
// TODO: 支持 fieldNames
|
283
|
+
// 禁用时被选中的样式处理
|
284
|
+
onLoadChildren: onLoadChildren
|
285
|
+
}, treeProps)) : null);
|
286
|
+
});
|
287
|
+
|
288
|
+
if (env.__DEV__) {
|
289
|
+
CheckTreeSelect.displayName = 'CheckTreeSelect';
|
290
|
+
}
|
291
|
+
|
292
|
+
var ALWAYS_ALLOW = function ALWAYS_ALLOW() {
|
293
|
+
return true;
|
294
|
+
};
|
295
|
+
/**
|
296
|
+
* 在 checkedIdsSet 为数据合法的情况下,查找所有的半选中态的节点 ids
|
297
|
+
*
|
298
|
+
* @param checkedIdsSet
|
299
|
+
* @param flattedData
|
300
|
+
* @returns
|
301
|
+
*/
|
302
|
+
|
303
|
+
|
304
|
+
var getSemiCheckedIdsWithSet = function getSemiCheckedIdsWithSet(flattedData, isChecked, allowCheck) {
|
305
|
+
if (allowCheck === void 0) {
|
306
|
+
allowCheck = ALWAYS_ALLOW;
|
307
|
+
}
|
308
|
+
|
309
|
+
var semiCheckedNodes = [];
|
310
|
+
var semiCheckedIdsSet = new Set();
|
311
|
+
var parentId;
|
312
|
+
var parent;
|
313
|
+
flattedData.forEach(function (node) {
|
314
|
+
parent = node.parent;
|
315
|
+
|
316
|
+
if (parent && parent.id !== undefined) {
|
317
|
+
if (!allowCheck(parent)) return;
|
318
|
+
parentId = parent.id;
|
319
|
+
if (semiCheckedIdsSet.has(parentId)) return; // 父节点没选中,但是当前节点被选中,则视为半选
|
320
|
+
|
321
|
+
if (!isChecked(parentId) && isChecked(node.id)) {
|
322
|
+
semiCheckedIdsSet.add(parentId);
|
323
|
+
semiCheckedNodes.push(parent);
|
324
|
+
}
|
325
|
+
}
|
326
|
+
}); // 自下而上设置半选态
|
327
|
+
|
328
|
+
semiCheckedNodes.forEach(function (node) {
|
329
|
+
parent = node.parent;
|
330
|
+
|
331
|
+
while (parent && parent.id !== undefined) {
|
332
|
+
if (!allowCheck(parent)) return;
|
333
|
+
parentId = parent.id; // 可能存在兄弟节点,共同祖先需要去重,避免重复计算
|
334
|
+
|
335
|
+
if (semiCheckedIdsSet.has(parentId)) return;
|
336
|
+
semiCheckedIdsSet.add(parentId);
|
337
|
+
parent = parent.parent;
|
338
|
+
}
|
339
|
+
});
|
340
|
+
var semiCheckedIds = Array.from(semiCheckedIdsSet);
|
341
|
+
return [semiCheckedIds, semiCheckedIdsSet];
|
342
|
+
};
|
343
|
+
|
344
|
+
exports.CheckTreeSelect = CheckTreeSelect;
|
345
|
+
exports.getSemiCheckedIdsWithSet = getSemiCheckedIdsWithSet;
|
346
|
+
//# sourceMappingURL=CheckTreeSelect.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"CheckTreeSelect.js","sources":["../../src/CheckTreeSelect.tsx"],"sourcesContent":[null],"names":["TREE_SELECT_PREFIX","getPrefixCls","DEFAULT_DATA","DEFAULT_VALUE","DEFAULT_FIELD_NAMES","DEFAULT_EXPANDED_IDS","CheckTreeSelect","forwardRef","_a","ref","prefixCls","className","data","dataSource","fieldNames","defaultExpandAll","expandedIdsProp","expandedIds","defaultExpandedIds","onExpand","defaultValue","valueProp","value","onChange","searchableProp","searchable","searchModeProp","searchMode","onLoadChildren","titleRender","filterOption","clearable","invalid","displayRender","placeholder","appearance","rest","useToggle","menuVisible","menuVisibleAction","getKeyFields","useCallback","node","key","flattedData","useMemo","flattenTree","id","raw","title","useUncontrolledState","getDefaultExpandedIds","map","tryChangeExpandedIds","tryChangeValue","useState","selectedItems","setSelectedItems","onSelect","checked","checkedIds","prev","next","push","filter","item","_b","useAsyncSearch","loading","hasError","dataSourceStrategy","customSearchStrategy","useTreeCustomSearch","filterSearchStrategy","useFilterSearch","highlightSearchStrategy","useHighlightSearch","useSearchMode","strategies","stateInSearch","state","setStateInSearch","onSearch","searchValue","keyword","proxyTitleRender","ret","highlight","React","Highlighter","shouldUseSearch","treeProps","ids","mergedData","nextData","concat","uniqBy","cls","cx","Picker","visible","onOpen","on","onClose","off","trigger","TagInputMock","suffix","UpOutlined","DownOutlined","focused","isArrayNonEmpty","Tree","selectable","checkable","onCheck","__DEV__","displayName","ALWAYS_ALLOW","getSemiCheckedIdsWithSet","isChecked","allowCheck","semiCheckedNodes","semiCheckedIdsSet","Set","parentId","parent","forEach","undefined","has","add","semiCheckedIds","Array","from"],"mappings":"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"}
|
package/lib/cjs/index.js
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
|
16
|
+
require('./styles/index.scss.js');
|
17
|
+
|
18
|
+
var CheckTreeSelect = require('./CheckTreeSelect.js');
|
19
|
+
|
20
|
+
exports.CheckTreeSelect = CheckTreeSelect.CheckTreeSelect;
|
21
|
+
exports["default"] = CheckTreeSelect.CheckTreeSelect;
|
22
|
+
exports.getSemiCheckedIdsWithSet = CheckTreeSelect.getSemiCheckedIdsWithSet;
|
23
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
'use strict';
|
11
|
+
|
12
|
+
Object.defineProperty(exports, '__esModule', {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n";
|
16
|
+
|
17
|
+
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
18
|
+
|
19
|
+
__styleInject__(css_248z);
|
20
|
+
|
21
|
+
exports["default"] = css_248z;
|
22
|
+
//# sourceMappingURL=index.scss.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,314 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
import { __rest } from 'tslib';
|
11
|
+
import React, { forwardRef, useCallback, useMemo, useState } from 'react';
|
12
|
+
import { getPrefixCls, cx } from '@hi-ui/classname';
|
13
|
+
import { __DEV__ } from '@hi-ui/env';
|
14
|
+
import { useToggle } from '@hi-ui/use-toggle';
|
15
|
+
import { Tree } from '@hi-ui/tree';
|
16
|
+
import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
|
17
|
+
import { Picker } from '@hi-ui/picker';
|
18
|
+
import { flattenTree } from '@hi-ui/tree-utils';
|
19
|
+
import { isArrayNonEmpty } from '@hi-ui/type-assertion';
|
20
|
+
import { uniqBy } from 'lodash';
|
21
|
+
import { Highlighter } from '@hi-ui/highlighter';
|
22
|
+
import { TagInputMock } from '@hi-ui/tag-input';
|
23
|
+
import { UpOutlined, DownOutlined } from '@hi-ui/icons';
|
24
|
+
import { useAsyncSearch, useTreeCustomSearch, useFilterSearch, useHighlightSearch, useSearchMode } from '@hi-ui/use-search-mode';
|
25
|
+
var TREE_SELECT_PREFIX = getPrefixCls('check-tree-select');
|
26
|
+
var DEFAULT_DATA = [];
|
27
|
+
var DEFAULT_VALUE = [];
|
28
|
+
var DEFAULT_FIELD_NAMES = {};
|
29
|
+
var DEFAULT_EXPANDED_IDS = [];
|
30
|
+
/**
|
31
|
+
* TODO: What is CheckTreeSelect
|
32
|
+
*/
|
33
|
+
|
34
|
+
var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
35
|
+
var _a$prefixCls = _a.prefixCls,
|
36
|
+
prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
|
37
|
+
className = _a.className,
|
38
|
+
_a$data = _a.data,
|
39
|
+
data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
|
40
|
+
dataSource = _a.dataSource,
|
41
|
+
_a$fieldNames = _a.fieldNames,
|
42
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
43
|
+
_a$defaultExpandAll = _a.defaultExpandAll,
|
44
|
+
defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
|
45
|
+
expandedIdsProp = _a.expandedIds,
|
46
|
+
_a$defaultExpandedIds = _a.defaultExpandedIds,
|
47
|
+
defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
|
48
|
+
onExpand = _a.onExpand,
|
49
|
+
_a$defaultValue = _a.defaultValue,
|
50
|
+
defaultValue = _a$defaultValue === void 0 ? DEFAULT_VALUE : _a$defaultValue,
|
51
|
+
valueProp = _a.value,
|
52
|
+
onChange = _a.onChange,
|
53
|
+
searchableProp = _a.searchable,
|
54
|
+
searchModeProp = _a.searchMode,
|
55
|
+
onLoadChildren = _a.onLoadChildren,
|
56
|
+
titleRender = _a.titleRender,
|
57
|
+
filterOption = _a.filterOption,
|
58
|
+
clearable = _a.clearable,
|
59
|
+
invalid = _a.invalid,
|
60
|
+
displayRender = _a.displayRender,
|
61
|
+
_a$placeholder = _a.placeholder,
|
62
|
+
placeholder = _a$placeholder === void 0 ? '请选择' : _a$placeholder,
|
63
|
+
appearance = _a.appearance,
|
64
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "fieldNames", "showCheckedMode", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "titleRender", "filterOption", "clearable", "invalid", "displayRender", "placeholder", "appearance"]);
|
65
|
+
|
66
|
+
var _useToggle = useToggle(),
|
67
|
+
menuVisible = _useToggle[0],
|
68
|
+
menuVisibleAction = _useToggle[1]; // const [viewSelected, setViewSelected] = useState(false)
|
69
|
+
|
70
|
+
/**
|
71
|
+
* 转换对象
|
72
|
+
*/
|
73
|
+
|
74
|
+
|
75
|
+
var getKeyFields = useCallback(function (node, key) {
|
76
|
+
return node[fieldNames[key] || key];
|
77
|
+
}, [fieldNames]);
|
78
|
+
var flattedData = useMemo(function () {
|
79
|
+
return flattenTree(data, function (node) {
|
80
|
+
node.id = getKeyFields(node.raw, 'id'); // @ts-ignore
|
81
|
+
|
82
|
+
node.title = getKeyFields(node.raw, 'title');
|
83
|
+
return node;
|
84
|
+
});
|
85
|
+
}, [data, getKeyFields]); // TODO: 抽离展开hook
|
86
|
+
// TODO: onLoadChildren 和 defaultExpandAll 共存时
|
87
|
+
|
88
|
+
var _useUncontrolledState = useUncontrolledState(function getDefaultExpandedIds() {
|
89
|
+
// 开启默认展开全部
|
90
|
+
if (defaultExpandAll) {
|
91
|
+
return flattedData.map(function (node) {
|
92
|
+
return node.id;
|
93
|
+
});
|
94
|
+
}
|
95
|
+
|
96
|
+
return defaultExpandedIds;
|
97
|
+
}, expandedIdsProp, onExpand),
|
98
|
+
expandedIds = _useUncontrolledState[0],
|
99
|
+
tryChangeExpandedIds = _useUncontrolledState[1];
|
100
|
+
|
101
|
+
var _useUncontrolledState2 = useUncontrolledState(defaultValue, valueProp, onChange),
|
102
|
+
value = _useUncontrolledState2[0],
|
103
|
+
tryChangeValue = _useUncontrolledState2[1]; // 搜索时临时选中缓存数据
|
104
|
+
|
105
|
+
|
106
|
+
var _useState = useState([]),
|
107
|
+
selectedItems = _useState[0],
|
108
|
+
setSelectedItems = _useState[1];
|
109
|
+
|
110
|
+
var onSelect = useCallback(function (_ref, node, checked) {
|
111
|
+
var checkedIds = _ref.checkedIds;
|
112
|
+
tryChangeValue(checkedIds, node); // 存取异步选中数据
|
113
|
+
|
114
|
+
setSelectedItems(function (prev) {
|
115
|
+
var next = [].concat(prev);
|
116
|
+
|
117
|
+
if (checked) {
|
118
|
+
next.push(node);
|
119
|
+
} else {
|
120
|
+
next.filter(function (item) {
|
121
|
+
return item.id !== node.id;
|
122
|
+
});
|
123
|
+
}
|
124
|
+
|
125
|
+
return next;
|
126
|
+
});
|
127
|
+
}, [tryChangeValue]); // ************************** 异步搜索 ************************* //
|
128
|
+
// const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
|
129
|
+
|
130
|
+
var _b = useAsyncSearch({
|
131
|
+
dataSource: dataSource
|
132
|
+
}),
|
133
|
+
loading = _b.loading,
|
134
|
+
hasError = _b.hasError,
|
135
|
+
dataSourceStrategy = __rest(_b, ["loading", "hasError"]);
|
136
|
+
|
137
|
+
var customSearchStrategy = useTreeCustomSearch({
|
138
|
+
data: data,
|
139
|
+
filterOption: filterOption
|
140
|
+
});
|
141
|
+
var filterSearchStrategy = useFilterSearch({
|
142
|
+
data: data,
|
143
|
+
flattedData: flattedData,
|
144
|
+
searchMode: searchModeProp
|
145
|
+
});
|
146
|
+
var highlightSearchStrategy = useHighlightSearch({
|
147
|
+
data: data,
|
148
|
+
flattedData: flattedData,
|
149
|
+
searchMode: searchModeProp
|
150
|
+
});
|
151
|
+
|
152
|
+
var _useSearchMode = useSearchMode({
|
153
|
+
searchable: searchableProp,
|
154
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
|
155
|
+
}),
|
156
|
+
stateInSearch = _useSearchMode.state,
|
157
|
+
setStateInSearch = _useSearchMode.setStateInSearch,
|
158
|
+
searchable = _useSearchMode.searchable,
|
159
|
+
searchMode = _useSearchMode.searchMode,
|
160
|
+
onSearch = _useSearchMode.onSearch,
|
161
|
+
searchValue = _useSearchMode.keyword; // 拦截 titleRender,自定义高亮展示
|
162
|
+
|
163
|
+
|
164
|
+
var proxyTitleRender = useCallback(function (node) {
|
165
|
+
if (titleRender) {
|
166
|
+
var _ret = titleRender(node);
|
167
|
+
|
168
|
+
if (_ret && _ret !== true) return _ret;
|
169
|
+
} // 本地搜索执行默认高亮规则
|
170
|
+
|
171
|
+
|
172
|
+
var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
|
173
|
+
var ret = highlight ? /*#__PURE__*/React.createElement(Highlighter, {
|
174
|
+
keyword: searchValue
|
175
|
+
}, node.title) : true;
|
176
|
+
return ret;
|
177
|
+
}, [titleRender, searchValue, searchMode]);
|
178
|
+
var shouldUseSearch = !!searchValue && !hasError;
|
179
|
+
var treeProps = {
|
180
|
+
data: shouldUseSearch ? stateInSearch.data : data,
|
181
|
+
expandedIds: shouldUseSearch ? stateInSearch.expandedIds : expandedIds,
|
182
|
+
onExpand: shouldUseSearch ? function (ids) {
|
183
|
+
return setStateInSearch(function (prev) {
|
184
|
+
return Object.assign(Object.assign({}, prev), {
|
185
|
+
expandedIds: ids
|
186
|
+
});
|
187
|
+
});
|
188
|
+
} : tryChangeExpandedIds,
|
189
|
+
titleRender: proxyTitleRender
|
190
|
+
}; // 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
191
|
+
|
192
|
+
var mergedData = useMemo(function () {
|
193
|
+
var nextData = selectedItems.concat(flattedData);
|
194
|
+
return uniqBy(nextData, 'id');
|
195
|
+
}, [selectedItems, flattedData]);
|
196
|
+
var cls = cx(prefixCls, className); // 过滤掉未选中的数据
|
197
|
+
// const tagList = useMemo(() => {
|
198
|
+
// // @ts-ignore
|
199
|
+
// const [semiCheckedIds] = getSemiCheckedIdsWithSet(flattedData, (id) => value.includes(id))
|
200
|
+
// const ids = Array.from(new Set([...semiCheckedIds, ...value]))
|
201
|
+
// return flattedData.filter((item) => ids.includes(item.id))
|
202
|
+
// }, [value, flattedData])
|
203
|
+
|
204
|
+
return /*#__PURE__*/React.createElement(Picker, Object.assign({
|
205
|
+
ref: ref,
|
206
|
+
className: cls
|
207
|
+
}, rest, {
|
208
|
+
visible: menuVisible,
|
209
|
+
onOpen: function onOpen() {
|
210
|
+
// setViewSelected(false)
|
211
|
+
menuVisibleAction.on();
|
212
|
+
},
|
213
|
+
onClose: menuVisibleAction.off,
|
214
|
+
// value={value}
|
215
|
+
// onChange={tryChangeValue}
|
216
|
+
// data={mergedData}
|
217
|
+
searchable: searchable,
|
218
|
+
onSearch: onSearch,
|
219
|
+
loading: loading,
|
220
|
+
trigger: /*#__PURE__*/React.createElement(TagInputMock // ref={targetElementRef}
|
221
|
+
// onClick={openMenu}
|
222
|
+
// disabled={disabled}
|
223
|
+
, {
|
224
|
+
// ref={targetElementRef}
|
225
|
+
// onClick={openMenu}
|
226
|
+
// disabled={disabled}
|
227
|
+
clearable: clearable,
|
228
|
+
placeholder: placeholder,
|
229
|
+
// @ts-ignore
|
230
|
+
displayRender: displayRender,
|
231
|
+
suffix: menuVisible ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null),
|
232
|
+
focused: menuVisible,
|
233
|
+
appearance: appearance,
|
234
|
+
value: value,
|
235
|
+
onChange: tryChangeValue,
|
236
|
+
data: mergedData,
|
237
|
+
// @ts-ignore
|
238
|
+
invalid: invalid,
|
239
|
+
onExpand: function onExpand() {
|
240
|
+
// setViewSelected(true)
|
241
|
+
menuVisibleAction.on();
|
242
|
+
}
|
243
|
+
})
|
244
|
+
}), isArrayNonEmpty(treeProps.data) ? /*#__PURE__*/React.createElement(Tree, Object.assign({
|
245
|
+
className: prefixCls + "__tree",
|
246
|
+
selectable: false,
|
247
|
+
checkable: true,
|
248
|
+
// checkOnSelect
|
249
|
+
checkedIds: value,
|
250
|
+
onCheck: onSelect,
|
251
|
+
// TODO: 支持 fieldNames
|
252
|
+
// 禁用时被选中的样式处理
|
253
|
+
onLoadChildren: onLoadChildren
|
254
|
+
}, treeProps)) : null);
|
255
|
+
});
|
256
|
+
|
257
|
+
if (__DEV__) {
|
258
|
+
CheckTreeSelect.displayName = 'CheckTreeSelect';
|
259
|
+
}
|
260
|
+
|
261
|
+
var ALWAYS_ALLOW = function ALWAYS_ALLOW() {
|
262
|
+
return true;
|
263
|
+
};
|
264
|
+
/**
|
265
|
+
* 在 checkedIdsSet 为数据合法的情况下,查找所有的半选中态的节点 ids
|
266
|
+
*
|
267
|
+
* @param checkedIdsSet
|
268
|
+
* @param flattedData
|
269
|
+
* @returns
|
270
|
+
*/
|
271
|
+
|
272
|
+
|
273
|
+
var getSemiCheckedIdsWithSet = function getSemiCheckedIdsWithSet(flattedData, isChecked, allowCheck) {
|
274
|
+
if (allowCheck === void 0) {
|
275
|
+
allowCheck = ALWAYS_ALLOW;
|
276
|
+
}
|
277
|
+
|
278
|
+
var semiCheckedNodes = [];
|
279
|
+
var semiCheckedIdsSet = new Set();
|
280
|
+
var parentId;
|
281
|
+
var parent;
|
282
|
+
flattedData.forEach(function (node) {
|
283
|
+
parent = node.parent;
|
284
|
+
|
285
|
+
if (parent && parent.id !== undefined) {
|
286
|
+
if (!allowCheck(parent)) return;
|
287
|
+
parentId = parent.id;
|
288
|
+
if (semiCheckedIdsSet.has(parentId)) return; // 父节点没选中,但是当前节点被选中,则视为半选
|
289
|
+
|
290
|
+
if (!isChecked(parentId) && isChecked(node.id)) {
|
291
|
+
semiCheckedIdsSet.add(parentId);
|
292
|
+
semiCheckedNodes.push(parent);
|
293
|
+
}
|
294
|
+
}
|
295
|
+
}); // 自下而上设置半选态
|
296
|
+
|
297
|
+
semiCheckedNodes.forEach(function (node) {
|
298
|
+
parent = node.parent;
|
299
|
+
|
300
|
+
while (parent && parent.id !== undefined) {
|
301
|
+
if (!allowCheck(parent)) return;
|
302
|
+
parentId = parent.id; // 可能存在兄弟节点,共同祖先需要去重,避免重复计算
|
303
|
+
|
304
|
+
if (semiCheckedIdsSet.has(parentId)) return;
|
305
|
+
semiCheckedIdsSet.add(parentId);
|
306
|
+
parent = parent.parent;
|
307
|
+
}
|
308
|
+
});
|
309
|
+
var semiCheckedIds = Array.from(semiCheckedIdsSet);
|
310
|
+
return [semiCheckedIds, semiCheckedIdsSet];
|
311
|
+
};
|
312
|
+
|
313
|
+
export { CheckTreeSelect, getSemiCheckedIdsWithSet };
|
314
|
+
//# sourceMappingURL=CheckTreeSelect.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"CheckTreeSelect.js","sources":["../../src/CheckTreeSelect.tsx"],"sourcesContent":[null],"names":["TREE_SELECT_PREFIX","getPrefixCls","DEFAULT_DATA","DEFAULT_VALUE","DEFAULT_FIELD_NAMES","DEFAULT_EXPANDED_IDS","CheckTreeSelect","forwardRef","_a","ref","prefixCls","className","data","dataSource","fieldNames","defaultExpandAll","expandedIdsProp","expandedIds","defaultExpandedIds","onExpand","defaultValue","valueProp","value","onChange","searchableProp","searchable","searchModeProp","searchMode","onLoadChildren","titleRender","filterOption","clearable","invalid","displayRender","placeholder","appearance","rest","useToggle","menuVisible","menuVisibleAction","getKeyFields","useCallback","node","key","flattedData","useMemo","flattenTree","id","raw","title","useUncontrolledState","getDefaultExpandedIds","map","tryChangeExpandedIds","tryChangeValue","useState","selectedItems","setSelectedItems","onSelect","checked","checkedIds","prev","next","push","filter","item","_b","useAsyncSearch","loading","hasError","dataSourceStrategy","customSearchStrategy","useTreeCustomSearch","filterSearchStrategy","useFilterSearch","highlightSearchStrategy","useHighlightSearch","useSearchMode","strategies","stateInSearch","state","setStateInSearch","onSearch","searchValue","keyword","proxyTitleRender","ret","highlight","React","Highlighter","shouldUseSearch","treeProps","ids","mergedData","nextData","concat","uniqBy","cls","cx","Picker","visible","onOpen","on","onClose","off","trigger","TagInputMock","suffix","UpOutlined","DownOutlined","focused","isArrayNonEmpty","Tree","selectable","checkable","onCheck","__DEV__","displayName","ALWAYS_ALLOW","getSemiCheckedIdsWithSet","isChecked","allowCheck","semiCheckedNodes","semiCheckedIdsSet","Set","parentId","parent","forEach","undefined","has","add","semiCheckedIds","Array","from"],"mappings":"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"}
|
package/lib/esm/index.js
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
import './styles/index.scss.js';
|
11
|
+
export { CheckTreeSelect, CheckTreeSelect as default, getSemiCheckedIdsWithSet } from './CheckTreeSelect.js';
|
12
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-tree-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n";
|
11
|
+
|
12
|
+
var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
|
13
|
+
|
14
|
+
__styleInject__(css_248z);
|
15
|
+
|
16
|
+
export default css_248z;
|
17
|
+
//# sourceMappingURL=index.scss.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { DataSourceFunc, FieldNames, CheckTreeSelectDataItem, CheckTreeSelectDataSource } from './types';
|
3
|
+
import { PopperProps } from '@hi-ui/popper';
|
4
|
+
import { FlattedTreeNodeData, TreeNodeEventData } from '@hi-ui/tree';
|
5
|
+
import { PickerProps } from '@hi-ui/picker';
|
6
|
+
/**
|
7
|
+
* TODO: What is CheckTreeSelect
|
8
|
+
*/
|
9
|
+
export declare const CheckTreeSelect: React.ForwardRefExoticComponent<CheckTreeSelectProps & React.RefAttributes<HTMLDivElement | null>>;
|
10
|
+
export interface CheckTreeSelectProps extends Omit<PickerProps, 'data' | 'onChange' | 'value' | 'trigger'> {
|
11
|
+
/**
|
12
|
+
* 展示数据
|
13
|
+
*/
|
14
|
+
data?: CheckTreeSelectDataItem[];
|
15
|
+
/**
|
16
|
+
* 设置 data 中 id, title, disabled, children 对应的 key (3.0 新增) object - { title: 'title', id: 'id',disabled:'disabled', children: 'children'}
|
17
|
+
*/
|
18
|
+
fieldNames?: FieldNames;
|
19
|
+
/**
|
20
|
+
* 数据回显模式 string
|
21
|
+
* ALL: 所有被选中节点,不区分父子节点
|
22
|
+
* PARENT: 当所有子节点被选中时将只保留父节点
|
23
|
+
* CHILD: 仅显示子节点
|
24
|
+
*/
|
25
|
+
showCheckedMode?: 'ALL' | 'PARENT' | 'CHILD';
|
26
|
+
/**
|
27
|
+
* 数据选择类型
|
28
|
+
*/
|
29
|
+
type?: 'single' | 'multiple';
|
30
|
+
/**
|
31
|
+
* 是否有边框
|
32
|
+
*/
|
33
|
+
bordered?: boolean;
|
34
|
+
/**
|
35
|
+
* 是否禁用
|
36
|
+
*/
|
37
|
+
disabled?: boolean;
|
38
|
+
/**
|
39
|
+
* 是否默认展开所有树节点
|
40
|
+
*/
|
41
|
+
defaultExpandAll?: boolean;
|
42
|
+
/**
|
43
|
+
* 展开的节点(受控)
|
44
|
+
*/
|
45
|
+
expandedIds?: React.ReactText[];
|
46
|
+
/**
|
47
|
+
* 默认展开的节点(非受控)
|
48
|
+
*/
|
49
|
+
defaultExpandedIds?: React.ReactText[];
|
50
|
+
/**
|
51
|
+
* 节点被点击(展开/收起)时触发
|
52
|
+
*/
|
53
|
+
onExpand?: () => void;
|
54
|
+
/**
|
55
|
+
* 默认选中项 (非受控)
|
56
|
+
*/
|
57
|
+
defaultValue?: React.ReactText[];
|
58
|
+
/**
|
59
|
+
* 默认选中项 (受控)
|
60
|
+
*/
|
61
|
+
value?: React.ReactText[];
|
62
|
+
/**
|
63
|
+
* 自定义渲染 Input 中展示内容
|
64
|
+
*/
|
65
|
+
displayRender?: (item: CheckTreeSelectDataItem) => React.ReactNode;
|
66
|
+
/**
|
67
|
+
* 输入框占位 string - 请选择
|
68
|
+
*/
|
69
|
+
placeholder?: string;
|
70
|
+
/**
|
71
|
+
* 节点搜索模式,仅在mode=normal模式下生效
|
72
|
+
*/
|
73
|
+
searchMode?: 'highlight' | 'filter';
|
74
|
+
/**
|
75
|
+
* 自定义搜索过滤器,仅在 searchable 为 true 时有效
|
76
|
+
* 第一个参数为输入的关键字,
|
77
|
+
* 第二个为数据项,返回值为 true 时将出现在结果项
|
78
|
+
*/
|
79
|
+
filterOption?: (keyword: string, item: CheckTreeSelectDataItem) => boolean;
|
80
|
+
/**
|
81
|
+
* 自定义渲染节点的 title 内容
|
82
|
+
*/
|
83
|
+
titleRender?: (node: TreeNodeEventData) => React.ReactNode;
|
84
|
+
/**
|
85
|
+
* 点击异步加载子项
|
86
|
+
*/
|
87
|
+
onLoadChildren?: (node: TreeNodeEventData) => void | Promise<CheckTreeSelectDataItem[] | void>;
|
88
|
+
/**
|
89
|
+
* 从远端获取数据,初始时是否自动加载
|
90
|
+
*/
|
91
|
+
autoload?: boolean;
|
92
|
+
/**
|
93
|
+
* 异步加载数据
|
94
|
+
*/
|
95
|
+
dataSource?: DataSourceFunc | CheckTreeSelectDataSource | Promise<CheckTreeSelectDataItem[]>;
|
96
|
+
/**
|
97
|
+
* 没有选项时的提示
|
98
|
+
*/
|
99
|
+
emptyContent?: React.ReactNode;
|
100
|
+
/**
|
101
|
+
* 自定义下拉选项宽度
|
102
|
+
*/
|
103
|
+
optionWidth?: number;
|
104
|
+
/**
|
105
|
+
* 下拉根元素的类名称 (3.0 新增)
|
106
|
+
*/
|
107
|
+
overlayClassName?: string;
|
108
|
+
/**
|
109
|
+
* 选中时触发
|
110
|
+
* checkedIds | checkedId: 选中项 ID 集合 | ID
|
111
|
+
* checkedNodes | checkedNode: 选中项数据项集合|数据项
|
112
|
+
* currentNode: 当前操作节点
|
113
|
+
*/
|
114
|
+
onChange?: (selectedIds: React.ReactText[], changedItem: CheckTreeSelectDataItem[], currentNode: CheckTreeSelectDataItem) => void;
|
115
|
+
/**
|
116
|
+
* 是否可清空
|
117
|
+
*/
|
118
|
+
clearable?: boolean;
|
119
|
+
/**
|
120
|
+
* 自定义控制 popper 行为
|
121
|
+
*/
|
122
|
+
popper?: PopperProps;
|
123
|
+
/**
|
124
|
+
* 设置展现形式
|
125
|
+
*/
|
126
|
+
appearance?: 'outline' | 'unset' | 'filled';
|
127
|
+
}
|
128
|
+
/**
|
129
|
+
* 在 checkedIdsSet 为数据合法的情况下,查找所有的半选中态的节点 ids
|
130
|
+
*
|
131
|
+
* @param checkedIdsSet
|
132
|
+
* @param flattedData
|
133
|
+
* @returns
|
134
|
+
*/
|
135
|
+
export declare const getSemiCheckedIdsWithSet: (flattedData: FlattedTreeNodeData[], isChecked: (id: React.ReactText) => boolean, allowCheck?: (targetItem: FlattedTreeNodeData) => boolean) => readonly [React.ReactText[], Set<React.ReactText>];
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface CheckTreeSelectDataItem {
|
3
|
+
/**
|
4
|
+
* 节点唯一 id
|
5
|
+
*/
|
6
|
+
id: React.ReactText;
|
7
|
+
/**
|
8
|
+
* 节点标题
|
9
|
+
*/
|
10
|
+
title: React.ReactNode;
|
11
|
+
/**
|
12
|
+
* 子级数据
|
13
|
+
*/
|
14
|
+
children?: CheckTreeSelectDataItem[];
|
15
|
+
/**
|
16
|
+
* 是否禁用
|
17
|
+
*/
|
18
|
+
disabled?: boolean;
|
19
|
+
}
|
20
|
+
export interface CheckTreeSelectDataSource<T = any> {
|
21
|
+
/**
|
22
|
+
* 请求的 url
|
23
|
+
*/
|
24
|
+
url?: string;
|
25
|
+
/**
|
26
|
+
* 请求方法
|
27
|
+
*/
|
28
|
+
type?: 'get' | 'post';
|
29
|
+
/**
|
30
|
+
* post 请求时请求体参数
|
31
|
+
*/
|
32
|
+
data?: object;
|
33
|
+
/**
|
34
|
+
* url 查询参数
|
35
|
+
*/
|
36
|
+
params?: object;
|
37
|
+
/**
|
38
|
+
* 请求头
|
39
|
+
*/
|
40
|
+
headers?: object;
|
41
|
+
/**
|
42
|
+
* 请求模式
|
43
|
+
*/
|
44
|
+
mode?: 'same-origin' | 'cors' | 'no-cors' | 'navigate' | 'same-origin';
|
45
|
+
/**
|
46
|
+
* 成功时的回调,用于对数据进行预处理
|
47
|
+
*/
|
48
|
+
transformResponse?: (response: object) => T;
|
49
|
+
}
|
50
|
+
export declare type FilterOptionFunc = (keyword: string, item: CheckTreeSelectDataItem) => boolean;
|
51
|
+
export declare type DataSourceFunc = (keyword: string) => CheckTreeSelectDataSource;
|
52
|
+
export declare type FieldNames = {
|
53
|
+
id?: string;
|
54
|
+
title?: string;
|
55
|
+
disabled?: string;
|
56
|
+
children?: string;
|
57
|
+
};
|
package/package.json
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
{
|
2
|
+
"name": "@hi-ui/check-tree-select",
|
3
|
+
"version": "4.0.0-alpha.2",
|
4
|
+
"description": "A sub-package for @hi-ui/hiui.",
|
5
|
+
"keywords": [],
|
6
|
+
"author": "HIUI <mi-hiui@xiaomi.com>",
|
7
|
+
"homepage": "https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-tree-select#readme",
|
8
|
+
"license": "MIT",
|
9
|
+
"directories": {
|
10
|
+
"lib": "lib",
|
11
|
+
"test": "__tests__"
|
12
|
+
},
|
13
|
+
"files": [
|
14
|
+
"lib"
|
15
|
+
],
|
16
|
+
"main": "lib/cjs/index.js",
|
17
|
+
"module": "lib/esm/index.js",
|
18
|
+
"types": "lib/types/index.d.ts",
|
19
|
+
"typings": "lib/types/index.d.ts",
|
20
|
+
"exports": {
|
21
|
+
".": {
|
22
|
+
"require": "./lib/cjs/index.js",
|
23
|
+
"default": "./lib/esm/index.js"
|
24
|
+
}
|
25
|
+
},
|
26
|
+
"publishConfig": {
|
27
|
+
"access": "public"
|
28
|
+
},
|
29
|
+
"repository": {
|
30
|
+
"type": "git",
|
31
|
+
"url": "git+https://github.com/XiaoMi/hiui.git"
|
32
|
+
},
|
33
|
+
"scripts": {
|
34
|
+
"test": "jest",
|
35
|
+
"clean": "rimraf lib",
|
36
|
+
"prebuild": "yarn clean",
|
37
|
+
"build:esm": "hi-build ./src/index.ts --format esm -d ./lib/esm",
|
38
|
+
"build:cjs": "hi-build ./src/index.ts --format cjs -d ./lib/cjs",
|
39
|
+
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir lib/types",
|
40
|
+
"build": "concurrently yarn:build:*"
|
41
|
+
},
|
42
|
+
"bugs": {
|
43
|
+
"url": "https://github.com/XiaoMi/hiui/issues"
|
44
|
+
},
|
45
|
+
"dependencies": {
|
46
|
+
"@hi-ui/classname": "^4.0.0-alpha.0",
|
47
|
+
"@hi-ui/core": "^4.0.0-alpha.10",
|
48
|
+
"@hi-ui/core-css": "^4.0.0-alpha.8",
|
49
|
+
"@hi-ui/env": "^4.0.0-alpha.0",
|
50
|
+
"@hi-ui/highlighter": "^4.0.0-alpha.2",
|
51
|
+
"@hi-ui/icons": "^4.0.0-alpha.15",
|
52
|
+
"@hi-ui/picker": "^4.0.0-alpha.2",
|
53
|
+
"@hi-ui/popper": "^4.0.0-alpha.13",
|
54
|
+
"@hi-ui/tag-input": "^4.0.0-alpha.10",
|
55
|
+
"@hi-ui/tree": "^4.0.0-alpha.23",
|
56
|
+
"@hi-ui/tree-utils": "^4.0.0-alpha.6",
|
57
|
+
"@hi-ui/type-assertion": "^4.0.0-alpha.11",
|
58
|
+
"@hi-ui/use-search-mode": "^4.0.0-alpha.2",
|
59
|
+
"@hi-ui/use-toggle": "^4.0.0-alpha.8",
|
60
|
+
"@hi-ui/use-uncontrolled-state": "^4.0.0-alpha.10",
|
61
|
+
"lodash": "^4.17.21"
|
62
|
+
},
|
63
|
+
"peerDependencies": {
|
64
|
+
"react": "^17.0.1",
|
65
|
+
"react-dom": "^17.0.1"
|
66
|
+
},
|
67
|
+
"devDependencies": {
|
68
|
+
"@hi-ui/hi-build": "^4.0.0-alpha.0",
|
69
|
+
"react": "^17.0.1",
|
70
|
+
"react-dom": "^17.0.1"
|
71
|
+
},
|
72
|
+
"gitHead": "734a594a67ed76aa6e36772532e67b53048f2dae"
|
73
|
+
}
|