@hi-ui/check-tree-select 4.2.0 → 4.3.1

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.
@@ -9,13 +9,9 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var treeUtils = require('@hi-ui/tree-utils');
17
-
18
13
  var typeAssertion = require('@hi-ui/type-assertion');
14
+
19
15
  /**
20
16
  * 处理选中的回显数据
21
17
  *
@@ -23,19 +19,14 @@ var typeAssertion = require('@hi-ui/type-assertion');
23
19
  * @param nodeEntries 所有数据的Map 集合
24
20
  * @param type 数据回显方式
25
21
  */
26
-
27
-
28
22
  var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData, allowCheck) {
29
23
  var keySet = new Set(checkedIds);
30
-
31
24
  switch (type) {
32
25
  case 'CHILD':
33
26
  return checkedIds.filter(function (id) {
34
27
  var node = treeUtils.fFindNodeById(flattenData, id);
35
-
36
28
  if (node) {
37
29
  var children = node.children;
38
-
39
30
  if (typeAssertion.isArrayNonEmpty(children)) {
40
31
  if (children.filter(allowCheck).every(function (node) {
41
32
  return keySet.has(node.id);
@@ -43,48 +34,38 @@ var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData
43
34
  return false;
44
35
  }
45
36
  }
46
- } // 没有孩子节点,保留
47
-
48
-
37
+ }
38
+ // 没有孩子节点,保留
49
39
  return true;
50
40
  });
51
-
52
41
  case 'PARENT':
53
42
  return checkedIds.filter(function (id) {
54
43
  var node = treeUtils.fFindNodeById(flattenData, id);
55
-
56
44
  if (node) {
57
45
  // 向上递归遍历是否被勾选
58
46
  var ancestors = treeUtils.getNodeAncestors(node);
59
-
60
47
  if (ancestors.some(function (parent) {
61
48
  return keySet.has(parent.id);
62
49
  })) {
63
50
  return false;
64
51
  }
65
52
  }
66
-
67
53
  return true;
68
54
  });
69
55
  }
70
-
71
56
  return checkedIds;
72
57
  };
73
58
  /**
74
59
  * 根据传入的 checkedIds 解析全选/半选数据
75
60
  */
76
-
77
-
78
61
  var parseCheckDataDirty = function parseCheckDataDirty(type, checkedIds, flattenData, allowCheck) {
79
62
  switch (type) {
80
63
  case 'CHILD':
81
64
  case 'PARENT':
82
65
  return dirtyCheck(checkedIds, flattenData, allowCheck);
83
66
  }
84
-
85
67
  return checkedIds;
86
68
  };
87
-
88
69
  function dirtyCheck(checkedIds, flattenData, allowCheck) {
89
70
  var nodeEntities = flattenData.reduce(function (prev, cur) {
90
71
  prev[cur.id] = cur;
@@ -94,18 +75,16 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
94
75
  return !!nodeEntities[id];
95
76
  }));
96
77
  var depthEntities = new Map();
97
- var maxDepth = 0; // Convert entities by depth for calculation
98
-
78
+ var maxDepth = 0;
79
+ // Convert entities by depth for calculation
99
80
  Object.keys(nodeEntities).forEach(function (id) {
100
81
  var entity = nodeEntities[id];
101
82
  var depth = entity.depth;
102
83
  var depthSet = depthEntities.get(depth);
103
-
104
84
  if (!depthSet) {
105
85
  depthSet = new Set();
106
86
  depthEntities.set(depth, depthSet);
107
87
  }
108
-
109
88
  depthSet.add(entity);
110
89
  maxDepth = Math.max(maxDepth, depth);
111
90
  });
@@ -117,8 +96,6 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
117
96
  * 1. 把所有嵌套孩子节点 allowCheck 的都标记为 checked
118
97
  * 2. 祖先节点从下至上维护 checked 状态
119
98
  */
120
-
121
-
122
99
  function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck) {
123
100
  var checkedIdsSet = new Set(checkedIds);
124
101
  checkedIdsSet.forEach(function (id) {
@@ -127,37 +104,31 @@ function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck
127
104
  nestedChildren.forEach(function (child) {
128
105
  checkedIdsSet.add(child.id);
129
106
  });
130
- }); // 缓存中间结果,优化查询
131
-
107
+ });
108
+ // 缓存中间结果,优化查询
132
109
  var visitedIds = new Map();
