@hi-ui/dropdown 4.1.1 → 4.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @hi-ui/dropdown
2
2
 
3
+ ## 4.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
8
+
9
+ - Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
10
+ - @hi-ui/core@4.0.6
11
+ - @hi-ui/use-latest@4.0.2
12
+ - @hi-ui/use-timeout@4.0.2
13
+ - @hi-ui/use-toggle@4.0.2
14
+ - @hi-ui/use-unmount-effect@4.0.2
15
+ - @hi-ui/icons@4.0.16
16
+ - @hi-ui/button@4.0.7
17
+ - @hi-ui/popper@4.1.1
18
+ - @hi-ui/classname@4.0.2
19
+ - @hi-ui/dom-utils@4.0.5
20
+ - @hi-ui/env@4.0.2
21
+ - @hi-ui/react-utils@4.0.2
22
+ - @hi-ui/type-assertion@4.0.2
23
+
3
24
  ## 4.1.1
4
25
 
5
26
  ### Patch Changes
@@ -9,97 +9,63 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- var _typeof = require("@babel/runtime/helpers/typeof");
13
-
14
- Object.defineProperty(exports, '__esModule', {
15
- value: true
16
- });
17
-
18
12
  var tslib = require('tslib');
19
-
20
13
  var React = require('react');
21
-
22
14
  var classname = require('@hi-ui/classname');
23
-
24
15
  var env = require('@hi-ui/env');
25
-
26
16
  var popper = require('@hi-ui/popper');
27
-
28
17
  var context = require('./context.js');
29
-
30
18
  var useDropdown = require('./use-dropdown.js');
31
-
32
19
  var typeAssertion = require('@hi-ui/type-assertion');
33
-
34
20
  var Button = require('@hi-ui/button');
35
-
36
21
  var icons = require('@hi-ui/icons');
37
-
38
- function _interopDefaultLegacy(e) {
39
- return e && _typeof(e) === 'object' && 'default' in e ? e : {
40
- 'default': e
41
- };
42
- }
43
-
44
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
45
-
46
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
47
-
48
22
  var _role = 'dropdown';
49
-
50
23
  var _prefix = classname.getPrefixCls(_role);
51
-
52
24
  var DEFAULT_DATA = [];
53
25
  /**
54
26
  * 下拉菜单
55
27
  */
56
-
57
28
  var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
58
29
  var _a$prefixCls = _a.prefixCls,
59
- prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
60
- _a$role = _a.role,
61
- role = _a$role === void 0 ? _role : _a$role,
62
- className = _a.className,
63
- triggerButton = _a.children,
64
- _a$data = _a.data,
65
- data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
66
- title = _a.title,
67
- _a$type = _a.type,
68
- type = _a$type === void 0 ? 'text' : _a$type,
69
- _onClick = _a.onClick,
70
- onButtonClick = _a.onButtonClick,
71
- overlayClassName = _a.overlayClassName,
72
- _a$size = _a.size,
73
- size = _a$size === void 0 ? 'md' : _a$size,
74
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "data", "title", "type", "onClick", "onButtonClick", "overlayClassName", "size"]);
75
-
30
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
31
+ _a$role = _a.role,
32
+ role = _a$role === void 0 ? _role : _a$role,
33
+ className = _a.className,
34
+ triggerButton = _a.children,
35
+ _a$data = _a.data,
36
+ data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
37
+ title = _a.title,
38
+ _a$type = _a.type,
39
+ type = _a$type === void 0 ? 'text' : _a$type,
40
+ _onClick = _a.onClick,
41
+ onButtonClick = _a.onButtonClick,
42
+ overlayClassName = _a.overlayClassName,
43
+ _a$size = _a.size,
44
+ size = _a$size === void 0 ? 'md' : _a$size,
45
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "data", "title", "type", "onClick", "onButtonClick", "overlayClassName", "size"]);
76
46
  var _b = useDropdown.useDropdown(rest),
77
- rootProps = _b.rootProps,
78
- providedValue = tslib.__rest(_b, ["rootProps"]);
79
-
47
+ rootProps = _b.rootProps,
48
+ providedValue = tslib.__rest(_b, ["rootProps"]);
80
49
  var getMenuProps = providedValue.getMenuProps,
81
- getTriggerProps = providedValue.getTriggerProps,
82
- disabled = providedValue.disabled,
83
- menuVisibleAction = providedValue.menuVisibleAction;
50
+ getTriggerProps = providedValue.getTriggerProps,
51
+ disabled = providedValue.disabled,
52
+ menuVisibleAction = providedValue.menuVisibleAction;
84
53
  var cls = classname.cx(prefixCls, className, disabled && prefixCls + "--disabled");
