@hi-ui/check-cascader 4.3.1-alpha.1 → 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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @hi-ui/check-cascader
2
2
 
3
+ ## 4.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2993](https://github.com/XiaoMi/hiui/pull/2993) [`102d01a6b`](https://github.com/XiaoMi/hiui/commit/102d01a6bbae65e452a861060f6ac13d44b6d06c) Thanks [@zyprepare](https://github.com/zyprepare)! - fix: 优化搜索算法
8
+
9
+ - [#2993](https://github.com/XiaoMi/hiui/pull/2993) [`102d01a6b`](https://github.com/XiaoMi/hiui/commit/102d01a6bbae65e452a861060f6ac13d44b6d06c) Thanks [@zyprepare](https://github.com/zyprepare)! - fix: 修复 checkedMode="PARENT"模式下搜索后子节点无法选中问题
10
+
11
+ - [#3001](https://github.com/XiaoMi/hiui/pull/3001) [`872c903`](https://github.com/XiaoMi/hiui/commit/872c903af99f2a00c95de134d344a3cb53deab45) Thanks [@zyprepare](https://github.com/zyprepare)! - perf: 优化大数据下勾选根节点时卡顿
12
+
13
+ - [#2994](https://github.com/XiaoMi/hiui/pull/2994) [`4d6b26507`](https://github.com/XiaoMi/hiui/commit/4d6b26507479030686d5da65e1bec8b353b80bfa) Thanks [@zyprepare](https://github.com/zyprepare)! - fix: 修复 keyword 设置后数据没有过滤的问题
14
+
15
+ - Updated dependencies [[`908d6cd96`](https://github.com/XiaoMi/hiui/commit/908d6cd9657551203917230d9a91de45e65354c2)]:
16
+ - @hi-ui/tag-input@4.1.2
17
+
3
18
  ## 4.3.0
4
19
 
5
20
  ### Minor Changes
@@ -67,6 +67,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
67
67
  invalid = _a.invalid,
68
68
  filterOption = _a.filterOption,
69
69
  searchableProp = _a.searchable,
70
+ keywordProp = _a.keyword,
70
71
  onSearchProp = _a.onSearch,
71
72
  overlayClassName = _a.overlayClassName,
72
73
  _a$type = _a.type,
@@ -84,7 +85,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
84
85
  dropdownColumnRender = _a.dropdownColumnRender,
85
86
  customRender = _a.customRender,
86
87
  fieldNames = _a.fieldNames,
87
- rest = tslib.__rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames"]);
88
+ rest = tslib.__rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames"]);
88
89
  var i18n = core.useLocaleContext();
89
90
  var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('checkCascader.placeholder') : placeholderProp;
90
91
  var flatted = type === 'flatted';
@@ -99,9 +100,15 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
99
100
  var _useCache = index.useCache(data),
100
101
  cascaderData = _useCache[0],
101
102
  setCascaderData = _useCache[1];
102
- var flattedData = React.useMemo(function () {
103
- return index$1.flattenTreeData(cascaderData, fieldNames);
104
- }, [cascaderData, fieldNames]);
103
+ var _useMemo = React.useMemo(function () {
104
+ var flattedData = index$1.flattenTreeData(cascaderData, fieldNames);
105
+ var flattedDataMap = new Map(flattedData.map(function (node, index) {
106
+ return [node.id, node];
107
+ }));
108
+ return [flattedData, flattedDataMap];
109
+ }, [cascaderData, fieldNames]),
110
+ flattedData = _useMemo[0],
111
+ flattedDataMap = _useMemo[1];
105
112
  var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
106
113
  _value = _useUncontrolledState[0],
107
114
  tryChangeValue = _useUncontrolledState[1];
@@ -110,11 +117,8 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
110
117
  return path[path.length - 1];
111
118
  });
112
119
  var proxyOnChange = useLatest.useLatestCallback(function (value, item, shouldChecked) {
113
- var flattedItems = flattedData;
114
120
  var itemsPaths = value.map(function (lastId) {
115
- var item = flattedItems.find(function (item) {
116
- return item.id === lastId;
117
- });
121
+ var item = flattedDataMap.get(lastId);
118
122
  if (item) {
119
123
  return treeUtils.getTopDownAncestors(item).map(function (_ref) {
120
124
  var id = _ref.id;
@@ -145,6 +149,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
145
149
  });
146
150
  var _useSearchMode = useSearchMode.useSearchMode({
147
151
  searchable: searchableProp,
152
+ keyword: keywordProp,
148
153
  strategies: [customSearchStrategy, upMatchSearchStrategy]
149
154
  }),
150
155
  stateInSearch = _useSearchMode.state,
@@ -196,11 +201,9 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
196
201
  var cls = classname.cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
197
202
  var selectedItems = React.useMemo(function () {
198
203
  return value.map(function (selectedId) {
199
- return flattedData.find(function (item) {
200
- return item.id === selectedId;
201
- });
204
+ return flattedDataMap.get(selectedId);
202
205
  });
203
- }, [value, flattedData]);
206
+ }, [flattedDataMap, value]);
204
207
  return /*#__PURE__*/React__default["default"].createElement(picker.Picker, Object.assign({
205
208
  ref: ref,
206
209
  className: cls,
@@ -220,6 +223,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
220
223
  searchable: searchable,
221
224
  scrollable: false,
222
225
  footer: typeAssertion.isFunction(renderExtraFooter) && renderExtraFooter(),
226
+ keyword: keywordProp,
223
227
  onSearch: funcUtils.callAllFuncs(onSearchProp, onSearch),
224
228
  trigger: customRender ? typeof customRender === 'function' ? customRender(selectedItems) : customRender : ( /*#__PURE__*/React__default["default"].createElement(tagInput.TagInputMock, Object.assign({}, tagInputProps, {
225
229
  size: size,
@@ -55,6 +55,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
55
55
  invalid = _a.invalid,
56
56
  filterOption = _a.filterOption,
57
57
  searchableProp = _a.searchable,
58
+ keywordProp = _a.keyword,
58
59
  onSearchProp = _a.onSearch,
59
60
  overlayClassName = _a.overlayClassName,
60
61
  _a$type = _a.type,
@@ -72,7 +73,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
72
73
  dropdownColumnRender = _a.dropdownColumnRender,
73
74
  customRender = _a.customRender,
74
75
  fieldNames = _a.fieldNames,
75
- rest = __rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames"]);
76
+ rest = __rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames"]);
76
77
  var i18n = useLocaleContext();
77
78
  var placeholder = isUndef(placeholderProp) ? i18n.get('checkCascader.placeholder') : placeholderProp;
78
79
  var flatted = type === 'flatted';
@@ -87,9 +88,15 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
87
88
  var _useCache = useCache(data),
88
89
  cascaderData = _useCache[0],
89
90
  setCascaderData = _useCache[1];
90
- var flattedData = useMemo(function () {
91
- return flattenTreeData(cascaderData, fieldNames);
92
- }, [cascaderData, fieldNames]);
91
+ var _useMemo = useMemo(function () {
92
+ var flattedData = flattenTreeData(cascaderData, fieldNames);
93
+ var flattedDataMap = new Map(flattedData.map(function (node, index) {
94
+ return [node.id, node];
95
+ }));
96
+ return [flattedData, flattedDataMap];
97
+ }, [cascaderData, fieldNames]),
98
+ flattedData = _useMemo[0],
99
+ flattedDataMap = _useMemo[1];
93
100
  var _useUncontrolledState = useUncontrolledState(defaultValue, valueProp, onChange),
94
101
  _value = _useUncontrolledState[0],
95
102
  tryChangeValue = _useUncontrolledState[1];
@@ -98,11 +105,8 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
98
105
  return path[path.length - 1];
99
106
  });
100
107
  var proxyOnChange = useLatestCallback(function (value, item, shouldChecked) {
101
- var flattedItems = flattedData;
102
108
  var itemsPaths = value.map(function (lastId) {
103
- var item = flattedItems.find(function (item) {
104
- return item.id === lastId;
105
- });
109
+ var item = flattedDataMap.get(lastId);
106
110
  if (item) {
107
111
  return getTopDownAncestors(item).map(function (_ref) {
108
112
  var id = _ref.id;
@@ -133,6 +137,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
133
137
  });
134
138
  var _useSearchMode = useSearchMode({
135
139
  searchable: searchableProp,
140
+ keyword: keywordProp,
136
141
  strategies: [customSearchStrategy, upMatchSearchStrategy]
137
142
  }),
138
143
  stateInSearch = _useSearchMode.state,
@@ -184,11 +189,9 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
184
189
  var cls = cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
185
190
  var selectedItems = useMemo(function () {
186
191
  return value.map(function (selectedId) {
187
- return flattedData.find(function (item) {
188
- return item.id === selectedId;
189
- });
192
+ return flattedDataMap.get(selectedId);
190
193
  });
191
- }, [value, flattedData]);
194
+ }, [flattedDataMap, value]);
192
195
  return /*#__PURE__*/React.createElement(Picker, Object.assign({
193
196
  ref: ref,
194
197
  className: cls,
@@ -208,6 +211,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
208
211
  searchable: searchable,
209
212
  scrollable: false,
210
213
  footer: isFunction(renderExtraFooter) && renderExtraFooter(),
214
+ keyword: keywordProp,
211
215
  onSearch: callAllFuncs(onSearchProp, onSearch),
212
216
  trigger: customRender ? typeof customRender === 'function' ? customRender(selectedItems) : customRender : ( /*#__PURE__*/React.createElement(TagInputMock, Object.assign({}, tagInputProps, {
213
217
  size: size,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/check-cascader",
3
- "version": "4.3.1-alpha.1",
3
+ "version": "4.3.1",
4
4
  "description": "A sub-package for @hi-ui/hiui.",
5
5
  "keywords": [],
6
6
  "author": "HiUI <mi-hiui@xiaomi.com>",
@@ -54,7 +54,7 @@
54
54
  "@hi-ui/picker": "^4.1.6",
55
55
  "@hi-ui/popper": "^4.1.5",
56
56
  "@hi-ui/spinner": "^4.0.9",
57
- "@hi-ui/tag-input": "^4.1.1",
57
+ "@hi-ui/tag-input": "^4.1.2",
58
58
  "@hi-ui/times": "^4.0.4",
59
59
  "@hi-ui/tree-utils": "^4.1.6",
60
60
  "@hi-ui/type-assertion": "^4.0.4",