133
-
134
110
  for (var depth = maxDepth - 1; depth >= 0; --depth) {
135
111
  var entities = depthEntities.get(depth);
136
112
  entities === null || entities === void 0 ? void 0 : entities.forEach(function (entity) {
137
113
  var id = entity.id,
138
- children = entity.children;
114
+ children = entity.children;
139
115
  if (visitedIds.has(id)) return;
140
-
141
116
  if (typeAssertion.isArrayNonEmpty(children)) {
142
117
  var shouldChecked = !children.some(function (child) {
143
118
  if (visitedIds.has(child.id)) {
144
119
  return !visitedIds.get(child.id);
145
120
  }
146
-
147
121
  return !checkedIdsSet.has(child.id);
148
122
  });
149
123
  visitedIds.set(id, shouldChecked);
150
-
151
124
  if (shouldChecked && allowCheck(entity)) {
152
125
  checkedIdsSet.add(id);
153
126
  }
154
127
  }
155
128
  });
156
129
  }
157
-
158
130
  return Array.from(checkedIdsSet);
159
131
  }
160
-
161
132
  var getAllCheckedStatus = function getAllCheckedStatus(flattedData, values) {
162
133
  var treeIds = flattedData.map(function (_ref) {
163
134
  var id = _ref.id;
@@ -171,13 +142,13 @@ var getAllCheckedStatus = function getAllCheckedStatus(flattedData, values) {
171
142
  treeIdsSet["delete"](id);
172
143
  }
173
144
  });
174
- return [hasValue && treeIdsSet.size === 0, hasValue && treeIdsSet.size > 0, // 该值用来判断剩余未选中的节点是否都是 disabled 的
145
+ return [hasValue && treeIdsSet.size === 0, hasValue && treeIdsSet.size > 0,
146
+ // 该值用来判断剩余未选中的节点是否都是 disabled 的
175
147
  // 如果为 true 则表示可选值都已选中
176
148
  treeIdsSet.size === flattedData.filter(function (item) {
177
149
  return item.disabled;
178
150
  }).length];
179
151
  };
180
-
181
152
  exports.getAllCheckedStatus = getAllCheckedStatus;
182
153
  exports.parseCheckDataDirty = parseCheckDataDirty;
183
154
  exports.processCheckedIds = processCheckedIds;
@@ -35,67 +35,64 @@ var DEFAULT_EXPANDED_IDS = [];
35
35
  /**
36
36
  * 多项树形选择器
37
37
  */
38
-
39
38
  var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
40
39
  var _a$prefixCls = _a.prefixCls,
41
- prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
42
- className = _a.className,
43
- _a$data = _a.data,
44
- data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
45
- dataSource = _a.dataSource,
46
- _a$disabled = _a.disabled,
47
- disabled = _a$disabled === void 0 ? false : _a$disabled,
48
- visible = _a.visible,
49
- onOpen = _a.onOpen,
50
- onClose = _a.onClose,
51
- _a$fieldNames = _a.fieldNames,
52
- fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
53
- _a$checkedMode = _a.checkedMode,
54
- checkedMode = _a$checkedMode === void 0 ? 'ALL' : _a$checkedMode,
55
- _a$defaultExpandAll = _a.defaultExpandAll,
56
- defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
57
- expandedIdsProp = _a.expandedIds,
58
- _a$defaultExpandedIds = _a.defaultExpandedIds,
59
- defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
60
- onExpand = _a.onExpand,
61
- _a$defaultValue = _a.defaultValue,
62
- defaultValue = _a$defaultValue === void 0 ? DEFAULT_VALUE : _a$defaultValue,
63
- valueProp = _a.value,
64
- onChange = _a.onChange,
65
- searchableProp = _a.searchable,
66
- searchModeProp = _a.searchMode,
67
- onLoadChildren = _a.onLoadChildren,
68
- titleRender = _a.render,
69
- filterOption = _a.filterOption,
70
- onSearchProp = _a.onSearch,
71
- clearable = _a.clearable,
72
- invalid = _a.invalid,
73
- displayRender = _a.displayRender,
74
- placeholderProp = _a.placeholder,
75
- appearance = _a.appearance,
76
- virtual = _a.virtual,
77
- itemHeight = _a.itemHeight,
78
- height = _a.height,
79
- showCheckAll = _a.showCheckAll,
80
- tagInputProps = _a.tagInputProps,
81
- rest = __rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "visible", "onOpen", "onClose", "fieldNames", "checkedMode", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "render", "filterOption", "onSearch", "clearable", "invalid", "displayRender", "placeholder", "appearance", "virtual", "itemHeight", "height", "showCheckAll", "tagInputProps"]);
82
-
40
+ prefixCls = _a$prefixCls === void 0 ? TREE_SELECT_PREFIX : _a$prefixCls,
41
+ className = _a.className,
42
+ _a$data = _a.data,
43
+ data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
44
+ dataSource = _a.dataSource,
45
+ _a$disabled = _a.disabled,
46
+ disabled = _a$disabled === void 0 ? false : _a$disabled,
47
+ visible = _a.visible,
48
+ onOpen = _a.onOpen,
49
+ onClose = _a.onClose,
50
+ _a$fieldNames = _a.fieldNames,
51
+ fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
52
+ _a$checkedMode = _a.checkedMode,
53
+ checkedMode = _a$checkedMode === void 0 ? 'ALL' : _a$checkedMode,
54
+ _a$defaultExpandAll = _a.defaultExpandAll,
55
+ defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
56
+ expandedIdsProp = _a.expandedIds,
57
+ _a$defaultExpandedIds = _a.defaultExpandedIds,
58
+ defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
59
+ onExpand = _a.onExpand,
60
+ _a$defaultValue = _a.defaultValue,
61
+ defaultValue = _a$defaultValue === void 0 ? DEFAULT_VALUE : _a$defaultValue,
62
+ valueProp = _a.value,
63
+ onChange = _a.onChange,
64
+ searchableProp = _a.searchable,
65
+ searchModeProp = _a.searchMode,
66
+ onLoadChildren = _a.onLoadChildren,
67
+ titleRender = _a.render,
68
+ filterOption = _a.filterOption,
69
+ onSearchProp = _a.onSearch,
70
+ clearable = _a.clearable,
71
+ invalid = _a.invalid,
72
+ displayRender = _a.displayRender,
73
+ placeholderProp = _a.placeholder,
74
+ appearance = _a.appearance,
75
+ virtual = _a.virtual,
76
+ itemHeight = _a.itemHeight,
77
+ height = _a.height,
78
+ showCheckAll = _a.showCheckAll,
79
+ tagInputProps = _a.tagInputProps,
80
+ _a$size = _a.size,
81
+ size = _a$size === void 0 ? 'md' : _a$size,
82
+ rest = __rest(_a, ["prefixCls", "role", "className", "data", "dataSource", "disabled", "visible", "onOpen", "onClose", "fieldNames", "checkedMode", "defaultExpandAll", "expandedIds", "defaultExpandedIds", "onExpand", "defaultValue", "value", "onChange", "searchable", "searchMode", "onLoadChildren", "render", "filterOption", "onSearch", "clearable", "invalid", "displayRender", "placeholder", "appearance", "virtual", "itemHeight", "height", "showCheckAll", "tagInputProps", "size"]);
83
83
  var i18n = useLocaleContext();