85
-
86
54
  var dig = function dig(treeData) {
87
55
  return treeData.map(function (item) {
88
- var menu = typeAssertion.isArrayNonEmpty(item.children) ? /*#__PURE__*/React__default["default"].createElement(DropdownMenu, {
56
+ var menu = typeAssertion.isArrayNonEmpty(item.children) ? /*#__PURE__*/React.createElement(DropdownMenu, {
89
57
  overlay: {
90
58
  gutterGap: 16
91
59
  },
92
60
  size: size
93
61
  }, dig(item.children)) : null;
94
-
95
62
  if (item.split) {
96
- return /*#__PURE__*/React__default["default"].createElement("li", {
63
+ return /*#__PURE__*/React.createElement("li", {
97
64
  key: item.id,
98
65
  className: prefixCls + "-divider"
99
66
  });
100
67
  }
101
-
102
- return /*#__PURE__*/React__default["default"].createElement(DropdownMenuItem, {
68
+ return /*#__PURE__*/React.createElement(DropdownMenuItem, {
103
69
  key: item.id,
104
70
  disabled: item.disabled,
105
71
  href: item.href,
@@ -109,7 +75,6 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
109
75
  onClick: function onClick() {
110
76
  if (item.disabled) return;
111
77
  _onClick === null || _onClick === void 0 ? void 0 : _onClick(item.id);
112
-
113
78
  if (!typeAssertion.isArray(item.children)) {
114
79
  menuVisibleAction.off();
115
80
  }
@@ -117,43 +82,38 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
117
82
  }, item.title);
118
83
  });
119
84
  };
120
-
121
85
  var renderButton = function renderButton() {
122
86
  if (triggerButton) {
123
87
  // @ts-ignore
124
88
  return /*#__PURE__*/React.cloneElement(triggerButton, getTriggerProps(triggerButton.props, triggerButton.ref));
125
89
  }
126
-
127
90
  if (type === 'text' || type === 'button') {
128
- return /*#__PURE__*/React__default["default"].createElement(Button__default["default"], Object.assign({}, getTriggerProps(), {
91
+ return /*#__PURE__*/React.createElement(Button, Object.assign({}, getTriggerProps(), {
129
92
  appearance: type === 'button' ? 'filled' : 'link'
130
- }), title, /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, {
93
+ }), title, /*#__PURE__*/React.createElement(icons.DownOutlined, {
131
94
  style: {
132
95
  marginInlineStart: 2
133
96
  }
134
97
  }));
135
98
  }
136
-
137
99
  if (type === 'group') {
138
- return /*#__PURE__*/React__default["default"].createElement(Button.ButtonGroup, null, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
100
+ return /*#__PURE__*/React.createElement(Button.ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
139
101
  onClick: onButtonClick
140
- }, title), /*#__PURE__*/React__default["default"].createElement(Button__default["default"], Object.assign({
102
+ }, title), /*#__PURE__*/React.createElement(Button, Object.assign({
141
103
  className: classname.cx(prefixCls + "__icon", prefixCls + "__icon-btn-wrap")
142
104
  }, getTriggerProps(), {
143
- icon: /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null)
105
+ icon: /*#__PURE__*/React.createElement(icons.DownOutlined, null)
144
106
  })));
145
107
  }
146
-
147
108
  return null;
148
109
  };
149
-
150
- return /*#__PURE__*/React__default["default"].createElement(context.DropDownProvider, {
110
+ return /*#__PURE__*/React.createElement(context.DropDownProvider, {
151
111
  value: providedValue
152
- }, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
112
+ }, /*#__PURE__*/React.createElement("div", Object.assign({
153
113
  ref: ref,
154
114
  role: role,
155
115
  className: cls
156
- }, rootProps), renderButton(), typeAssertion.isArrayNonEmpty(data) ? /*#__PURE__*/React__default["default"].createElement(DropdownMenu, Object.assign({}, getMenuProps({
116
+ }, rootProps), renderButton(), typeAssertion.isArrayNonEmpty(data) ? /*#__PURE__*/React.createElement(DropdownMenu, Object.assign({}, getMenuProps({
157
117
  overlay: {
158
118
  disabledPortal: false,
159
119
  className: overlayClassName
@@ -162,88 +122,78 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_a, ref) {
162
122
  size: size
163
123
  }), dig(data)) : null));
164
124
  });
165
-
166
125
  if (env.__DEV__) {
167
126
  Dropdown.displayName = 'Dropdown';
168
127
  }
169
-
170
128
  var dropdownMenuPrefix = classname.getPrefixCls('dropdown-menu');
171
129
  var DropdownMenu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
172
130
  var _a$prefixCls2 = _a.prefixCls,
173
- prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
174
- overlay = _a.overlay,
175
- parents = _a.parents,
176
- className = _a.className,
177
- children = _a.children,
178
- _a$size2 = _a.size,
179
- size = _a$size2 === void 0 ? 'lg' : _a$size2,
180
- rest = tslib.__rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children", "size"]);
181
-
131
+ prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
132
+ overlay = _a.overlay,
133
+ parents = _a.parents,
134
+ className = _a.className,
135
+ children = _a.children,
136
+ _a$size2 = _a.size,
137
+ size = _a$size2 === void 0 ? 'lg' : _a$size2,
138
+ rest = tslib.__rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children", "size"]);
182
139
  var cls = classname.cx(prefixCls, className, prefixCls + "--size-" + size);
183
- return /*#__PURE__*/React__default["default"].createElement(popper.Popper, Object.assign({}, overlay), /*#__PURE__*/React__default["default"].createElement("ul", Object.assign({
140
+ return /*#__PURE__*/React.createElement(popper.Popper, Object.assign({}, overlay), /*#__PURE__*/React.createElement("ul", Object.assign({
184
141
  ref: ref,
185
142
  className: cls
186
- }, rest), children ? React__default["default"].Children.map(children, function (child) {
143
+ }, rest), children ? React.Children.map(children, function (child) {
187
144
  return /*#__PURE__*/React.cloneElement(child, {
188
145
  parents: parents
189
146
  });
190
147
  }) : children));
191
148
  });
192
-
193
149
  if (env.__DEV__) {
194
150
  DropdownMenu.displayName = 'DropdownMenu';
195
151
  }
196
-
197
152
  var dropdownMenuItemPrefix = classname.getPrefixCls('dropdown-menu-item');
198
153
  var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_a, ref) {
199
154
  var _a$prefixCls3 = _a.prefixCls,
200
- prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
201
- className = _a.className,
202
- children = _a.children,
203
- href = _a.href,
204
- target = _a.target,
205
- disabled = _a.disabled,
206
- parentsProp = _a.parents,
207
- menu = _a.menu,
208
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
209
-
155
+ prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
156
+ className = _a.className,
157
+ children = _a.children,
158
+ href = _a.href,
159
+ target = _a.target,
160
+ disabled = _a.disabled,
161
+ parentsProp = _a.parents,
162
+ menu = _a.menu,
163
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
210
164
  var _useDropDownContext = context.useDropDownContext(),
211
- triggerMethods = _useDropDownContext.triggerMethods,
212
- width = _useDropDownContext.width;
213
-
165
+ triggerMethods = _useDropDownContext.triggerMethods,
166
+ width = _useDropDownContext.width;
214
167
  var _useDropdown = useDropdown.useDropdown(Object.assign(Object.assign({
215
- overlay: {
216
- placement: 'right-start',
217
- disabledPortal: true
218
- },
219
- width: width
220
- }, rest), {
221
- trigger: triggerMethods,
222
- parents: parentsProp
223
- })),
224
- menuVisible = _useDropdown.menuVisible,
225
- rootProps = _useDropdown.rootProps,
226
- getTriggerProps = _useDropdown.getTriggerProps,
227
- getMenuProps = _useDropdown.getMenuProps;
228
-
168
+ overlay: {
169
+ placement: 'right-start',
170
+ disabledPortal: true
171
+ },
172
+ width: width
173
+ }, rest), {
174
+ trigger: triggerMethods,
175
+ parents: parentsProp
176
+ })),
177
+ menuVisible = _useDropdown.menuVisible,
178
+ rootProps = _useDropdown.rootProps,
179
+ getTriggerProps = _useDropdown.getTriggerProps,
180
+ getMenuProps = _useDropdown.getMenuProps;
229
181
  var cls = classname.cx(prefixCls, className, menuVisible && prefixCls + "--active", disabled && prefixCls + "--disabled");
230
182
  var shouldUseLink = href && !disabled;
231
- return /*#__PURE__*/React__default["default"].createElement("li", Object.assign({
183
+ return /*#__PURE__*/React.createElement("li", Object.assign({
232
184
  ref: ref,
233
185
  className: cls
234
- }, rootProps), /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
186
+ }, rootProps), /*#__PURE__*/React.createElement("div", Object.assign({
235
187
  className: prefixCls + "__trigger"
236
- }, getTriggerProps()), shouldUseLink ? /*#__PURE__*/React__default["default"].createElement("a", {
188
+ }, getTriggerProps()), shouldUseLink ? /*#__PURE__*/React.createElement("a", {
237
189
  className: prefixCls + "__link",
238
190
  href: href,
239
191
  target: target
240
- }, children) : children, menu ? /*#__PURE__*/React__default["default"].createElement("span", {
192
+ }, children) : children, menu ? /*#__PURE__*/React.createElement("span", {
241
193
  className: prefixCls + "__arrow"
242
- }, /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null)) : null), menu ? /*#__PURE__*/React.cloneElement(menu, Object.assign({}, getMenuProps(menu.props))) : null);
194
+ }, /*#__PURE__*/React.createElement(icons.DownOutlined, null)) : null), menu ? /*#__PURE__*/React.cloneElement(menu, Object.assign({}, getMenuProps(menu.props))) : null);
243
195
  });
244
-
245
196
  if (env.__DEV__) {
246
197
  DropdownMenuItem.displayName = 'DropdownMenuItem';
247
198
  }
248
-
249
199
  exports.Dropdown = Dropdown;
@@ -9,24 +9,15 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var React = require('react');
17
-
18
13
  var dropDownContext = /*#__PURE__*/React.createContext(null);
19
14
  var DropDownProvider = dropDownContext.Provider;
20
-
21
15
  var useDropDownContext = function useDropDownContext() {
22
16
  var context = React.useContext(dropDownContext);
23
-
24
17
  if (!context) {
25
18
  throw new Error('The dropDownContext is not defined, Maybe it should be wrapped in Dropdown.');
26
19
  }
27
-
28
20
  return context;
29
21
  };
30
-
31
22
  exports.DropDownProvider = DropDownProvider;
32
23
  exports.useDropDownContext = useDropDownContext;
package/lib/cjs/index.js CHANGED
@@ -12,13 +12,9 @@
12
12
  Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
-
16
15
  require('./styles/index.scss.js');
17
-
18
16
  var Dropdown = require('./Dropdown.js');
19
-
20
17
  var types = require('./types.js');
21
-
22
18
  exports.Dropdown = Dropdown.Dropdown;
23
19
  exports["default"] = Dropdown.Dropdown;
24
20
  exports.DropdownTriggerActionEnum = types.DropdownTriggerActionEnum;
@@ -13,9 +13,6 @@ Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
15
  var css_248z = ".hi-v4-dropdown {display: inline-block;}.hi-v4-dropdown-menu {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;background-color: var(--hi-v4-color-static-white, #fff);border-radius: var(--hi-v4-border-radius-md, 4px);font-size: var(--hi-v4-text-size-md, 0.875rem);padding: var(--hi-v4-spacing-4, 8px);color: var(--hi-v4-color-gray-700, #1f2733);width: var(--hi-v4-dropdown-menu-width, 180px);}.hi-v4-dropdown-menu-item {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;list-style: none;margin: 0;box-sizing: border-box;overflow: visible;}.hi-v4-dropdown-menu-item__link {color: var(--hi-v4-color-gray-700, #1f2733);width: 100%;text-decoration: none;-webkit-box-sizing: border-box;box-sizing: border-box;}.hi-v4-dropdown-menu-item__arrow {-webkit-transform: rotate(-90deg);transform: rotate(-90deg);}.hi-v4-dropdown-menu-item__trigger {-webkit-box-sizing: border-box;box-sizing: border-box;width: 100%;height: 100%;cursor: pointer;border-radius: var(--hi-v4-border-radius-md, 4px);display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: justify;-ms-flex-pack: justify;justify-content: space-between;}.hi-v4-dropdown-menu--size-lg .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-5, 10px) var(--hi-v4-spacing-5, 10px);}.hi-v4-dropdown-menu--size-md .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-4, 8px) var(--hi-v4-spacing-4, 8px);}.hi-v4-dropdown-menu--size-sm .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-3, 6px) var(--hi-v4-spacing-3, 6px);}.hi-v4-dropdown-menu-item:not(.hi-v4-dropdown-menu-item--disabled) > .hi-v4-dropdown-menu-item__trigger:hover {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-dropdown-menu-item--active:not(.hi-v4-dropdown-menu-item--disabled) > .hi-v4-dropdown-menu-item__trigger {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-dropdown-menu-item--disabled > .hi-v4-dropdown-menu-item__trigger {cursor: not-allowed;color: var(--hi-v4-color-gray-500, #929aa6);}.hi-v4-dropdown-divider {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;list-style: none;background-color: var(--hi-v4-color-gray-200, #ebedf0);width: 100%;height: 1px;margin: var(--hi-v4-spacing-4, 8px) 0;}";
16
-
17
16
  var __styleInject__ = require('style-inject')["default"];
18
-
19
17
  __styleInject__(css_248z);
20
-
21
18
  exports["default"] = css_248z;
package/lib/cjs/types.js CHANGED
@@ -9,9 +9,6 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
12
  var DropdownTriggerActionEnum = {
16
13
  CLICK: 'click',
17
14
  CONTEXTMENU: 'contextmenu',
@@ -9,95 +9,70 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var tslib = require('tslib');
17
-
18
13
  var React = require('react');
19
-
20
14
  var types = require('./types.js');
21
-
22
15
  var index = require('./utils/index.js');
23
-
24
16
  var useToggle = require('@hi-ui/use-toggle');
25
-
26
17
  var useLatest = require('@hi-ui/use-latest');
27
-
28
18
  var useTimeout = require('@hi-ui/use-timeout');
29
-
30
19
  var useUnmountEffect = require('@hi-ui/use-unmount-effect');
31
-
32
20
  var classname = require('@hi-ui/classname');
33
-
34
21
  var reactUtils = require('@hi-ui/react-utils');
35
-
36
22
  var domUtils = require('@hi-ui/dom-utils');
37
-
38
23
  var typeAssertion = require('@hi-ui/type-assertion');
39
-
40
24
  var NOOP_ARRAY = [];
41
-
42
25
  var useDropdown = function useDropdown(props) {
43
26
  var _props$trigger = props.trigger,
44
- triggerProp = _props$trigger === void 0 ? types.DropdownTriggerActionEnum.HOVER : _props$trigger,
45
- _props$disabled = props.disabled,
46
- disabled = _props$disabled === void 0 ? false : _props$disabled,
47
- _props$parents = props.parents,
48
- parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
49
- width = props.width,
50
- overlay = props.overlay,
51
- rest = tslib.__rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
52
-
27
+ triggerProp = _props$trigger === void 0 ? types.DropdownTriggerActionEnum.HOVER : _props$trigger,
28
+ _props$disabled = props.disabled,
29
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
30
+ _props$parents = props.parents,
31
+ parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
32
+ width = props.width,
33
+ overlay = props.overlay,
34
+ rest = tslib.__rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
53
35
  var triggerElementRef = React.useRef(null);
54
36
  var popperElementRef = React.useRef(null);
55
37
  /**
56
38
  * 抹平数组或字符串结构,同时 memo 处理,减少重渲染
57
39
  */
58
-
59
- var trigger = index.normalizeTrigger(triggerProp); // eslint-disable-next-line react-hooks/exhaustive-deps
60
-
40
+ var trigger = index.normalizeTrigger(triggerProp);
41
+ // eslint-disable-next-line react-hooks/exhaustive-deps
61
42
  var triggerMethods = React.useMemo(function () {
62
43
  return trigger;
63
44
  }, trigger);
64
-
65
45
  var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
66
- defaultVisible: false,
67
- disabled: disabled
68
- }),
69
- menuVisible = _useUncontrolledToggl[0],
70
- menuVisibleAction = _useUncontrolledToggl[1];
46
+ defaultVisible: false,
47
+ disabled: disabled
48
+ }),
49
+ menuVisible = _useUncontrolledToggl[0],
50
+ menuVisibleAction = _useUncontrolledToggl[1];
71
51
  /**
72
52
  * 维护 trigger 元素 或 tooltip 弹出层元素的 hover 态
73
53
  */
74
-
75
-
76
54
  var hoveringRef = React.useRef(false);
77
-
78
55
  var _useTimeout = useTimeout.useTimeout(function () {
79
- if (disabled) return;
80
- menuVisibleAction.on();
81
- }, 0),
82
- startOpenTimer = _useTimeout.start,
83
- clearOpenTimer = _useTimeout.clear;
84
-
56
+ if (disabled) return;
57
+ menuVisibleAction.on();
58
+ }, 0),
59
+ startOpenTimer = _useTimeout.start,
60
+ clearOpenTimer = _useTimeout.clear;
85
61
  var _useTimeout2 = useTimeout.useTimeout(function () {
86
- if (disabled) return;
87
- if (hoveringRef.current) return;
88
- menuVisibleAction.off();
89
- }, 100),
90
- startCloseTimer = _useTimeout2.start,
91
- clearCloseTimer = _useTimeout2.clear;
92
-
62
+ if (disabled) return;
63
+ if (hoveringRef.current) return;
64
+ menuVisibleAction.off();
65
+ }, 100),
66
+ startCloseTimer = _useTimeout2.start,
67
+ clearCloseTimer = _useTimeout2.clear;
93
68
  var clearToggleTimer = React.useCallback(function () {
94
69
  clearOpenTimer();
95
70
  clearCloseTimer();
96
71
  }, [clearOpenTimer, clearCloseTimer]);
