@hi-ui/menu 4.1.2 → 4.1.4

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,34 @@
1
1
  # @hi-ui/menu
2
2
 
3
+ ## 4.1.4
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-id@4.0.2
12
+ - @hi-ui/use-merge-refs@4.0.2
13
+ - @hi-ui/use-resize-observer@4.0.2
14
+ - @hi-ui/use-toggle@4.0.2
15
+ - @hi-ui/use-uncontrolled-state@4.0.2
16
+ - @hi-ui/icons@4.0.16
17
+ - @hi-ui/popper@4.1.1
18
+ - @hi-ui/tooltip@4.0.8
19
+ - @hi-ui/array-utils@4.0.2
20
+ - @hi-ui/classname@4.0.2
21
+ - @hi-ui/env@4.0.2
22
+ - @hi-ui/times@4.0.2
23
+ - @hi-ui/tree-utils@4.1.2
24
+ - @hi-ui/type-assertion@4.0.2
25
+
26
+ ## 4.1.3
27
+
28
+ ### Patch Changes
29
+
30
+ - [#2659](https://github.com/XiaoMi/hiui/pull/2659) [`b78487cd7`](https://github.com/XiaoMi/hiui/commit/b78487cd725532000f81876e1826f1918c37b23a) Thanks [@zyprepare](https://github.com/zyprepare)! - fix: 修复 mini 模式下子菜单内容展示不全问题
31
+
3
32
  ## 4.1.2
4
33
 
5
34
  ### Patch Changes
@@ -9,34 +9,16 @@
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 React = require('react');
19
-
20
13
  var reactTransitionGroup = require('react-transition-group');
21
-
22
- function _interopDefaultLegacy(e) {
23
- return e && _typeof(e) === 'object' && 'default' in e ? e : {
24
- 'default': e
25
- };
26
- }
27
-
28
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
29
-
30
14
  var Expander = function Expander(_ref) {
31
15
  var children = _ref.children,
32
- visible = _ref.visible,
33
- className = _ref.className;
34
-
16
+ visible = _ref.visible,
17
+ className = _ref.className;
35
18
  var _useState = React.useState(visible ? 'auto' : 0),
36
- height = _useState[0],
37
- setHeight = _useState[1];
38
-
39
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, {
19
+ height = _useState[0],
20
+ setHeight = _useState[1];
21
+ return /*#__PURE__*/React.createElement(reactTransitionGroup.CSSTransition, {
40
22
  "in": visible,
41
23
  timeout: 200,
42
24
  classNames: className,
@@ -56,7 +38,7 @@ var Expander = function Expander(_ref) {
56
38
  setHeight(0);
57
39
  });
58
40
  }
59
- }, /*#__PURE__*/React__default["default"].createElement("div", {
41
+ }, /*#__PURE__*/React.createElement("div", {
60
42
  style: {
61
43
  height: height,
62
44
  overflow: 'hidden',
@@ -64,5 +46,4 @@ var Expander = function Expander(_ref) {
64
46
  }
65
47
  }, children));
66
48
  };
67
-
68
49
  exports.Expander = Expander;
package/lib/cjs/Menu.js CHANGED
@@ -9,54 +9,22 @@
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 icons = require('@hi-ui/icons');
25
-
26
16
  var env = require('@hi-ui/env');
27
-
28
17
  var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
29
-
30
18
  var Tooltip = require('@hi-ui/tooltip');
31
-
32
19
  var useToggle = require('@hi-ui/use-toggle');
33
-
34
20
  var treeUtils = require('@hi-ui/tree-utils');
35
-
36
21
  var typeAssertion = require('@hi-ui/type-assertion');
37
-
38
22
  var useResizeObserver = require('@hi-ui/use-resize-observer');
39
-
40
23
  var useMergeRefs = require('@hi-ui/use-merge-refs');
41
-
42
24
  var useId = require('@hi-ui/use-id');
43
-
44
25
  var MenuItem = require('./MenuItem.js');
45
-
46
26
  var context = require('./context.js');
47
-
48
27
  var util = require('./util.js');
49
-
50
- function _interopDefaultLegacy(e) {
51
- return e && _typeof(e) === 'object' && 'default' in e ? e : {
52
- 'default': e
53
- };
54
- }
55
-
56
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
57
-
58
- var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
59
-
60
28
  var MENU_PREFIX = classname.getPrefixCls('menu');
61
29
  var DEFAULT_EXPANDED_IDS = [];
62
30
  var NOOP_ARRAY = [];
@@ -65,68 +33,62 @@ var MENU_MORE_ID = "MENU_MORE_" + useId.uuid();
65
33
  /**
66
34
  * 菜单
67
35
  */
68
-
69
36
  var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
70
37
  var _a$prefixCls = _a.prefixCls,
71
- prefixCls = _a$prefixCls === void 0 ? MENU_PREFIX : _a$prefixCls,
72
- _a$role = _a.role,
73
- role = _a$role === void 0 ? 'menu' : _a$role,
74
- className = _a.className,
75
- _a$data = _a.data,
76
- data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
77
- _a$placement = _a.placement,
78
- placement = _a$placement === void 0 ? 'vertical' : _a$placement,
79
- _a$showCollapse = _a.showCollapse,
80
- showCollapse = _a$showCollapse === void 0 ? false : _a$showCollapse,
81
- _a$expandedType = _a.expandedType,
82
- expandedType = _a$expandedType === void 0 ? 'collapse' : _a$expandedType,
83
- _a$showAllSubMenus = _a.showAllSubMenus,
84
- showAllSubMenus = _a$showAllSubMenus === void 0 ? false : _a$showAllSubMenus,
85
- _a$defaultExpandAll = _a.defaultExpandAll,
86
- defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
87
- _a$defaultExpandedIds = _a.defaultExpandedIds,
88
- defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
89
- expandedIdsProp = _a.expandedIds,
90
- onExpand = _a.onExpand,
91
- _a$defaultActiveId = _a.defaultActiveId,
92
- defaultActiveId = _a$defaultActiveId === void 0 ? '' : _a$defaultActiveId,
93
- activeIdProp = _a.activeId,
94
- onClickSubMenu = _a.onClickSubMenu,
95
- collapsed = _a.collapsed,
96
- _a$defaultCollapsed = _a.defaultCollapsed,
97
- defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,
98
- overlayClassName = _a.overlayClassName,
99
- onCollapse = _a.onCollapse,
100
- footerRender = _a.footerRender,
101
- render = _a.render,
102
- extraHeader = _a.extraHeader,
103
- onClick = _a.onClick,
104
- _a$size = _a.size,
105
- size = _a$size === void 0 ? 'lg' : _a$size,
106
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "data", "placement", "showCollapse", "expandedType", "showAllSubMenus", "defaultExpandAll", "defaultExpandedIds", "expandedIds", "onExpand", "defaultActiveId", "activeId", "onClickSubMenu", "collapsed", "defaultCollapsed", "overlayClassName", "onCollapse", "footerRender", "render", "extraHeader", "onClick", "size"]);
107
-
38
+ prefixCls = _a$prefixCls === void 0 ? MENU_PREFIX : _a$prefixCls,
39
+ _a$role = _a.role,
40
+ role = _a$role === void 0 ? 'menu' : _a$role,
41
+ className = _a.className,
42
+ _a$data = _a.data,
43
+ data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
44
+ _a$placement = _a.placement,
45
+ placement = _a$placement === void 0 ? 'vertical' : _a$placement,
46
+ _a$showCollapse = _a.showCollapse,
47
+ showCollapse = _a$showCollapse === void 0 ? false : _a$showCollapse,
48
+ _a$expandedType = _a.expandedType,
49
+ expandedType = _a$expandedType === void 0 ? 'collapse' : _a$expandedType,
50
+ _a$showAllSubMenus = _a.showAllSubMenus,
51
+ showAllSubMenus = _a$showAllSubMenus === void 0 ? false : _a$showAllSubMenus,
52
+ _a$defaultExpandAll = _a.defaultExpandAll,
53
+ defaultExpandAll = _a$defaultExpandAll === void 0 ? false : _a$defaultExpandAll,
54
+ _a$defaultExpandedIds = _a.defaultExpandedIds,
55
+ defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
56
+ expandedIdsProp = _a.expandedIds,
57
+ onExpand = _a.onExpand,
58
+ _a$defaultActiveId = _a.defaultActiveId,
59
+ defaultActiveId = _a$defaultActiveId === void 0 ? '' : _a$defaultActiveId,
60
+ activeIdProp = _a.activeId,
61
+ onClickSubMenu = _a.onClickSubMenu,
62
+ collapsed = _a.collapsed,
63
+ _a$defaultCollapsed = _a.defaultCollapsed,
64
+ defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,
65
+ overlayClassName = _a.overlayClassName,
66
+ onCollapse = _a.onCollapse,
67
+ footerRender = _a.footerRender,
68
+ render = _a.render,
69
+ extraHeader = _a.extraHeader,
70
+ onClick = _a.onClick,
71
+ _a$size = _a.size,
72
+ size = _a$size === void 0 ? 'lg' : _a$size,
73
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "data", "placement", "showCollapse", "expandedType", "showAllSubMenus", "defaultExpandAll", "defaultExpandedIds", "expandedIds", "onExpand", "defaultActiveId", "activeId", "onClickSubMenu", "collapsed", "defaultCollapsed", "overlayClassName", "onCollapse", "footerRender", "render", "extraHeader", "onClick", "size"]);
108
74
  var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultActiveId, activeIdProp, onClick),
