@hi-ui/cascader 4.1.6 → 4.2.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,11 @@
1
1
  # @hi-ui/cascader
2
2
 
3
+ ## 4.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2805](https://github.com/XiaoMi/hiui/pull/2805) [`9146d5ef2`](https://github.com/XiaoMi/hiui/commit/9146d5ef207201a6ff8f42fb3ca66e7929335c1a) Thanks [@zyprepare](https://github.com/zyprepare)! - feat: add closeOnSelect api
8
+
3
9
  ## 4.1.6
4
10
 
5
11
  ### Patch Changes
@@ -81,7 +81,9 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
81
81
  onClose = props.onClose,
82
82
  renderExtraFooter = props.renderExtraFooter,
83
83
  dropdownColumnRender = props.dropdownColumnRender,
84
- rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "onOpen", "onClose", "renderExtraFooter", "dropdownColumnRender"]);
84
+ _props$closeOnSelect = props.closeOnSelect,
85
+ closeOnSelect = _props$closeOnSelect === void 0 ? true : _props$closeOnSelect,
86
+ rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "onOpen", "onClose", "renderExtraFooter", "dropdownColumnRender", "closeOnSelect"]);
85
87
  var i18n = core.useLocaleContext();
86
88
  var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
87
89
  var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
@@ -99,8 +101,11 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
99
101
  var onSelect = function onSelect(value, item, itemPaths) {
100
102
  onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, itemPaths);
101
103
  setSelectedItem(item);
102
- // 关闭弹窗
103
- menuVisibleAction.off();
104
+ // 选中子节点时一定关闭弹窗,或者点击父节点并且 closeOnSelect 为 true 时也可以关闭弹窗
105
+ if (!item.children || item.children.length > 0 && closeOnSelect) {
106
+ // 关闭弹窗
107
+ menuVisibleAction.off();
108
+ }
104
109
  };
105
110
  // 拦截 titleRender,自定义高亮展示
106
111
  var proxyTitleRender = function proxyTitleRender(node) {
@@ -68,7 +68,9 @@ var Cascader = /*#__PURE__*/forwardRef(function (props, ref) {
68
68
  onClose = props.onClose,
69
69
  renderExtraFooter = props.renderExtraFooter,
70
70
  dropdownColumnRender = props.dropdownColumnRender,
71
- rest = __rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "onOpen", "onClose", "renderExtraFooter", "dropdownColumnRender"]);
71
+ _props$closeOnSelect = props.closeOnSelect,
72
+ closeOnSelect = _props$closeOnSelect === void 0 ? true : _props$closeOnSelect,
73
+ rest = __rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "onOpen", "onClose", "renderExtraFooter", "dropdownColumnRender", "closeOnSelect"]);
72
74
  var i18n = useLocaleContext();
73
75
  var placeholder = isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
74
76
  var _useUncontrolledToggl = useUncontrolledToggle({
@@ -86,8 +88,11 @@ var Cascader = /*#__PURE__*/forwardRef(function (props, ref) {
86
88
  var onSelect = function onSelect(value, item, itemPaths) {
87
89
  onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, itemPaths);
88
90
  setSelectedItem(item);
89
- // 关闭弹窗
90
- menuVisibleAction.off();
91
+ // 选中子节点时一定关闭弹窗,或者点击父节点并且 closeOnSelect 为 true 时也可以关闭弹窗
92
+ if (!item.children || item.children.length > 0 && closeOnSelect) {
93
+ // 关闭弹窗
94
+ menuVisibleAction.off();
95
+ }
91
96
  };
92
97
  // 拦截 titleRender,自定义高亮展示
93
98
  var proxyTitleRender = function proxyTitleRender(node) {
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
2
  import { CascaderItemEventData, CascaderExpandTriggerEnum } from './types';
3
3
  export declare const CascaderProvider: React.Provider<(Omit<{
4
- rootProps: {};
4
+ rootProps: {
5
+ closeOnSelect?: boolean | undefined;
6
+ };
5
7
  reset: () => void;
6
8
  flattedData: any;
7
9
  value: React.ReactText[];
@@ -20,7 +22,9 @@ export declare const CascaderProvider: React.Provider<(Omit<{
20
22
  dropdownColumnRender?: ((menu: React.ReactElement, level: number) => React.ReactNode) | undefined;
21
23
  }) | null>;
22
24
  export declare const useCascaderContext: () => Omit<{
23
- rootProps: {};
25
+ rootProps: {
26
+ closeOnSelect?: boolean | undefined;
27
+ };
24
28
  reset: () => void;
25
29
  flattedData: any;
26
30
  value: React.ReactText[];
@@ -1,7 +1,13 @@
1
1
  import React from 'react';
2
2
  import { FlattedCascaderDataItem, CascaderItemRequiredProps, CascaderItemEventData, CascaderDataItem } from './types';
3
3
  export declare const useCascader: ({ defaultValue, value: valueProp, onChange: onChangeProp, data, disabled, changeOnSelect, flatted, onSelect: onSelectProp, onLoadChildren, cascaderData: cascaderDataProp, setCascaderData: setCascaderDataProp, flattedData: flattedDataProp, fieldNames, ...rest }: UseCascaderProps) => {
4
- rootProps: {};
4
+ rootProps: {
5
+ /**
6
+ * 是否启用选择即关闭(用于 changeOnSelect 模式下控制父节点点击交互)
7
+ * @default true
8
+ */
9
+ closeOnSelect?: boolean | undefined;
10
+ };
5
11
  reset: () => void;
6
12
  flattedData: any;
7
13
  value: React.ReactText[];
@@ -49,6 +55,11 @@ export interface UseCascaderProps {
49
55
  * 是否启用选择即改变功能
50
56
  */
51
57
  changeOnSelect?: boolean;
58
+ /**
59
+ * 是否启用选择即关闭(用于 changeOnSelect 模式下控制父节点点击交互)
60
+ * @default true
61
+ */
62
+ closeOnSelect?: boolean;
52
63
  /**
53
64
  * 将选项拍平展示,不支持 `onLoadChildren` 异步加载交互。暂不对外暴露
54
65
  * @private
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/cascader",
3
- "version": "4.1.6",
3
+ "version": "4.2.0",
4
4
  "description": "A sub-package for @hi-ui/hiui.",
5
5
  "keywords": [],
6
6
  "author": "HiUI <mi-hiui@xiaomi.com>",