97
72
  useUnmountEffect.useUnmountEffect(clearToggleTimer);
98
73
  var handlePopperLeave = useLatest.useLatestCallback(function (evt) {
99
- hoveringRef.current = false; // if (triggerElementRef.current?.contains(evt.target as HTMLElement)) return
100
-
74
+ hoveringRef.current = false;
75
+ // if (triggerElementRef.current?.contains(evt.target as HTMLElement)) return
101
76
  clearOpenTimer();
102
77
  startCloseTimer();
103
78
  });
@@ -110,11 +85,9 @@ var useDropdown = function useDropdown(props) {
110
85
  if (props === void 0) {
111
86
  props = {};
112
87
  }
113
-
114
88
  if (ref === void 0) {
115
89
  ref = null;
116
90
  }
117
-
118
91
  var triggerProps = {
119
92
  ref: reactUtils.mergeRefs(triggerElementRef, ref),
120
93
  disabled: disabled
@@ -123,26 +96,22 @@ var useDropdown = function useDropdown(props) {
123
96
  * 事件收集
124
97
  * 'click' | 'contextmenu' | 'hover'
125
98
  */
126
-
127
99
  triggerMethods.reduce(function (acc, cur) {
128
100
  switch (cur) {
129
101
  case types.DropdownTriggerActionEnum.HOVER:
130
102
  acc.onMouseEnter = domUtils.mockDefaultHandlers(props.onMouseEnter, handlePopperEnter);
131
103
  acc.onMouseLeave = domUtils.mockDefaultHandlers(props.onMouseLeave, handlePopperLeave);
132
104
  break;
133
-
134
105
  case types.DropdownTriggerActionEnum.CONTEXTMENU:
135
106
  acc.onContextMenu = domUtils.mockDefaultHandlers(props.onContextMenu, function (evt) {
136
107
  evt.preventDefault();
137
108
  menuVisibleAction.not();
138
109
  });
139
110
  break;
140
-
141
111
  case types.DropdownTriggerActionEnum.CLICK:
142
112
  acc.onClick = domUtils.mockDefaultHandlers(props.onClick, menuVisibleAction.not);
143
113
  break;
144
114
  }
145
-
146
115
  return acc;
147
116
  }, triggerProps);
148
117
  return triggerProps;
@@ -150,15 +119,12 @@ var useDropdown = function useDropdown(props) {
150
119
  var rootProps = rest;
151
120
  var getMenuProps = useLatest.useLatestCallback(function (props, ref) {
152
121
  var _Object$assign;
153
-
154
122
  if (props === void 0) {
155
123
  props = {};
156
124
  }
157
-
158
125
  if (ref === void 0) {
159
126
  ref = null;
160
127
  }
161
-
162
128
  var menuParents = parents.concat(triggerElementRef);
163
129
  var menuProps = Object.assign(Object.assign({}, props), {
164
130
  ref: reactUtils.mergeRefs(popperElementRef, ref),
@@ -171,17 +137,14 @@ var useDropdown = function useDropdown(props) {
171
137
  onClose: menuVisibleAction.off
172
138
  })
173
139
  });
174
-
175
140
  if (triggerMethods.includes(types.DropdownTriggerActionEnum.HOVER)) {
176
141
  // @ts-ignore
177
142
  menuProps.onMouseEnter = function () {
178
143
  hoveringRef.current = true;
179
- }; // @ts-ignore
180
-
181
-
144
+ };
145
+ // @ts-ignore
182
146
  menuProps.onMouseLeave = handlePopperLeave;
183
147
  }
184
-
185
148
  return menuProps;
186
149
  });
187
150
  return {
@@ -196,5 +159,4 @@ var useDropdown = function useDropdown(props) {
196
159
  getMenuProps: getMenuProps
197
160
  };
198
161
  };
199
-
200
162
  exports.useDropdown = useDropdown;
@@ -9,21 +9,15 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var typeAssertion = require('@hi-ui/type-assertion');
13
+
17
14
  /**
18
15
  * 抹平 trigger 结构为数组
19
16
  *
20
17
  * @param trigger
21
18
  * @returns
22
19
  */
23
-
24
-
25
20
  var normalizeTrigger = function normalizeTrigger(trigger) {
26
21
  return typeAssertion.isArray(trigger) ? Array.from(new Set(trigger)) : [trigger];
27
22
  };
28
-
29
23
  exports.normalizeTrigger = normalizeTrigger;
@@ -18,43 +18,37 @@ import { isArrayNonEmpty, isArray } from '@hi-ui/type-assertion';
18
18
  import Button, { ButtonGroup } from '@hi-ui/button';
19
19
  import { DownOutlined } from '@hi-ui/icons';
20
20
  var _role = 'dropdown';
21
-
22
21
  var _prefix = getPrefixCls(_role);
23
-
24
22
  var DEFAULT_DATA = [];
25
23
  /**
26
24
  * 下拉菜单
27
25
  */
28
-
29
26
  var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
30
27
  var _a$prefixCls = _a.prefixCls,
31
- prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
32
- _a$role = _a.role,
33
- role = _a$role === void 0 ? _role : _a$role,
34
- className = _a.className,
35
- triggerButton = _a.children,
36
- _a$data = _a.data,
37
- data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
38
- title = _a.title,
39
- _a$type = _a.type,
40
- type = _a$type === void 0 ? 'text' : _a$type,
41
- _onClick = _a.onClick,
42
- onButtonClick = _a.onButtonClick,
43
- overlayClassName = _a.overlayClassName,
44
- _a$size = _a.size,
45
- size = _a$size === void 0 ? 'md' : _a$size,
46
- rest = __rest(_a, ["prefixCls", "role", "className", "children", "data", "title", "type", "onClick", "onButtonClick", "overlayClassName", "size"]);
47
-
28
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
29
+ _a$role = _a.role,
30
+ role = _a$role === void 0 ? _role : _a$role,
31
+ className = _a.className,
32
+ triggerButton = _a.children,
33
+ _a$data = _a.data,
34
+ data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
35
+ title = _a.title,
36
+ _a$type = _a.type,
37
+ type = _a$type === void 0 ? 'text' : _a$type,
38
+ _onClick = _a.onClick,
39
+ onButtonClick = _a.onButtonClick,
40
+ overlayClassName = _a.overlayClassName,
41
+ _a$size = _a.size,
42
+ size = _a$size === void 0 ? 'md' : _a$size,
43
+ rest = __rest(_a, ["prefixCls", "role", "className", "children", "data", "title", "type", "onClick", "onButtonClick", "overlayClassName", "size"]);
48
44
  var _b = useDropdown(rest),
49
- rootProps = _b.rootProps,
50
- providedValue = __rest(_b, ["rootProps"]);
51
-
45
+ rootProps = _b.rootProps,
46
+ providedValue = __rest(_b, ["rootProps"]);
52
47
  var getMenuProps = providedValue.getMenuProps,
53
- getTriggerProps = providedValue.getTriggerProps,
54
- disabled = providedValue.disabled,
55
- menuVisibleAction = providedValue.menuVisibleAction;
48
+ getTriggerProps = providedValue.getTriggerProps,
49
+ disabled = providedValue.disabled,
50
+ menuVisibleAction = providedValue.menuVisibleAction;
56
51
  var cls = cx(prefixCls, className, disabled && prefixCls + "--disabled");
57
-
58
52
  var dig = function dig(treeData) {
59
53
  return treeData.map(function (item) {
60
54
  var menu = isArrayNonEmpty(item.children) ? /*#__PURE__*/React.createElement(DropdownMenu, {
@@ -63,14 +57,12 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
63
57
  },
64
58
  size: size
65
59
  }, dig(item.children)) : null;
66
-
67
60
  if (item.split) {
68
61
  return /*#__PURE__*/React.createElement("li", {
69
62
  key: item.id,
70
63
  className: prefixCls + "-divider"
71
64
  });
72
65
  }
73
-
74
66
  return /*#__PURE__*/React.createElement(DropdownMenuItem, {
75
67
  key: item.id,
76
68
  disabled: item.disabled,
@@ -81,7 +73,6 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
81
73
  onClick: function onClick() {
82
74
  if (item.disabled) return;
83
75
  _onClick === null || _onClick === void 0 ? void 0 : _onClick(item.id);
84
-
85
76
  if (!isArray(item.children)) {
86
77
  menuVisibleAction.off();
87
78
  }
@@ -89,13 +80,11 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
89
80
  }, item.title);
90
81
  });
91
82
  };
92
-
93
83
  var renderButton = function renderButton() {
94
84
  if (triggerButton) {
95
85
  // @ts-ignore
96
86
  return /*#__PURE__*/cloneElement(triggerButton, getTriggerProps(triggerButton.props, triggerButton.ref));
97
87
  }
98
-
99
88
  if (type === 'text' || type === 'button') {
100
89
  return /*#__PURE__*/React.createElement(Button, Object.assign({}, getTriggerProps(), {
101
90
  appearance: type === 'button' ? 'filled' : 'link'
@@ -105,7 +94,6 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
105
94
  }
106
95
  }));
107
96
  }
108
-
109
97
  if (type === 'group') {
110
98
  return /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
111
99
  onClick: onButtonClick
@@ -115,10 +103,8 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
115
103
  icon: /*#__PURE__*/React.createElement(DownOutlined, null)
116
104
  })));