84
84
  var placeholder = isUndef(placeholderProp) ? i18n.get('checkTreeSelect.placeholder') : placeholderProp;
85
-
86
85
  var _useUncontrolledToggl = useUncontrolledToggle({
87
- visible: visible,
88
- disabled: disabled,
89
- onOpen: onOpen,
90
- onClose: onClose
91
- }),
92
- menuVisible = _useUncontrolledToggl[0],
93
- menuVisibleAction = _useUncontrolledToggl[1];
86
+ visible: visible,
87
+ disabled: disabled,
88
+ onOpen: onOpen,
89
+ onClose: onClose
90
+ }),
91
+ menuVisible = _useUncontrolledToggl[0],
92
+ menuVisibleAction = _useUncontrolledToggl[1];
94
93
  /**
95
94
  * 转换对象
96
95
  */
97
-
98
-
99
96
  var getKeyFields = useCallback(function (node, key) {
100
97
  return node[fieldNames[key] || key];
101
98
  }, [fieldNames]);
@@ -107,7 +104,6 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
107
104
  },
108
105
  transform: function transform(node) {
109
106
  var _a, _b;
110
-
111
107
  var flattedNode = node;
112
108
  var raw = node.raw;
113
109
  flattedNode.id = getKeyFields(raw, 'id');
@@ -117,32 +113,29 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
117
113
  return flattedNode;
118
114
  }
