@hi-ui/cascader 4.4.0 → 4.5.0

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,26 @@
1
1
  # @hi-ui/cascader
2
2
 
3
+ ## 4.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#3231](https://github.com/XiaoMi/hiui/pull/3231) [`bbba46153`](https://github.com/XiaoMi/hiui/commit/bbba4615313cd0618deff633bebc657e7f34ec94) Thanks [@zyprepare](https://github.com/zyprepare)! - feat(cascader): onChange 回调中增加选中项对象参数返回 (#3230)
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`dc1311a91`](https://github.com/XiaoMi/hiui/commit/dc1311a917518bc5debef755a9fcd4e33fb58790)]:
12
+ - @hi-ui/use-search-mode@4.2.1
13
+
14
+ ## 4.4.1
15
+
16
+ ### Patch Changes
17
+
18
+ - [#3196](https://github.com/XiaoMi/hiui/pull/3196) [`80a909d2d`](https://github.com/XiaoMi/hiui/commit/80a909d2dae99d68d71f2ec6f4b210080d032ec0) Thanks [@KEH3](https://github.com/KEH3)! - fix(popper): ref 中增加更新位置方法解决上游组件弹窗被遮挡问题 (#3195)
19
+
20
+ - Updated dependencies [[`80a909d2d`](https://github.com/XiaoMi/hiui/commit/80a909d2dae99d68d71f2ec6f4b210080d032ec0)]:
21
+ - @hi-ui/picker@4.1.8
22
+ - @hi-ui/popper@4.1.7
23
+
3
24
  ## 4.4.0
4
25
 
5
26
  ### Minor Changes
@@ -90,6 +90,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
90
90
  customRender = props.customRender,
91
91
  rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "prefix", "suffix", "onOpen", "onClose", "onClear", "renderExtraFooter", "dropdownColumnRender", "closeOnSelect", "customRender"]);
92
92
  var i18n = core.useLocaleContext();
93
+ var pickerInnerRef = React.useRef(null);
93
94
  var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
94
95
  var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
95
96
  visible: visible,
@@ -220,6 +221,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
220
221
  return flattedData;
221
222
  }, [selectedItem, flattedData]);
222
223
  var cls = classname.cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
224
+ React.useEffect(function () {
225
+ var _a;
226
+ if (menuVisible) {
227
+ // 数据改变时更新弹窗显示位置,避免弹窗内容被遮挡
228
+ (_a = pickerInnerRef.current) === null || _a === void 0 ? void 0 : _a.update();
229
+ }
230
+ }, [menuVisible, showData]);
223
231
  return /*#__PURE__*/React__default["default"].createElement(context.CascaderProvider, {
224
232
  value: Object.assign(Object.assign({}, context$1), {
225
233
  expandTrigger: expandTrigger,
@@ -229,6 +237,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
229
237
  })
230
238
  }, /*#__PURE__*/React__default["default"].createElement(picker.Picker, Object.assign({
231
239
  ref: ref,
240
+ innerRef: pickerInnerRef,
232
241
  className: cls,
233
242
  overlayClassName: classname.cx(prefixCls + "__popper", overlayClassName)
234
243
  }, rootProps, {
@@ -56,7 +56,7 @@ var useCascader = function useCascader(_a) {
56
56
  tryChangeValue(itemPaths.map(function (_ref) {
57
57
  var id = _ref.id;
58
58
  return id;
59
- }));
59
+ }), item, itemPaths);
60
60
  onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, itemPaths);
61
61
  };
62
62
  // 单击选中某项
@@ -8,7 +8,7 @@
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
10
  import { __rest } from 'tslib';
11
- import React, { forwardRef, useState, useMemo, useEffect } from 'react';
11
+ import React, { forwardRef, useRef, useState, useMemo, useEffect } from 'react';
12
12
  import { getPrefixCls, cx } from '@hi-ui/classname';
13
13
  import { __DEV__ } from '@hi-ui/env';
14
14
  import { useUncontrolledToggle } from '@hi-ui/use-toggle';