117
105
  }
118
-
119
106
  return null;
120
107
  };
121
-
122
108
  return /*#__PURE__*/React.createElement(DropDownProvider, {
123
109
  value: providedValue
124
110
  }, /*#__PURE__*/React.createElement("div", Object.assign({
@@ -134,23 +120,20 @@ var Dropdown = /*#__PURE__*/forwardRef(function (_a, ref) {
134
120
  size: size
135
121
  }), dig(data)) : null));
136
122
  });
137
-
138
123
  if (__DEV__) {
139
124
  Dropdown.displayName = 'Dropdown';
140
125
  }
141
-
142
126
  var dropdownMenuPrefix = getPrefixCls('dropdown-menu');
143
127
  var DropdownMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
144
128
  var _a$prefixCls2 = _a.prefixCls,
145
- prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
146
- overlay = _a.overlay,
147
- parents = _a.parents,
148
- className = _a.className,
149
- children = _a.children,
150
- _a$size2 = _a.size,
151
- size = _a$size2 === void 0 ? 'lg' : _a$size2,
152
- rest = __rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children", "size"]);
153
-
129
+ prefixCls = _a$prefixCls2 === void 0 ? dropdownMenuPrefix : _a$prefixCls2,
130
+ overlay = _a.overlay,
131
+ parents = _a.parents,
132
+ className = _a.className,
133
+ children = _a.children,
134
+ _a$size2 = _a.size,
135
+ size = _a$size2 === void 0 ? 'lg' : _a$size2,
136
+ rest = __rest(_a, ["prefixCls", "role", "overlay", "parents", "className", "children", "size"]);
154
137
  var cls = cx(prefixCls, className, prefixCls + "--size-" + size);