109
- activeId = _useUncontrolledState[0],
110
- updateActiveId = _useUncontrolledState[1];
111
-
75
+ activeId = _useUncontrolledState[0],
76
+ updateActiveId = _useUncontrolledState[1];
112
77
  var _useState = React.useState(function () {
113
- return util.getAncestorIds(activeId, data);
114
- }),
115
- activeParents = _useState[0],
116
- updateActiveParents = _useState[1];
117
-
78
+ return util.getAncestorIds(activeId, data);
79
+ }),
80
+ activeParents = _useState[0],
81
+ updateActiveParents = _useState[1];
118
82
  React.useEffect(function () {
119
83
  updateActiveParents(util.getAncestorIds(activeId, data));
120
84
  }, [activeId, data]);
121
-
122
85
  var _useUncontrolledState2 = useUncontrolledState.useUncontrolledState(function () {
123
- return defaultExpandAll ? treeUtils.getTreeNodesWithChildren(data).map(function (node) {
124
- return node.id;
125
- }) : defaultExpandedIds;
126
- }, expandedIdsProp, onExpand),
127
- expandedIds = _useUncontrolledState2[0],
128
- updateExpandedIds = _useUncontrolledState2[1];
129
-
86
+ return defaultExpandAll ? treeUtils.getTreeNodesWithChildren(data).map(function (node) {
87
+ return node.id;
88
+ }) : defaultExpandedIds;
89
+ }, expandedIdsProp, onExpand),
90
+ expandedIds = _useUncontrolledState2[0],
91
+ updateExpandedIds = _useUncontrolledState2[1];
130
92
  var clickMenu = React.useCallback(function (id, raw) {
131
93
  updateActiveId(id, raw);
132
94
  }, [updateActiveId]);