119
115
  });
120
- }, [data, getKeyFields]); // TODO: 抽离展开hook
116
+ }, [data, getKeyFields]);
117
+ // TODO: 抽离展开hook
121
118
  // TODO: onLoadChildren 和 defaultExpandAll 共存时
122
-
123
119
  var _useUncontrolledState = useUncontrolledState(function getDefaultExpandedIds() {
124
- // 开启默认展开全部
125
- if (defaultExpandAll) {
126
- return flattedData.map(function (node) {
127
- return node.id;
128
- });
129
- }
130
-
131
- return defaultExpandedIds;
132
- }, expandedIdsProp, onExpand),
133
- expandedIds = _useUncontrolledState[0],
134
- tryChangeExpandedIds = _useUncontrolledState[1];
135
-
120
+ // 开启默认展开全部
121
+ if (defaultExpandAll) {
122
+ return flattedData.map(function (node) {
123
+ return node.id;
124
+ });
125
+ }
126
+ return defaultExpandedIds;
127
+ }, expandedIdsProp, onExpand),
128
+ expandedIds = _useUncontrolledState[0],
129
+ tryChangeExpandedIds = _useUncontrolledState[1];
136
130
  var _useCheck = useCheck(checkedMode, disabled, flattedData, defaultValue, valueProp, onChange),
137
- value = _useCheck[0],
138
- tryChangeValue = _useCheck[1],
139
- onNodeCheck = _useCheck[2],
140
- checkedNodes = _useCheck[3],
141
- parsedCheckedIds = _useCheck[4];
142
-
131
+ value = _useCheck[0],
132
+ tryChangeValue = _useCheck[1],
133
+ onNodeCheck = _useCheck[2],
134
+ checkedNodes = _useCheck[3],
135
+ parsedCheckedIds = _useCheck[4];
143
136
  var onCheck = useCallback(function (checkedIds, option) {
144
137
  var targetNode = option.targetNode,
145
- checked = option.checked;
138
+ checked = option.checked;
146
139
  onNodeCheck(targetNode, checked);
147
140
  }, [onNodeCheck]);
148
141
  var onValueChange = useCallback(function (values, targetItem, shouldChecked) {
@@ -153,16 +146,15 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
153
146
  // 操作单个
154
147
  onNodeCheck(targetItem[0], shouldChecked);
155
148
  }
156
- }, [tryChangeValue, onNodeCheck]); // ************************** 异步搜索 ************************* //
149
+ }, [tryChangeValue, onNodeCheck]);
150
+ // ************************** 异步搜索 ************************* //
157
151
  // const { loading, hasError, loadRemoteData } = useDataSource({ dataSource, validate: isArray })
158
-
159
152
  var _b = useAsyncSearch({
160
- dataSource: dataSource
161
- }),
162
- loading = _b.loading,
163
- hasError = _b.hasError,
164
- dataSourceStrategy = __rest(_b, ["loading", "hasError"]);
165
-
153
+ dataSource: dataSource
154
+ }),
155
+ loading = _b.loading,
156
+ hasError = _b.hasError,
157
+ dataSourceStrategy = __rest(_b, ["loading", "hasError"]);
166
158
  var customSearchStrategy = useTreeCustomSearch({
167
159
  data: data,
168
160
  filterOption: filterOption
@@ -178,27 +170,23 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
178
170
  flattedData: flattedData,
179
171
  searchMode: searchModeProp
180
172
  });
181
-
182
173
  var _useSearchMode = useSearchMode({
183
- searchable: searchableProp,
184
- strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
185
- }),
186
- stateInSearch = _useSearchMode.state,
187
- setStateInSearch = _useSearchMode.setStateInSearch,
188
- searchable = _useSearchMode.searchable,
189
- searchMode = _useSearchMode.searchMode,
190
- onSearch = _useSearchMode.onSearch,
191
- searchValue = _useSearchMode.keyword; // 拦截 titleRender,自定义高亮展示
192
-
193
-
174
+ searchable: searchableProp,
175
+ strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy, highlightSearchStrategy]
176
+ }),
177
+ stateInSearch = _useSearchMode.state,
178
+ setStateInSearch = _useSearchMode.setStateInSearch,
179
+ searchable = _useSearchMode.searchable,
180
+ searchMode = _useSearchMode.searchMode,
181
+ onSearch = _useSearchMode.onSearch,
182
+ searchValue = _useSearchMode.keyword;
183
+ // 拦截 titleRender,自定义高亮展示
194
184
  var proxyTitleRender = useCallback(function (node) {
195
185
  if (titleRender) {
196
186
  var _ret = titleRender(node);
197
-
198
187
  if (_ret && _ret !== true) return _ret;
199
- } // 本地搜索执行默认高亮规则
200
-
201
-
188
+ }
189
+ // 本地搜索执行默认高亮规则
202
190
  var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
203
191
  var ret = highlight ? /*#__PURE__*/React.createElement(Highlighter, {
204
192
  keyword: searchValue
@@ -217,19 +205,18 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
217
205
  });
218
206
  } : tryChangeExpandedIds,