155
138
  return /*#__PURE__*/React.createElement(Popper, Object.assign({}, overlay), /*#__PURE__*/React.createElement("ul", Object.assign({
156
139
  ref: ref,
@@ -161,43 +144,38 @@ var DropdownMenu = /*#__PURE__*/forwardRef(function (_a, ref) {
161
144
  });
162
145
  }) : children));
163
146
  });
164
-
165
147
  if (__DEV__) {
166
148
  DropdownMenu.displayName = 'DropdownMenu';
167
149
  }
168
-
169
150
  var dropdownMenuItemPrefix = getPrefixCls('dropdown-menu-item');
170
151
  var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
171
152
  var _a$prefixCls3 = _a.prefixCls,
172
- prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
173
- className = _a.className,
174
- children = _a.children,
175
- href = _a.href,
176
- target = _a.target,
177
- disabled = _a.disabled,
178
- parentsProp = _a.parents,
179
- menu = _a.menu,
180
- rest = __rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
181
-
153
+ prefixCls = _a$prefixCls3 === void 0 ? dropdownMenuItemPrefix : _a$prefixCls3,
154
+ className = _a.className,
155
+ children = _a.children,
156
+ href = _a.href,
157
+ target = _a.target,
158
+ disabled = _a.disabled,
159
+ parentsProp = _a.parents,
160
+ menu = _a.menu,
161
+ rest = __rest(_a, ["prefixCls", "role", "className", "children", "href", "value", "target", "disabled", "parents", "menu"]);
182
162
  var _useDropDownContext = useDropDownContext(),