@@ -135,7 +97,6 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
135
97
  return expandedId !== id;
136
98
  }) : expandedIds.concat(id);
137
99
  updateExpandedIds(nextExpandedIds);
138
-
139
100
  if (onClickSubMenu) {
140
101
  onClickSubMenu(id, nextExpandedIds);
141
102
  }
@@ -148,28 +109,23 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
148
109
  var closeAllPopper = React.useCallback(function () {
149
110
  updateExpandedIds([]);
150
111
  }, [updateExpandedIds]);
151
-
152
112
  var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
153
- defaultVisible: defaultCollapsed,
154
- visible: collapsed,
155
- onToggle: onCollapse
156
- }),
157
- mini = _useUncontrolledToggl[0],
158
- miniToggleAction = _useUncontrolledToggl[1];
159
-
113
+ defaultVisible: defaultCollapsed,
114
+ visible: collapsed,
115
+ onToggle: onCollapse
116
+ }),
117
+ mini = _useUncontrolledToggl[0],
118
+ miniToggleAction = _useUncontrolledToggl[1];
160
119
  var showVertical = placement === 'vertical';
161
120
  var canToggle = showVertical && showCollapse;
162
121
  var showMini = showVertical && mini;
163
-
164
122
  var _useState2 = React.useState(null),