219
207
  render: proxyTitleRender
220
- }; // 下拉菜单不能合并(因为树形数据,不知道是第几级)
221
-
208
+ };
209
+ // 下拉菜单不能合并(因为树形数据,不知道是第几级)
222
210
  var mergedData = useMemo(function () {
223
211
  var nextData = checkedNodes.concat(flattedData);
224
212
  return uniqBy(nextData, 'id');
225
213
  }, [checkedNodes, flattedData]);
226
214
  var toggleCheckAll = useCallback(function () {
227
215
  var _getAllCheckedStatus = getAllCheckedStatus(flattedData, parsedCheckedIds),
228
- currentAllChecked = _getAllCheckedStatus[0],
229
- hasCheckedAll = _getAllCheckedStatus[2];
230
-
231
- var shouldChecked = !currentAllChecked; // 全选操作
232
-
216
+ currentAllChecked = _getAllCheckedStatus[0],
217
+ hasCheckedAll = _getAllCheckedStatus[2];
218
+ var shouldChecked = !currentAllChecked;
219
+ // 全选操作
233
220
  if (!currentAllChecked && !hasCheckedAll) {
234
221
  tryChangeValue(flattedData.filter(function (item) {
235
222
  if (!item.disabled) {
@@ -237,14 +224,11 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
237
224
  if (checkedMode === 'CHILD') {
238
225
  return !item.children;
239
226
  }
240
-
241
227
  if (checkedMode === 'PARENT') {
242
228
  return item.depth === 0;
243
229
  }
244
-
245
230
  return true;
246
231
  }
247
-
248
232
  return false;
249
233
  }).map(function (_ref) {
250
234
  var id = _ref.id;
@@ -254,13 +238,11 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
254
238
  tryChangeValue([], null, shouldChecked, []);
255
239
  }
256
240
  }, [checkedMode, flattedData, parsedCheckedIds, tryChangeValue]);
257
-
258
241
  var _useMemo = useMemo(function () {
259
- return getAllCheckedStatus(flattedData, parsedCheckedIds);
260
- }, [flattedData, parsedCheckedIds]),
261
- showAllChecked = _useMemo[0],
262
- showIndeterminate = _useMemo[1];
263
-
242
+ return getAllCheckedStatus(flattedData, parsedCheckedIds);
243
+ }, [flattedData, parsedCheckedIds]),
244
+ showAllChecked = _useMemo[0],
245
+ showIndeterminate = _useMemo[1];
264
246
  var renderDefaultFooter = function renderDefaultFooter() {
265
247
  if (showCheckAll) {
266
248
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
@@ -270,15 +252,14 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
270
252
  }, i18n.get('checkSelect.checkAll')));
271
253
  }
272
254
  };
273
-
274
- var cls = cx(prefixCls, className); // 过滤掉未选中的数据
255
+ var cls = cx(prefixCls, className);
256
+ // 过滤掉未选中的数据
275
257
  // const tagList = useMemo(() => {
276
258
  // // @ts-ignore
277
259
  // const [semiCheckedIds] = getSemiCheckedIdsWithSet(flattedData, (id) => value.includes(id))
278
260
  // const ids = Array.from(new Set([...semiCheckedIds, ...value]))
279
261
  // return flattedData.filter((item) => ids.includes(item.id))
280
262
  // }, [value, flattedData])