183
- triggerMethods = _useDropDownContext.triggerMethods,
184
- width = _useDropDownContext.width;
185
-
163
+ triggerMethods = _useDropDownContext.triggerMethods,
164
+ width = _useDropDownContext.width;
186
165
  var _useDropdown = useDropdown(Object.assign(Object.assign({
187
- overlay: {
188
- placement: 'right-start',
189
- disabledPortal: true
190
- },
191
- width: width
192
- }, rest), {
193
- trigger: triggerMethods,
194
- parents: parentsProp
195
- })),
196
- menuVisible = _useDropdown.menuVisible,
197
- rootProps = _useDropdown.rootProps,
198
- getTriggerProps = _useDropdown.getTriggerProps,
199
- getMenuProps = _useDropdown.getMenuProps;
200
-
166
+ overlay: {
167
+ placement: 'right-start',
168
+ disabledPortal: true
169
+ },
170
+ width: width
171
+ }, rest), {
172
+ trigger: triggerMethods,
173
+ parents: parentsProp
174
+ })),
175
+ menuVisible = _useDropdown.menuVisible,
176
+ rootProps = _useDropdown.rootProps,
177
+ getTriggerProps = _useDropdown.getTriggerProps,
178
+ getMenuProps = _useDropdown.getMenuProps;
201
179
  var cls = cx(prefixCls, className, menuVisible && prefixCls + "--active", disabled && prefixCls + "--disabled");
202
180
  var shouldUseLink = href && !disabled;
203
181
  return /*#__PURE__*/React.createElement("li", Object.assign({
@@ -213,9 +191,7 @@ var DropdownMenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
213
191
  className: prefixCls + "__arrow"
214
192
  }, /*#__PURE__*/React.createElement(DownOutlined, null)) : null), menu ? /*#__PURE__*/cloneElement(menu, Object.assign({}, getMenuProps(menu.props))) : null);
215
193
  });
216
-
217
194
  if (__DEV__) {
218
195
  DropdownMenuItem.displayName = 'DropdownMenuItem';
219
196
  }
220
-
221
197
  export { Dropdown };
@@ -10,15 +10,11 @@
10
10
  import { useContext, createContext } from 'react';
11
11
  var dropDownContext = /*#__PURE__*/createContext(null);
12
12
  var DropDownProvider = dropDownContext.Provider;
13
-
14
13
  var useDropDownContext = function useDropDownContext() {
15
14
  var context = useContext(dropDownContext);
16
-
17
15
  if (!context) {
18
16
  throw new Error('The dropDownContext is not defined, Maybe it should be wrapped in Dropdown.');
19
17
  }
20
-
21
18
  return context;
22
19
  };
23
-
24
20
  export { DropDownProvider, useDropDownContext };
@@ -9,7 +9,5 @@
9
9
  */
10
10
  import __styleInject__ from 'style-inject';