@@ -77,6 +77,7 @@ var Cascader = /*#__PURE__*/forwardRef(function (props, ref) {
77
77
  customRender = props.customRender,
78
78
  rest = __rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "prefix", "suffix", "onOpen", "onClose", "onClear", "renderExtraFooter", "dropdownColumnRender", "closeOnSelect", "customRender"]);
79
79
  var i18n = useLocaleContext();
80
+ var pickerInnerRef = useRef(null);
80
81
  var placeholder = isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
81
82
  var _useUncontrolledToggl = useUncontrolledToggle({
82
83
  visible: visible,
@@ -207,6 +208,13 @@ var Cascader = /*#__PURE__*/forwardRef(function (props, ref) {
207
208
  return flattedData;
208
209
  }, [selectedItem, flattedData]);
209
210
  var cls = cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
211
+ useEffect(function () {
212
+ var _a;
213
+ if (menuVisible) {
214
+ // 数据改变时更新弹窗显示位置,避免弹窗内容被遮挡
215
+ (_a = pickerInnerRef.current) === null || _a === void 0 ? void 0 : _a.update();
216
+ }
217
+ }, [menuVisible, showData]);
210
218
  return /*#__PURE__*/React.createElement(CascaderProvider, {
211
219
  value: Object.assign(Object.assign({}, context), {
212
220
  expandTrigger: expandTrigger,
@@ -216,6 +224,7 @@ var Cascader = /*#__PURE__*/forwardRef(function (props, ref) {
216
224
  })
217
225
  }, /*#__PURE__*/React.createElement(Picker, Object.assign({
218
226
  ref: ref,
227
+ innerRef: pickerInnerRef,
219
228
  className: cls,
220
229
  overlayClassName: cx(prefixCls + "__popper", overlayClassName)
221
230
  }, rootProps, {
@@ -51,7 +51,7 @@ var useCascader = function useCascader(_a) {
51
51
  tryChangeValue(itemPaths.map(function (_ref) {
52
52
  var id = _ref.id;
53
53
  return id;
54
- }));
54
+ }), item, itemPaths);
55
55
  onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, itemPaths);
56
56
  };
57
57
  // 单击选中某项
@@ -41,7 +41,7 @@ export interface UseCascaderProps {
41
41
  /**
42
42
  * 选中值改变时的回调
43
43
  */
44
- onChange?: (value: React.ReactText[]) => void;
44
+ onChange?: (value: React.ReactText[], targetOption?: CascaderItemEventData, optionPaths?: FlattedCascaderDataItem[]) => void;
45
45
  /**
46
46
  * 选中选项时触发,仅供内部使用。暂不对外暴露
47
47
  * @private
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/cascader",
3
- "version": "4.4.0",
3
+ "version": "4.5.0",
4
4
  "description": "A sub-package for @hi-ui/hiui.",
5
5
  "keywords": [],
6
6
  "author": "HiUI <mi-hiui@xiaomi.com>",
@@ -50,15 +50,15 @@
50
50
  "@hi-ui/highlighter": "^4.1.2",
51
51
  "@hi-ui/icons": "^4.0.19",
52
52
  "@hi-ui/input": "^4.4.0",
53
- "@hi-ui/picker": "^4.1.6",
54
- "@hi-ui/popper": "^4.1.5",
53
+ "@hi-ui/picker": "^4.1.8",
54
+ "@hi-ui/popper": "^4.1.7",
55
55
  "@hi-ui/spinner": "^4.0.9",
56
56
  "@hi-ui/tree-utils": "^4.1.4",
57
57
  "@hi-ui/type-assertion": "^4.0.4",
58
58
  "@hi-ui/use-check-state": "^4.0.4",
59
59
  "@hi-ui/use-data-source": "^4.0.4",
60
60
  "@hi-ui/use-latest": "^4.0.4",
61
- "@hi-ui/use-search-mode": "^4.1.4",
61
+ "@hi-ui/use-search-mode": "^4.2.1",
62
62
  "@hi-ui/use-toggle": "^4.0.4",
63
63
  "@hi-ui/use-uncontrolled-state": "^4.0.4"
64
64
  },