281
-
282
263
  return /*#__PURE__*/React.createElement(Picker, Object.assign({
283
264
  ref: ref,
284
265
  className: cls
@@ -298,6 +279,7 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
298
279
  footer: renderDefaultFooter(),
299
280
  loading: rest.loading !== undefined ? rest.loading : loading,
300
281
  trigger: /*#__PURE__*/React.createElement(TagInputMock, Object.assign({}, tagInputProps, {
282
+ size: size,
301
283
  // ref={targetElementRef}
302
284
  // onClick={openMenu}
303
285
  // disabled={disabled}
@@ -314,10 +296,10 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
314
296
  // @ts-ignore
315
297
  invalid: invalid
316
298
  }))
317
- }), isArrayNonEmpty(treeProps.data) ?
318
- /*#__PURE__*/
299
+ }), isArrayNonEmpty(treeProps.data) ? /*#__PURE__*/
319
300
  // 只做渲染,不做逻辑处理(比如搜索过滤后,check操作的是对过滤后的data操作,这是不符合预期的)
320
301
  React.createElement(Tree, Object.assign({
302
+ size: 'md',
321
303
  className: prefixCls + "__tree",
322
304
  selectable: false,
323
305
  checkable: true,
@@ -333,11 +315,9 @@ var CheckTreeSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
333
315
  height: height
334
316
  }, treeProps)) : null);
335
317
  });
336
-
337
318
  if (__DEV__) {
338
319
  CheckTreeSelect.displayName = 'CheckTreeSelect';
339
320
  }
340
-
341
321
  var ALWAYS_ALLOW = function ALWAYS_ALLOW() {
342
322
  return true;
343
323
  };