11
11
  var css_248z = ".hi-v4-dropdown {display: inline-block;}.hi-v4-dropdown-menu {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;background-color: var(--hi-v4-color-static-white, #fff);border-radius: var(--hi-v4-border-radius-md, 4px);font-size: var(--hi-v4-text-size-md, 0.875rem);padding: var(--hi-v4-spacing-4, 8px);color: var(--hi-v4-color-gray-700, #1f2733);width: var(--hi-v4-dropdown-menu-width, 180px);}.hi-v4-dropdown-menu-item {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;list-style: none;margin: 0;box-sizing: border-box;overflow: visible;}.hi-v4-dropdown-menu-item__link {color: var(--hi-v4-color-gray-700, #1f2733);width: 100%;text-decoration: none;-webkit-box-sizing: border-box;box-sizing: border-box;}.hi-v4-dropdown-menu-item__arrow {-webkit-transform: rotate(-90deg);transform: rotate(-90deg);}.hi-v4-dropdown-menu-item__trigger {-webkit-box-sizing: border-box;box-sizing: border-box;width: 100%;height: 100%;cursor: pointer;border-radius: var(--hi-v4-border-radius-md, 4px);display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: justify;-ms-flex-pack: justify;justify-content: space-between;}.hi-v4-dropdown-menu--size-lg .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-5, 10px) var(--hi-v4-spacing-5, 10px);}.hi-v4-dropdown-menu--size-md .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-4, 8px) var(--hi-v4-spacing-4, 8px);}.hi-v4-dropdown-menu--size-sm .hi-v4-dropdown-menu-item__trigger {padding: var(--hi-v4-spacing-3, 6px) var(--hi-v4-spacing-3, 6px);}.hi-v4-dropdown-menu-item:not(.hi-v4-dropdown-menu-item--disabled) > .hi-v4-dropdown-menu-item__trigger:hover {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-dropdown-menu-item--active:not(.hi-v4-dropdown-menu-item--disabled) > .hi-v4-dropdown-menu-item__trigger {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-dropdown-menu-item--disabled > .hi-v4-dropdown-menu-item__trigger {cursor: not-allowed;color: var(--hi-v4-color-gray-500, #929aa6);}.hi-v4-dropdown-divider {-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0;padding: 0;list-style: none;background-color: var(--hi-v4-color-gray-200, #ebedf0);width: 100%;height: 1px;margin: var(--hi-v4-spacing-4, 8px) 0;}";
12
-
13
12
  __styleInject__(css_248z);
14
-
15
13
  export { css_248z as default };
@@ -20,66 +20,57 @@ import { mergeRefs } from '@hi-ui/react-utils';
20
20
  import { mockDefaultHandlers } from '@hi-ui/dom-utils';
21
21
  import { isNumeric } from '@hi-ui/type-assertion';
22
22
  var NOOP_ARRAY = [];
23
-
24
23
  var useDropdown = function useDropdown(props) {
25
24
  var _props$trigger = props.trigger,
26
- triggerProp = _props$trigger === void 0 ? DropdownTriggerActionEnum.HOVER : _props$trigger,
27
- _props$disabled = props.disabled,
28
- disabled = _props$disabled === void 0 ? false : _props$disabled,
29
- _props$parents = props.parents,
30
- parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
31
- width = props.width,
32
- overlay = props.overlay,
33
- rest = __rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
34
-
25
+ triggerProp = _props$trigger === void 0 ? DropdownTriggerActionEnum.HOVER : _props$trigger,
26
+ _props$disabled = props.disabled,
27
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
28
+ _props$parents = props.parents,
29
+ parents = _props$parents === void 0 ? NOOP_ARRAY : _props$parents,
30
+ width = props.width,
31
+ overlay = props.overlay,
32
+ rest = __rest(props, ["trigger", "disabled", "parents", "width", "overlay"]);
35
33
  var triggerElementRef = useRef(null);
36
34
  var popperElementRef = useRef(null);
37
35
  /**
38
36
  * 抹平数组或字符串结构,同时 memo 处理,减少重渲染
39
37
  */
40
-
41
- var trigger = normalizeTrigger(triggerProp); // eslint-disable-next-line react-hooks/exhaustive-deps
42
-
38
+ var trigger = normalizeTrigger(triggerProp);
39
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
40
  var triggerMethods = useMemo(function () {
44
41
  return trigger;
45
42
  }, trigger);
46
-
47
43
  var _useUncontrolledToggl = useUncontrolledToggle({
48
- defaultVisible: false,
49
- disabled: disabled
50
- }),
51
- menuVisible = _useUncontrolledToggl[0],
52
- menuVisibleAction = _useUncontrolledToggl[1];
44
+ defaultVisible: false,
45
+ disabled: disabled
46
+ }),
47
+ menuVisible = _useUncontrolledToggl[0],
48
+ menuVisibleAction = _useUncontrolledToggl[1];
53
49
  /**
54
50
  * 维护 trigger 元素 或 tooltip 弹出层元素的 hover 态
55
51
  */
56
-
57
-
58
52
  var hoveringRef = useRef(false);
59
-
60
53
  var _useTimeout = useTimeout(function () {
61
- if (disabled) return;
62
- menuVisibleAction.on();
63
- }, 0),
64
- startOpenTimer = _useTimeout.start,
65
- clearOpenTimer = _useTimeout.clear;
66
-
54
+ if (disabled) return;
55
+ menuVisibleAction.on();
56
+ }, 0),
57
+ startOpenTimer = _useTimeout.start,
58
+ clearOpenTimer = _useTimeout.clear;
67
59
  var _useTimeout2 = useTimeout(function () {
68
- if (disabled) return;
69
- if (hoveringRef.current) return;
70
- menuVisibleAction.off();
71
- }, 100),
72
- startCloseTimer = _useTimeout2.start,
73
- clearCloseTimer = _useTimeout2.clear;
74
-
60
+ if (disabled) return;
61
+ if (hoveringRef.current) return;
62
+ menuVisibleAction.off();
63
+ }, 100),
64
+ startCloseTimer = _useTimeout2.start,
65
+ clearCloseTimer = _useTimeout2.clear;
75
66
  var clearToggleTimer = useCallback(function () {
76
67
  clearOpenTimer();
77
68
  clearCloseTimer();
78
69
  }, [clearOpenTimer, clearCloseTimer]);
79
70
  useUnmountEffect(clearToggleTimer);
80
71
  var handlePopperLeave = useLatestCallback(function (evt) {
81
- hoveringRef.current = false; // if (triggerElementRef.current?.contains(evt.target as HTMLElement)) return
82
-
72
+ hoveringRef.current = false;
73
+ // if (triggerElementRef.current?.contains(evt.target as HTMLElement)) return
83
74
  clearOpenTimer();
84
75
  startCloseTimer();
85
76
  });