165
- containerElement = _useState2[0],
166
- setContainerElement = _useState2[1];
167
-
123
+ containerElement = _useState2[0],
124
+ setContainerElement = _useState2[1];
168
125
  var _useState3 = React.useState(),
169
- _useState3$ = _useState3[0],
170
- containerWidth = _useState3$ === void 0 ? 0 : _useState3$,
171
- setContainerWidth = _useState3[1];
172
-
126
+ _useState3$ = _useState3[0],
127
+ containerWidth = _useState3$ === void 0 ? 0 : _useState3$,
128
+ setContainerWidth = _useState3[1];
173
129
  useResizeObserver.useResizeObserver({
174
130
  element: containerElement,
175
131
  disabled: showVertical,
@@ -181,11 +137,9 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
181
137
  setContainerWidth(width);
182
138
  }
183
139
  });
184
-
185
140
  var _useState4 = React.useState(0),
186
- tagMaxCount = _useState4[0],
187
- setTagMaxCount = _useState4[1];
188
-
141
+ tagMaxCount = _useState4[0],
142
+ setTagMaxCount = _useState4[1];
189
143
  var mergedTagList = React.useMemo(function () {
190
144
  if (showVertical) return data;
191
145
  if (containerWidth < MIN_WIDTH) return data;
@@ -205,21 +159,16 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
205
159
  React.useLayoutEffect(function () {
206
160
  if (showVertical) return;
207
161
  var tagMaxCount = 0;
208
-
209
162
  if (typeAssertion.isArrayNonEmpty(mergedTagList)) {
210
163
  var len = mergedTagList.length;
211
164
  var lastIndex = len - 1;
212
165
  var totalWidth = 72; // 更多
213
-
214
166
  for (var i = 0; i < len; ++i) {
215
167
  var currentTagWidth = getTagWidth(i);
216
-
217
168
  if (currentTagWidth === undefined) {
218
169
  break;
219
170
  }
220
-
221
171
  totalWidth += currentTagWidth;
222
-
223
172
  if (lastIndex === 0 && totalWidth <= containerWidth || i === lastIndex - 1 && totalWidth + getTagWidth(lastIndex) <= containerWidth) {
224
173
  tagMaxCount = lastIndex;
225
174
  break;
@@ -230,33 +179,37 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
230
179
  }
231
180
  } else {
232
181
  tagMaxCount = 0;
233
- } // 保底要展示 1 个
234
-
235
-
182
+ }
183
+ // 保底要展示 1 个
236
184
  setTagMaxCount(typeAssertion.isArrayNonEmpty(mergedTagList) && tagMaxCount < 1 ? 1 : tagMaxCount + 1);
237
185
  }, [showVertical, getTagWidth, containerWidth, mergedTagList]);
238
-
239
186
  var renderFooter = function renderFooter() {
240
- var collapseNode = canToggle ? /*#__PURE__*/React__default["default"].createElement("div", {
187
+ var collapseNode = canToggle ? /*#__PURE__*/React.createElement("div", {
241
188
  className: classname.cx(prefixCls + "__toggle"),
242
189
  onClick: function onClick() {
243
- miniToggleAction.not(); // 关闭所有展开的子菜单,防止切换到 mini 模式后,子菜单还是展开的
244
-
190
+ miniToggleAction.not();
191
+ // 关闭所有展开的子菜单,防止切换到 mini 模式后,子菜单还是展开的
245
192
  updateExpandedIds([]);
246
193
  }
247
- }, mini ? /*#__PURE__*/React__default["default"].createElement(icons.MenuUnfoldOutlined, null) : /*#__PURE__*/React__default["default"].createElement(icons.MenuFoldOutlined, null)) : null;
248
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, typeAssertion.isFunction(footerRender) ? footerRender({
194
+ }, mini ? /*#__PURE__*/React.createElement(icons.MenuUnfoldOutlined, null) : /*#__PURE__*/React.createElement(icons.MenuFoldOutlined, null)) : null;
195
+ return /*#__PURE__*/React.createElement(React.Fragment, null, typeAssertion.isFunction(footerRender) ? footerRender({
249
196
  collapsed: showMini,
250
197
  collapseNode: collapseNode
251
198
  }) : collapseNode);
252
199
  };
253
-
200
+ var renderItem = React.useCallback(function (menuItem, level) {
201
+ // 显示缩略内容
202
+ if (showMini && level === 1) {
203
+ return renderMenuItemMini(menuItem);
204
+ }
205
+ return typeAssertion.isFunction(render) ? render(menuItem, level) : menuItem.title;
206
+ }, [render, showMini]);
254
207
  var cls = classname.cx(prefixCls, className, prefixCls + "--" + placement, prefixCls + "--size-" + size, mini && prefixCls + "--mini", (expandedType === 'pop' || showAllSubMenus || mini) && prefixCls + "--popup");
255
- return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
208
+ return /*#__PURE__*/React.createElement("div", Object.assign({
256
209
  ref: useMergeRefs.useMergeRefs(ref, setContainerElement),
257
210
  role: role,
258
211
  className: cls
259
- }, rest), extraHeader, /*#__PURE__*/React__default["default"].createElement(context["default"].Provider, {
212
+ }, rest), extraHeader, /*#__PURE__*/React.createElement(context["default"].Provider, {
260
213
  value: {
261
214
  placement: placement,
262
215
  expandedType: expandedType,
@@ -271,51 +224,46 @@ var Menu = /*#__PURE__*/React.forwardRef(function (_a, ref) {
271
224
  expandedIds: expandedIds,
272
225
  overlayClassName: overlayClassName
273
226
  }
274
- }, /*#__PURE__*/React__default["default"].createElement("ul", {
227
+ }, /*#__PURE__*/React.createElement("ul", {
275
228
  className: classname.cx(prefixCls + "__wrapper")
276
229
  }, mergedTagList.map(function (item, index) {
277
- return showMini ? /*#__PURE__*/React__default["default"].createElement(Tooltip__default["default"], {
230
+ return showMini ? /*#__PURE__*/React.createElement(Tooltip, {
278
231
  title: item.title,
279
232
  key: item.id,
280
233
  placement: "right"
281
- }, /*#__PURE__*/React__default["default"].createElement(MenuItem.MenuItem, Object.assign({}, item, {
234
+ }, /*#__PURE__*/React.createElement(MenuItem.MenuItem, Object.assign({}, item, {
282
235
  level: 1,
283
- render: renderMenuItemMini,
236
+ render: renderItem,
284
237
  raw: item,
285
238
  size: size
286
- }))) : /*#__PURE__*/React__default["default"].createElement(MenuItem.MenuItem, Object.assign({
239
+ }))) : /*#__PURE__*/React.createElement(MenuItem.MenuItem, Object.assign({
287
240
  hidden: !showVertical && index >= tagMaxCount
288
241
  }, item, {
289
- render: render,
242
+ render: renderItem,
290
243
  key: item.id,
291
244
  level: 1,
292
245
  raw: item,
293
246
  size: size
294
247
  }));
295
- }), showVertical || restTagList.length === 0 ? null : /*#__PURE__*/React__default["default"].createElement(MenuItem.MenuItem, {
248
+ }), showVertical || restTagList.length === 0 ? null : /*#__PURE__*/React.createElement(MenuItem.MenuItem, {
296
249
  key: MENU_MORE_ID,
297
250
  id: MENU_MORE_ID,
298
251
  title: "\u66F4\u591A",
299
252
  children: restTagList
300
- })), /*#__PURE__*/React__default["default"].createElement("div", {
253
+ })), /*#__PURE__*/React.createElement("div", {
301
254
  className: prefixCls + "__footer"
302
255
  }, renderFooter())));
303
256
  });
304
-
305
257
  if (env.__DEV__) {
306
258
  Menu.displayName = 'Menu';
307
259
  }
308
260
  /**
309
261
  * Mini 模式下渲染 item
310
262
  */
311
-
312
-
313
263
  var renderMenuItemMini = function renderMenuItemMini(menu) {
314
264
  if (typeof menu.title === 'string') {
315
265
  return menu.title.substring(0, 1);
316
266
  }
317
-
318
267
  return menu.title;
319
268
  };
320
-
321
269
  exports.Menu = Menu;