@@ -348,39 +328,34 @@ var ALWAYS_ALLOW = function ALWAYS_ALLOW() {
348
328
  * @param flattedData
349
329
  * @returns
350
330
  */
351
-
352
-
353
331
  var getSemiCheckedIdsWithSet = function getSemiCheckedIdsWithSet(flattedData, isChecked, allowCheck) {
354
332
  if (allowCheck === void 0) {
355
333
  allowCheck = ALWAYS_ALLOW;
356
334
  }
357
-
358
335
  var semiCheckedNodes = [];
359
336
  var semiCheckedIdsSet = new Set();
360
337
  var parentId;
361
338
  var parent;
362
339
  flattedData.forEach(function (node) {
363
340
  parent = node.parent;
364
-
365
341
  if (parent && parent.id !== undefined) {
366
342
  if (!allowCheck(parent)) return;
367
343
  parentId = parent.id;
368
- if (semiCheckedIdsSet.has(parentId)) return; // 父节点没选中,但是当前节点被选中,则视为半选
369
-
344
+ if (semiCheckedIdsSet.has(parentId)) return;
345
+ // 父节点没选中,但是当前节点被选中,则视为半选
370
346
  if (!isChecked(parentId) && isChecked(node.id)) {
371
347
  semiCheckedIdsSet.add(parentId);
372
348
  semiCheckedNodes.push(parent);
373
349
  }
374
350
  }
375
- }); // 自下而上设置半选态
376
-
351
+ });
352
+ // 自下而上设置半选态
377
353
  semiCheckedNodes.forEach(function (node) {
378
354
  parent = node.parent;
379
-
380
355
  while (parent && parent.id !== undefined) {
381
356
  if (!allowCheck(parent)) return;
382
- parentId = parent.id; // 可能存在兄弟节点,共同祖先需要去重,避免重复计算
383
-
357
+ parentId = parent.id;
358
+ // 可能存在兄弟节点,共同祖先需要去重,避免重复计算
384
359
  if (semiCheckedIdsSet.has(parentId)) return;
385
360
  semiCheckedIdsSet.add(parentId);
386
361
  parent = parent.parent;
@@ -389,5 +364,4 @@ var getSemiCheckedIdsWithSet = function getSemiCheckedIdsWithSet(flattedData, is
389
364
  var semiCheckedIds = Array.from(semiCheckedIdsSet);
390
365
  return [semiCheckedIds, semiCheckedIdsSet];
391
366
  };
392
-
393
367
  export { CheckTreeSelect, getSemiCheckedIdsWithSet };
@@ -11,72 +11,64 @@ import { useState, useMemo, useCallback } from 'react';
11
11
  import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
12
12
  import { useCascadeCheck } from '@hi-ui/use-check';
13
13
  import { parseCheckDataDirty, processCheckedIds } from '../utils/index.js';
14
+
14
15
  /**
15
16
  * 用于 tree 组件复选的 hook
16
17
  */
17
-
18
18
  var useCheck = function useCheck(checkedMode, disabled, flattedData, defaultCheckedIds, checkedIdsProp, onCheck) {
19
19
  // 搜索时临时选中缓存数据
20
20
  var _useState = useState([]),
21
- checkedNodes = _useState[0],
22
- setCheckedNodes = _useState[1];
23
-
21
+ checkedNodes = _useState[0],
22
+ setCheckedNodes = _useState[1];
24
23
  var _useUncontrolledState = useUncontrolledState(defaultCheckedIds, checkedIdsProp, function (checkedIds, checkedNode, checked, semiCheckedIds) {
25
- var nextCheckedNodes = flattedData.filter(function (item) {
26
- return checkedIds.includes(item.id);
27
- });
28
- setCheckedNodes(nextCheckedNodes);
29
- onCheck === null || onCheck === void 0 ? void 0 : onCheck(checkedIds, {
30
- checkedNodes: nextCheckedNodes.map(function (item) {
31
- return item.raw;
32
- }),
33
- targetNode: checkedNode,
34
- semiCheckedIds: semiCheckedIds,
35
- checked: checked
36
- });
37
- }),
38
- checkedIds = _useUncontrolledState[0],
39
- trySetCheckedIds = _useUncontrolledState[1]; // 入口数据处理
40
-
41
-
24
+ var nextCheckedNodes = flattedData.filter(function (item) {
25
+ return checkedIds.includes(item.id);
26
+ });
27
+ setCheckedNodes(nextCheckedNodes);
28
+ onCheck === null || onCheck === void 0 ? void 0 : onCheck(checkedIds, {
29
+ checkedNodes: nextCheckedNodes.map(function (item) {
30
+ return item.raw;
31
+ }),
32
+ targetNode: checkedNode,
33
+ semiCheckedIds: semiCheckedIds,
34
+ checked: checked
35
+ });
36
+ }),
37
+ checkedIds = _useUncontrolledState[0],
38
+ trySetCheckedIds = _useUncontrolledState[1];
39
+ // 入口数据处理
42
40
  var parsedCheckedIds = useMemo(function () {
43
41
  return parseCheckDataDirty(checkedMode, checkedIds, flattedData, allowCheck);
44
42
  }, [checkedMode, checkedIds, flattedData]);
45
43
  var cascaded = checkedMode !== 'SEPARATE';
46
-
47
44
  var _useCascadeCheck = useCascadeCheck({
48
- cascaded: cascaded,
49
- disabled: disabled,
50
- flattedData: flattedData,
51
- checkedIds: parsedCheckedIds,
52
- onCheck: function onCheck(checkedIds, checkedNode, checked, semiCheckedIds) {
53
- // 出口数据处理
54
- var processedIds = processCheckedIds(checkedMode, checkedIds, flattedData, allowCheck);
55
- trySetCheckedIds(processedIds, checkedNode, checked, semiCheckedIds);
56
- },
57
- allowCheck: allowCheck
58
- }),
59
- onNodeCheck = _useCascadeCheck[0];
60
-
45
+ cascaded: cascaded,
46
+ disabled: disabled,
47
+ flattedData: flattedData,
48
+ checkedIds: parsedCheckedIds,
49
+ onCheck: function onCheck(checkedIds, checkedNode, checked, semiCheckedIds) {
50
+ // 出口数据处理
51
+ var processedIds = processCheckedIds(checkedMode, checkedIds, flattedData, allowCheck);
52
+ trySetCheckedIds(processedIds, checkedNode, checked, semiCheckedIds);
53
+ },
54
+ allowCheck: allowCheck
55
+ }),
56
+ onNodeCheck = _useCascadeCheck[0];
61
57
  var proxyOnNodeCheck = useCallback(function (target, shouldChecked) {
62
58
  // 保证 target 来源于原数据自身,而不是tree内部
63
59
  var targetNode = flattedData.find(function (item) {
64
60
  return item.id === target.id;
65
61
  });
66
-
67
62
  if (targetNode) {
68
63
  onNodeCheck(targetNode, shouldChecked);
69
64
  }
70
65
  }, [onNodeCheck, flattedData]);
71
66
  return [checkedIds, trySetCheckedIds, proxyOnNodeCheck, checkedNodes, parsedCheckedIds];
72
67
  };
73
-
74
68
  var allowCheck = function allowCheck(targetItem) {
75
69
  if (targetItem.disabled) {
76
70
  return false;
77
71
  }
78
-
79
72
  return true;
80
73
  };
81
-
82
74
  export { useCheck };