@@ -92,11 +83,9 @@ var useDropdown = function useDropdown(props) {
92
83
  if (props === void 0) {
93
84
  props = {};
94
85
  }
95
-
96
86
  if (ref === void 0) {
97
87
  ref = null;
98
88
  }
99
-
100
89
  var triggerProps = {
101
90
  ref: mergeRefs(triggerElementRef, ref),
102
91
  disabled: disabled
@@ -105,26 +94,22 @@ var useDropdown = function useDropdown(props) {
105
94
  * 事件收集
106
95
  * 'click' | 'contextmenu' | 'hover'
107
96
  */
108
-
109
97
  triggerMethods.reduce(function (acc, cur) {
110
98
  switch (cur) {
111
99
  case DropdownTriggerActionEnum.HOVER:
112
100
  acc.onMouseEnter = mockDefaultHandlers(props.onMouseEnter, handlePopperEnter);
113
101
  acc.onMouseLeave = mockDefaultHandlers(props.onMouseLeave, handlePopperLeave);
114
102
  break;
115
-
116
103
  case DropdownTriggerActionEnum.CONTEXTMENU:
117
104
  acc.onContextMenu = mockDefaultHandlers(props.onContextMenu, function (evt) {
118
105
  evt.preventDefault();
119
106
  menuVisibleAction.not();
120
107
  });
121
108
  break;
122
-
123
109
  case DropdownTriggerActionEnum.CLICK:
124
110
  acc.onClick = mockDefaultHandlers(props.onClick, menuVisibleAction.not);
125
111
  break;
126
112
  }
127
-
128
113
  return acc;
129
114
  }, triggerProps);
130
115
  return triggerProps;
@@ -132,15 +117,12 @@ var useDropdown = function useDropdown(props) {
132
117
  var rootProps = rest;
133
118
  var getMenuProps = useLatestCallback(function (props, ref) {
134
119
  var _Object$assign;
135
-
136
120
  if (props === void 0) {
137
121
  props = {};
138
122
  }
139
-
140
123
  if (ref === void 0) {
141
124
  ref = null;
142
125
  }
143
-
144
126
  var menuParents = parents.concat(triggerElementRef);
145
127
  var menuProps = Object.assign(Object.assign({}, props), {
146
128
  ref: mergeRefs(popperElementRef, ref),
@@ -153,17 +135,14 @@ var useDropdown = function useDropdown(props) {
153
135
  onClose: menuVisibleAction.off
154
136
  })
155
137
  });
156
-
157
138
  if (triggerMethods.includes(DropdownTriggerActionEnum.HOVER)) {
158
139
  // @ts-ignore
159
140
  menuProps.onMouseEnter = function () {
160
141
  hoveringRef.current = true;
161
- }; // @ts-ignore
162
-
163
-
142
+ };
143
+ // @ts-ignore
164
144
  menuProps.onMouseLeave = handlePopperLeave;
165
145
  }
166
-
167
146
  return menuProps;
168
147
  });
169
148
  return {
@@ -178,5 +157,4 @@ var useDropdown = function useDropdown(props) {
178
157
  getMenuProps: getMenuProps
179
158
  };
180
159
  };
181
-
182
160
  export { useDropdown };
@@ -8,15 +8,14 @@
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
10
  import { isArray } from '@hi-ui/type-assertion';
11
+
11
12
  /**
12
13
  * 抹平 trigger 结构为数组
13
14
  *
14
15
  * @param trigger
15
16
  * @returns
16
17
  */
17
-
18
18
  var normalizeTrigger = function normalizeTrigger(trigger) {
19
19
  return isArray(trigger) ? Array.from(new Set(trigger)) : [trigger];
20
20
  };
21
-
22
21
  export { normalizeTrigger };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/dropdown",
3
- "version": "4.1.1",
3
+ "version": "4.1.2",
4
4
  "description": "A sub-package for @hi-ui/hiui.",
5
5
  "keywords": [],
6
6
  "author": "HiUI <mi-hiui@xiaomi.com>",
@@ -43,27 +43,27 @@
43
43
  "url": "https://github.com/XiaoMi/hiui/issues"
44
44
  },
45
45
  "dependencies": {
46
- "@hi-ui/button": "^4.0.5",
47
- "@hi-ui/classname": "^4.0.1",
48
- "@hi-ui/dom-utils": "^4.0.4",
49
- "@hi-ui/env": "^4.0.1",
50
- "@hi-ui/icons": "^4.0.4",
51
- "@hi-ui/popper": "^4.0.4",
52
- "@hi-ui/react-utils": "^4.0.1",
53
- "@hi-ui/type-assertion": "^4.0.1",
54
- "@hi-ui/use-latest": "^4.0.1",
55
- "@hi-ui/use-timeout": "^4.0.1",
56
- "@hi-ui/use-toggle": "^4.0.1",
57
- "@hi-ui/use-unmount-effect": "^4.0.1"
46
+ "@hi-ui/button": "^4.0.7",
47
+ "@hi-ui/classname": "^4.0.2",
48
+ "@hi-ui/dom-utils": "^4.0.5",
49
+ "@hi-ui/env": "^4.0.2",
50
+ "@hi-ui/icons": "^4.0.16",
51
+ "@hi-ui/popper": "^4.1.1",
52
+ "@hi-ui/react-utils": "^4.0.2",
53
+ "@hi-ui/type-assertion": "^4.0.2",
54
+ "@hi-ui/use-latest": "^4.0.2",
55
+ "@hi-ui/use-timeout": "^4.0.2",
56
+ "@hi-ui/use-toggle": "^4.0.2",
57
+ "@hi-ui/use-unmount-effect": "^4.0.2"
58
58
  },
59
59
  "peerDependencies": {
60
- "@hi-ui/core": ">=4.0.0",
60
+ "@hi-ui/core": ">=4.0.6",
61
61
  "react": ">=16.8.6",
62
62
  "react-dom": ">=16.8.6"
63
63
  },
64
64
  "devDependencies": {
65
- "@hi-ui/core": "^4.0.4",
66
- "@hi-ui/core-css": "^4.1.1",
65
+ "@hi-ui/core": "^4.0.6",
66
+ "@hi-ui/core-css": "^4.1.3",
67
67
  "react": "^17.0.1",
68
68
  "react-dom": "^17.0.1"
69
69
  }