@hi-ui/menu 4.0.0-beta.3 → 4.0.0-beta.30
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/lib/cjs/Expander.js +2 -3
- package/lib/cjs/Menu.js +208 -54
- package/lib/cjs/MenuItem.js +158 -79
- package/lib/cjs/context.js +0 -1
- package/lib/cjs/index.js +0 -1
- package/lib/cjs/styles/index.scss.js +2 -3
- package/lib/cjs/util.js +0 -1
- package/lib/esm/Expander.js +0 -1
- package/lib/esm/Menu.js +198 -52
- package/lib/esm/MenuItem.js +128 -55
- package/lib/esm/context.js +1 -2
- package/lib/esm/index.js +0 -1
- package/lib/esm/styles/index.scss.js +3 -5
- package/lib/esm/util.js +0 -1
- package/lib/types/Menu.d.ts +62 -27
- package/lib/types/MenuItem.d.ts +14 -2
- package/lib/types/context.d.ts +2 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/types.d.ts +24 -2
- package/package.json +17 -9
- package/lib/cjs/Expander.js.map +0 -1
- package/lib/cjs/Menu.js.map +0 -1
- package/lib/cjs/MenuItem.js.map +0 -1
- package/lib/cjs/context.js.map +0 -1
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/styles/index.scss.js.map +0 -1
- package/lib/cjs/util.js.map +0 -1
- package/lib/esm/Expander.js.map +0 -1
- package/lib/esm/Menu.js.map +0 -1
- package/lib/esm/MenuItem.js.map +0 -1
- package/lib/esm/context.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/styles/index.scss.js.map +0 -1
- package/lib/esm/util.js.map +0 -1
package/lib/esm/Menu.js
CHANGED
|
@@ -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, useEffect, useCallback } from 'react';
|
|
11
|
+
import React, { forwardRef, useState, useEffect, useCallback, useMemo, useLayoutEffect } from 'react';
|
|
12
12
|
import { getPrefixCls, cx } from '@hi-ui/classname';
|
|
13
13
|
import { MenuUnfoldOutlined, MenuFoldOutlined } from '@hi-ui/icons';
|
|
14
14
|
import { __DEV__ } from '@hi-ui/env';
|
|
@@ -16,83 +16,199 @@ import { MenuItem } from './MenuItem.js';
|
|
|
16
16
|
import MenuContext from './context.js';
|
|
17
17
|
import { getAncestorIds } from './util.js';
|
|
18
18
|
import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
|
|
19
|
+
import Tooltip from '@hi-ui/tooltip';
|
|
20
|
+
import { useUncontrolledToggle } from '@hi-ui/use-toggle';
|
|
21
|
+
import { getTreeNodesWithChildren } from '@hi-ui/tree-utils';
|
|
22
|
+
import { isArrayNonEmpty, isFunction } from '@hi-ui/type-assertion';
|
|
23
|
+
import { useResizeObserver } from '@hi-ui/use-resize-observer';
|
|
24
|
+
import { useMergeRefs } from '@hi-ui/use-merge-refs';
|
|
19
25
|
var MENU_PREFIX = getPrefixCls('menu');
|
|
26
|
+
var DEFAULT_EXPANDED_IDS = [];
|
|
27
|
+
var NOOP_ARRAY = [];
|
|
28
|
+
var MIN_WIDTH = 56;
|
|
20
29
|
/**
|
|
21
30
|
* TODO: What is Menu
|
|
22
31
|
*/
|
|
23
32
|
|
|
24
33
|
var Menu = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
25
|
-
var _cx;
|
|
26
|
-
|
|
27
34
|
var _a$prefixCls = _a.prefixCls,
|
|
28
35
|
prefixCls = _a$prefixCls === void 0 ? MENU_PREFIX : _a$prefixCls,
|
|
29
36
|
_a$role = _a.role,
|
|
30
37
|
role = _a$role === void 0 ? 'menu' : _a$role,
|
|
31
38
|
className = _a.className,
|
|
32
|
-
data = _a.data,
|
|
39
|
+
_a$data = _a.data,
|
|
40
|
+
data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
|
|
33
41
|
_a$placement = _a.placement,
|
|
34
42
|
placement = _a$placement === void 0 ? 'vertical' : _a$placement,
|
|
35
|
-
showCollapse = _a.showCollapse,
|
|
43
|
+
_a$showCollapse = _a.showCollapse,
|
|
44
|
+
showCollapse = _a$showCollapse === void 0 ? false : _a$showCollapse,
|
|
36
45
|
_a$expandedType = _a.expandedType,
|
|
37
46
|
expandedType = _a$expandedType === void 0 ? 'collapse' : _a$expandedType,
|
|
38
47
|
_a$showAllSubMenus = _a.showAllSubMenus,
|
|
39
48
|
showAllSubMenus = _a$showAllSubMenus === void 0 ? false : _a$showAllSubMenus,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
_a$defaultExpandedAll = _a.defaultExpandedAll,
|
|
50
|
+
defaultExpandedAll = _a$defaultExpandedAll === void 0 ? false : _a$defaultExpandedAll,
|
|
51
|
+
_a$defaultExpandedIds = _a.defaultExpandedIds,
|
|
52
|
+
defaultExpandedIds = _a$defaultExpandedIds === void 0 ? DEFAULT_EXPANDED_IDS : _a$defaultExpandedIds,
|
|
53
|
+
expandedIdsProp = _a.expandedIds,
|
|
54
|
+
onExpand = _a.onExpand,
|
|
55
|
+
_a$defaultActiveId = _a.defaultActiveId,
|
|
56
|
+
defaultActiveId = _a$defaultActiveId === void 0 ? '' : _a$defaultActiveId,
|
|
57
|
+
activeIdProp = _a.activeId,
|
|
43
58
|
onClickSubMenu = _a.onClickSubMenu,
|
|
59
|
+
collapsed = _a.collapsed,
|
|
60
|
+
_a$defaultCollapsed = _a.defaultCollapsed,
|
|
61
|
+
defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,
|
|
62
|
+
onCollapse = _a.onCollapse,
|
|
63
|
+
footerRender = _a.footerRender,
|
|
44
64
|
onClick = _a.onClick,
|
|
45
|
-
rest = __rest(_a, ["prefixCls", "role", "className", "data", "placement", "showCollapse", "expandedType", "showAllSubMenus", "defaultExpandedIds", "defaultActiveId", "activeId", "onClickSubMenu", "onClick"]);
|
|
65
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "data", "placement", "showCollapse", "expandedType", "showAllSubMenus", "defaultExpandedAll", "defaultExpandedIds", "expandedIds", "onExpand", "defaultActiveId", "activeId", "onClickSubMenu", "collapsed", "defaultCollapsed", "onCollapse", "footerRender", "onClick"]);
|
|
46
66
|
|
|
47
|
-
var _useUncontrolledState = useUncontrolledState(defaultActiveId
|
|
48
|
-
|
|
67
|
+
var _useUncontrolledState = useUncontrolledState(defaultActiveId, activeIdProp, onClick),
|
|
68
|
+
activeId = _useUncontrolledState[0],
|
|
49
69
|
updateActiveId = _useUncontrolledState[1];
|
|
50
70
|
|
|
51
|
-
var _useState = useState(
|
|
71
|
+
var _useState = useState(function () {
|
|
72
|
+
return getAncestorIds(activeId, data);
|
|
73
|
+
}),
|
|
52
74
|
activeParents = _useState[0],
|
|
53
75
|
updateActiveParents = _useState[1];
|
|
54
76
|
|
|
55
77
|
useEffect(function () {
|
|
56
|
-
updateActiveParents(getAncestorIds(
|
|
57
|
-
}, [
|
|
78
|
+
updateActiveParents(getAncestorIds(activeId, data));
|
|
79
|
+
}, [activeId, data]);
|
|
58
80
|
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
81
|
+
var _useUncontrolledState2 = useUncontrolledState(function () {
|
|
82
|
+
return defaultExpandedAll ? getTreeNodesWithChildren(data).map(function (node) {
|
|
83
|
+
return node.id;
|
|
84
|
+
}) : defaultExpandedIds;
|
|
85
|
+
}, expandedIdsProp, onExpand),
|
|
86
|
+
expandedIds = _useUncontrolledState2[0],
|
|
87
|
+
updateExpandedIds = _useUncontrolledState2[1];
|
|
62
88
|
|
|
63
|
-
var clickMenu = useCallback(function (id) {
|
|
64
|
-
updateActiveId(id);
|
|
89
|
+
var clickMenu = useCallback(function (id, raw) {
|
|
90
|
+
updateActiveId(id, raw);
|
|
65
91
|
}, [updateActiveId]);
|
|
66
92
|
var clickSubMenu = useCallback(function (id) {
|
|
67
|
-
var
|
|
68
|
-
return
|
|
69
|
-
}) :
|
|
70
|
-
|
|
93
|
+
var nextExpandedIds = expandedIds.includes(id) ? expandedIds.filter(function (expandedId) {
|
|
94
|
+
return expandedId !== id;
|
|
95
|
+
}) : expandedIds.concat(id);
|
|
96
|
+
updateExpandedIds(nextExpandedIds);
|
|
71
97
|
|
|
72
98
|
if (onClickSubMenu) {
|
|
73
|
-
onClickSubMenu(id,
|
|
99
|
+
onClickSubMenu(id, nextExpandedIds);
|
|
74
100
|
}
|
|
75
|
-
}, [onClickSubMenu,
|
|
101
|
+
}, [onClickSubMenu, expandedIds, updateExpandedIds]);
|
|
76
102
|
var closePopper = useCallback(function (id) {
|
|
77
|
-
|
|
78
|
-
return
|
|
103
|
+
updateExpandedIds(expandedIds.filter(function (expandedId) {
|
|
104
|
+
return expandedId !== id;
|
|
79
105
|
}));
|
|
80
|
-
}, [
|
|
106
|
+
}, [expandedIds, updateExpandedIds]);
|
|
81
107
|
var closeAllPopper = useCallback(function () {
|
|
82
|
-
|
|
83
|
-
}, []);
|
|
84
|
-
|
|
85
|
-
var
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
108
|
+
updateExpandedIds([]);
|
|
109
|
+
}, [updateExpandedIds]);
|
|
110
|
+
|
|
111
|
+
var _useUncontrolledToggl = useUncontrolledToggle({
|
|
112
|
+
defaultVisible: defaultCollapsed,
|
|
113
|
+
visible: collapsed,
|
|
114
|
+
onToggle: onCollapse
|
|
115
|
+
}),
|
|
116
|
+
mini = _useUncontrolledToggl[0],
|
|
117
|
+
miniToggleAction = _useUncontrolledToggl[1];
|
|
118
|
+
|
|
119
|
+
var showVertical = placement === 'vertical';
|
|
120
|
+
var canToggle = showVertical && showCollapse;
|
|
121
|
+
var showMini = showVertical && mini;
|
|
122
|
+
|
|
123
|
+
var _useState2 = useState(null),
|
|
124
|
+
containerElement = _useState2[0],
|
|
125
|
+
setContainerElement = _useState2[1];
|
|
126
|
+
|
|
127
|
+
var _useState3 = useState(),
|
|
128
|
+
_useState3$ = _useState3[0],
|
|
129
|
+
containerWidth = _useState3$ === void 0 ? 0 : _useState3$,
|
|
130
|
+
setContainerWidth = _useState3[1];
|
|
131
|
+
|
|
132
|
+
useResizeObserver({
|
|
133
|
+
element: containerElement,
|
|
134
|
+
disabled: showVertical,
|
|
135
|
+
getSize: function getSize(element) {
|
|
136
|
+
var itemRect = element.getBoundingClientRect();
|
|
137
|
+
return itemRect.width;
|
|
138
|
+
},
|
|
139
|
+
onResize: function onResize(el, width) {
|
|
140
|
+
setContainerWidth(width);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
var _useState4 = useState(0),
|
|
145
|
+
tagMaxCount = _useState4[0],
|
|
146
|
+
setTagMaxCount = _useState4[1];
|
|
147
|
+
|
|
148
|
+
var mergedTagList = useMemo(function () {
|
|
149
|
+
if (showVertical) return data;
|
|
150
|
+
if (containerWidth < MIN_WIDTH) return data;
|
|
151
|
+
return data.slice(0, Math.min(data.length, containerWidth / MIN_WIDTH));
|
|
152
|
+
}, [showVertical, data, containerWidth]);
|
|
153
|
+
var restTagList = useMemo(function () {
|
|
154
|
+
if (tagMaxCount > 0) return data.slice(tagMaxCount);
|
|
155
|
+
return [];
|
|
156
|
+
}, [data, tagMaxCount]);
|
|
157
|
+
var getTagWidth = useCallback(function (index) {
|
|
158
|
+
if (!containerElement) return MIN_WIDTH;
|
|
159
|
+
var elements = containerElement.getElementsByClassName('hi-v4-menu-item');
|
|
160
|
+
var element = elements && elements[index];
|
|
161
|
+
if (!element) return MIN_WIDTH;
|
|
162
|
+
return element.getBoundingClientRect().width;
|
|
163
|
+
}, [containerElement]);
|
|
164
|
+
useLayoutEffect(function () {
|
|
165
|
+
if (showVertical) return;
|
|
166
|
+
var tagMaxCount = 0;
|
|
167
|
+
|
|
168
|
+
if (isArrayNonEmpty(mergedTagList)) {
|
|
169
|
+
var len = mergedTagList.length;
|
|
170
|
+
var lastIndex = len - 1;
|
|
171
|
+
var totalWidth = 72; // 更多
|
|
172
|
+
|
|
173
|
+
for (var i = 0; i < len; ++i) {
|
|
174
|
+
var currentTagWidth = getTagWidth(i);
|
|
175
|
+
|
|
176
|
+
if (currentTagWidth === undefined) {
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
totalWidth += currentTagWidth;
|
|
181
|
+
|
|
182
|
+
if (lastIndex === 0 && totalWidth <= containerWidth || i === lastIndex - 1 && totalWidth + getTagWidth(lastIndex) <= containerWidth) {
|
|
183
|
+
tagMaxCount = lastIndex;
|
|
184
|
+
break;
|
|
185
|
+
} else if (totalWidth > containerWidth) {
|
|
186
|
+
tagMaxCount = i - 1;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} else {
|
|
191
|
+
tagMaxCount = 0;
|
|
192
|
+
} // 保底要展示 1 个
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
setTagMaxCount(isArrayNonEmpty(mergedTagList) && tagMaxCount < 1 ? 1 : tagMaxCount + 1);
|
|
196
|
+
}, [showVertical, getTagWidth, containerWidth, mergedTagList]);
|
|
197
|
+
|
|
198
|
+
var renderFooter = function renderFooter() {
|
|
199
|
+
var collapseNode = canToggle ? /*#__PURE__*/React.createElement("div", {
|
|
200
|
+
className: cx(prefixCls + "__toggle"),
|
|
201
|
+
onClick: miniToggleAction.not
|
|
202
|
+
}, mini ? /*#__PURE__*/React.createElement(MenuUnfoldOutlined, null) : /*#__PURE__*/React.createElement(MenuFoldOutlined, null)) : null;
|
|
203
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, isFunction(footerRender) ? footerRender({
|
|
204
|
+
collapsed: showMini,
|
|
205
|
+
collapseNode: collapseNode
|
|
206
|
+
}) : collapseNode);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
var cls = cx(prefixCls, className, prefixCls + "--" + placement, mini && prefixCls + "--mini", (expandedType === 'pop' || showAllSubMenus || mini) && prefixCls + "--popup");
|
|
94
210
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
95
|
-
ref: ref,
|
|
211
|
+
ref: useMergeRefs(ref, setContainerElement),
|
|
96
212
|
role: role,
|
|
97
213
|
className: cls
|
|
98
214
|
}, rest), /*#__PURE__*/React.createElement(MenuContext.Provider, {
|
|
@@ -106,25 +222,55 @@ var Menu = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
106
222
|
closePopper: closePopper,
|
|
107
223
|
closeAllPopper: closeAllPopper,
|
|
108
224
|
activeParents: activeParents,
|
|
109
|
-
activeId:
|
|
110
|
-
expandedIds:
|
|
225
|
+
activeId: activeId,
|
|
226
|
+
expandedIds: expandedIds
|
|
111
227
|
}
|
|
112
228
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
113
229
|
className: cx(prefixCls + "__wrapper")
|
|
114
|
-
},
|
|
115
|
-
return /*#__PURE__*/React.createElement(
|
|
116
|
-
|
|
117
|
-
|
|
230
|
+
}, mergedTagList.map(function (item, index) {
|
|
231
|
+
return showMini ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
232
|
+
title: item.title,
|
|
233
|
+
key: item.id,
|
|
234
|
+
placement: "right"
|
|
235
|
+
}, /*#__PURE__*/React.createElement(MenuItem, Object.assign({}, item, {
|
|
236
|
+
level: 1,
|
|
237
|
+
render: renderMenuItemMini,
|
|
238
|
+
raw: item
|
|
239
|
+
}))) : /*#__PURE__*/React.createElement(MenuItem, Object.assign({
|
|
240
|
+
hidden: !showVertical && index >= tagMaxCount
|
|
241
|
+
}, item, {
|
|
242
|
+
key: item.id,
|
|
243
|
+
level: 1,
|
|
244
|
+
raw: item
|
|
118
245
|
}));
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
246
|
+
}), /*#__PURE__*/React.createElement(MenuItem, {
|
|
247
|
+
hidden: showVertical || restTagList.length === 0,
|
|
248
|
+
id: "hi-v4-menu-more",
|
|
249
|
+
title: "\u66F4\u591A",
|
|
250
|
+
children: restTagList
|
|
251
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
252
|
+
className: prefixCls + "__footer"
|
|
253
|
+
}, renderFooter())));
|
|
123
254
|
});
|
|
124
255
|
|
|
125
256
|
if (__DEV__) {
|
|
126
257
|
Menu.displayName = 'Menu';
|
|
127
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Mini 模式下渲染 item
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
var renderMenuItemMini = function renderMenuItemMini(menu) {
|
|
265
|
+
if (typeof menu.icon !== 'undefined') {
|
|
266
|
+
return menu.icon;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (typeof menu.title === 'string') {
|
|
270
|
+
return menu.title.substring(0, 1);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return menu.title;
|
|
274
|
+
};
|
|
128
275
|
|
|
129
276
|
export { Menu };
|
|
130
|
-
//# sourceMappingURL=Menu.js.map
|
package/lib/esm/MenuItem.js
CHANGED
|
@@ -7,28 +7,44 @@
|
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
|
-
import
|
|
10
|
+
import { __rest } from 'tslib';
|
|
11
|
+
import React, { forwardRef, useRef, useContext } from 'react';
|
|
11
12
|
import { getPrefixCls, cx } from '@hi-ui/classname';
|
|
12
13
|
import { __DEV__ } from '@hi-ui/env';
|
|
13
|
-
import {
|
|
14
|
+
import { RightOutlined, DownOutlined, UpOutlined } from '@hi-ui/icons';
|
|
14
15
|
import MenuContext from './context.js';
|
|
15
|
-
import
|
|
16
|
+
import Popper from '@hi-ui/popper';
|
|
16
17
|
import { Expander } from './Expander.js';
|
|
18
|
+
import { isArrayNonEmpty, isFunction } from '@hi-ui/type-assertion';
|
|
19
|
+
import { times } from '@hi-ui/array-utils';
|
|
20
|
+
import { useMergeRefs } from '@hi-ui/use-merge-refs';
|
|
17
21
|
var MENU_PREFIX = getPrefixCls('menu');
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
var hiddenStyle = {
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
opacity: 0,
|
|
25
|
+
order: 9999,
|
|
26
|
+
visibility: 'hidden'
|
|
27
|
+
};
|
|
28
|
+
var MenuItem = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
20
29
|
var _cx, _cx2;
|
|
21
30
|
|
|
22
|
-
var
|
|
23
|
-
prefixCls =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
level =
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
var _a$prefixCls = _a.prefixCls,
|
|
32
|
+
prefixCls = _a$prefixCls === void 0 ? MENU_PREFIX : _a$prefixCls,
|
|
33
|
+
className = _a.className,
|
|
34
|
+
icon = _a.icon,
|
|
35
|
+
title = _a.title,
|
|
36
|
+
disabled = _a.disabled,
|
|
37
|
+
id = _a.id,
|
|
38
|
+
_a$level = _a.level,
|
|
39
|
+
level = _a$level === void 0 ? 1 : _a$level,
|
|
40
|
+
children = _a.children,
|
|
41
|
+
parentIds = _a.parentIds,
|
|
42
|
+
_a$hidden = _a.hidden,
|
|
43
|
+
hidden = _a$hidden === void 0 ? false : _a$hidden,
|
|
44
|
+
render = _a.render,
|
|
45
|
+
raw = _a.raw,
|
|
46
|
+
rest = __rest(_a, ["prefixCls", "className", "icon", "title", "disabled", "id", "level", "children", "parentIds", "hidden", "render", "raw"]);
|
|
47
|
+
|
|
32
48
|
var itemRef = useRef(null);
|
|
33
49
|
|
|
34
50
|
var _useContext = useContext(MenuContext),
|
|
@@ -46,40 +62,60 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
46
62
|
|
|
47
63
|
var _parentIds = (parentIds || []).concat(id);
|
|
48
64
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
className: cx(prefixCls + "-
|
|
65
|
+
var hasChildren = isArrayNonEmpty(children);
|
|
66
|
+
var mergedRef = useMergeRefs(itemRef, ref);
|
|
67
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("li", Object.assign({
|
|
68
|
+
ref: mergedRef,
|
|
69
|
+
className: cx(prefixCls + "-item", (_cx = {}, _cx[prefixCls + "-item__inner--mini"] = mini, _cx[prefixCls + "-item--disabled"] = disabled, _cx[prefixCls + "-item--active"] = placement === 'horizontal' && (activeId === id || (activeParents === null || activeParents === void 0 ? void 0 : activeParents.includes(id))) && level === 1, _cx), className),
|
|
70
|
+
style: hidden ? hiddenStyle : undefined
|
|
71
|
+
}, rest), /*#__PURE__*/React.createElement("div", {
|
|
72
|
+
className: cx(prefixCls + "-item__inner", (_cx2 = {}, _cx2[prefixCls + "-item__inner--active"] = activeId === id, _cx2[prefixCls + "-item__inner--active-p"] = activeParents === null || activeParents === void 0 ? void 0 : activeParents.includes(id), _cx2[prefixCls + "-item__inner--expanded"] = expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id), _cx2)),
|
|
54
73
|
onClick: function onClick() {
|
|
55
|
-
if (children
|
|
74
|
+
if (isArrayNonEmpty(children)) {
|
|
56
75
|
if (clickSubMenu) {
|
|
57
76
|
clickSubMenu(id);
|
|
58
77
|
}
|
|
59
78
|
} else {
|
|
60
79
|
if (clickMenu) {
|
|
61
|
-
|
|
80
|
+
// @ts-ignore
|
|
81
|
+
clickMenu(id, raw);
|
|
62
82
|
}
|
|
63
83
|
|
|
64
84
|
if (closeAllPopper && !(placement === 'vertical' && expandedType === 'collapse' && mini === false)) {
|
|
65
85
|
closeAllPopper();
|
|
66
86
|
}
|
|
67
87
|
}
|
|
68
|
-
},
|
|
69
|
-
style: placement === 'vertical' && expandedType === 'collapse' && !mini ? {
|
|
70
|
-
paddingLeft: level > 1 ? 12 + (level - 1 > 0 ? 1 : 0) * 20 + (level - 2 || 0) * 16 : 12
|
|
71
|
-
} : {}
|
|
72
|
-
}, icon, /*#__PURE__*/React.createElement("span", {
|
|
73
|
-
className: prefixCls + "-item__content"
|
|
74
|
-
}, title), (children === null || children === void 0 ? void 0 : children.length) && !mini && placement === 'vertical' && expandedType === 'collapse' && !showAllSubMenus && ((expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)) ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null)), (children === null || children === void 0 ? void 0 : children.length) && mini && level > 1 && placement === 'vertical' && /*#__PURE__*/React.createElement(RightOutlined, null), (children === null || children === void 0 ? void 0 : children.length) && !mini && placement === 'vertical' && (expandedType === 'pop' || showAllSubMenus) && /*#__PURE__*/React.createElement(RightOutlined, null), (children === null || children === void 0 ? void 0 : children.length) && placement === 'horizontal' && level > 1 && /*#__PURE__*/React.createElement(RightOutlined, null), (children === null || children === void 0 ? void 0 : children.length) && placement === 'horizontal' && level === 1 && ((expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)) ? /*#__PURE__*/React.createElement(UpOutlined, {
|
|
75
|
-
style: {
|
|
76
|
-
marginLeft: 4
|
|
77
|
-
}
|
|
78
|
-
}) : /*#__PURE__*/React.createElement(DownOutlined, {
|
|
79
|
-
style: {
|
|
80
|
-
marginLeft: 4
|
|
81
88
|
}
|
|
82
|
-
}
|
|
89
|
+
}, placement === 'vertical' && expandedType === 'collapse' && !mini ? renderIndent({
|
|
90
|
+
prefixCls: prefixCls + "-item",
|
|
91
|
+
depth: level - 1
|
|
92
|
+
}) : null, icon ? /*#__PURE__*/React.createElement("span", {
|
|
93
|
+
className: prefixCls + "-item__icon"
|
|
94
|
+
}, icon) : null, /*#__PURE__*/React.createElement("span", {
|
|
95
|
+
className: prefixCls + "-item__content"
|
|
96
|
+
}, isFunction(render) ? render({
|
|
97
|
+
id: id,
|
|
98
|
+
icon: icon,
|
|
99
|
+
title: title
|
|
100
|
+
}) : title), hasChildren && !mini && placement === 'vertical' && expandedType === 'collapse' && !showAllSubMenus && ((expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)) ? /*#__PURE__*/React.createElement(Arrow, {
|
|
101
|
+
prefixCls: prefixCls + "-item",
|
|
102
|
+
direction: "up"
|
|
103
|
+
}) : /*#__PURE__*/React.createElement(Arrow, {
|
|
104
|
+
prefixCls: prefixCls + "-item",
|
|
105
|
+
direction: "down"
|
|
106
|
+
})), hasChildren && mini && level > 1 && placement === 'vertical' ? /*#__PURE__*/React.createElement(Arrow, {
|
|
107
|
+
prefixCls: prefixCls + "-item"
|
|
108
|
+
}) : null, hasChildren && !mini && placement === 'vertical' && (expandedType === 'pop' || showAllSubMenus) ? /*#__PURE__*/React.createElement(Arrow, {
|
|
109
|
+
prefixCls: prefixCls + "-item"
|
|
110
|
+
}) : null, hasChildren && placement === 'horizontal' && level > 1 ? /*#__PURE__*/React.createElement(Arrow, {
|
|
111
|
+
prefixCls: prefixCls + "-item"
|
|
112
|
+
}) : null, hasChildren && placement === 'horizontal' && level === 1 && ((expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)) ? /*#__PURE__*/React.createElement(Arrow, {
|
|
113
|
+
prefixCls: prefixCls + "-item",
|
|
114
|
+
direction: "up"
|
|
115
|
+
}) : /*#__PURE__*/React.createElement(Arrow, {
|
|
116
|
+
prefixCls: prefixCls + "-item",
|
|
117
|
+
direction: "down"
|
|
118
|
+
}))), hasChildren && placement === 'vertical' && !mini && !showAllSubMenus && expandedType === 'collapse' ? /*#__PURE__*/React.createElement(Expander, {
|
|
83
119
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id))
|
|
84
120
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
85
121
|
className: prefixCls + "-submenu"
|
|
@@ -87,9 +123,10 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
87
123
|
return /*#__PURE__*/React.createElement(MenuItem, Object.assign({}, child, {
|
|
88
124
|
key: child.id,
|
|
89
125
|
level: level + 1,
|
|
90
|
-
parentIds: _parentIds
|
|
126
|
+
parentIds: _parentIds,
|
|
127
|
+
raw: child
|
|
91
128
|
}));
|
|
92
|
-
})))
|
|
129
|
+
}))) : null), hasChildren && placement === 'vertical' && mini && !showAllSubMenus && expandedType === 'collapse' && (level === 1 ? /*#__PURE__*/React.createElement(Popper, {
|
|
93
130
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
94
131
|
attachEl: itemRef.current,
|
|
95
132
|
placement: 'right-start',
|
|
@@ -112,6 +149,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
112
149
|
attachEl: itemRef.current,
|
|
113
150
|
placement: 'right-start',
|
|
114
151
|
gutterGap: 16,
|
|
152
|
+
disabledPortal: true,
|
|
115
153
|
onClose: function onClose() {
|
|
116
154
|
if (closePopper) {
|
|
117
155
|
closePopper(id);
|
|
@@ -125,7 +163,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
125
163
|
level: level + 1,
|
|
126
164
|
parentIds: _parentIds
|
|
127
165
|
}));
|
|
128
|
-
})))),
|
|
166
|
+
})))), hasChildren && placement === 'vertical' && !showAllSubMenus && expandedType === 'pop' && (level === 1 ? /*#__PURE__*/React.createElement(Popper, {
|
|
129
167
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
130
168
|
attachEl: itemRef.current,
|
|
131
169
|
placement: 'right-start',
|
|
@@ -146,6 +184,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
146
184
|
}))) : /*#__PURE__*/React.createElement(Popper, {
|
|
147
185
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
148
186
|
attachEl: itemRef.current,
|
|
187
|
+
disabledPortal: true,
|
|
149
188
|
placement: 'right-start',
|
|
150
189
|
gutterGap: 16,
|
|
151
190
|
onClose: function onClose() {
|
|
@@ -161,7 +200,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
161
200
|
level: level + 1,
|
|
162
201
|
parentIds: _parentIds
|
|
163
202
|
}));
|
|
164
|
-
})))),
|
|
203
|
+
})))), hasChildren && placement === 'vertical' && showAllSubMenus ? /*#__PURE__*/React.createElement(Popper, {
|
|
165
204
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
166
205
|
attachEl: itemRef.current,
|
|
167
206
|
placement: 'right-start',
|
|
@@ -174,20 +213,18 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
174
213
|
}, /*#__PURE__*/React.createElement("div", {
|
|
175
214
|
className: prefixCls + "-fat-menu"
|
|
176
215
|
}, children.map(function (child) {
|
|
177
|
-
var _a;
|
|
178
|
-
|
|
179
216
|
return /*#__PURE__*/React.createElement("div", {
|
|
180
217
|
key: child.id,
|
|
181
218
|
className: prefixCls + "-fat-menu__group"
|
|
182
219
|
}, /*#__PURE__*/React.createElement("div", {
|
|
183
220
|
className: prefixCls + "-group-item"
|
|
184
|
-
}, child.title),
|
|
221
|
+
}, child.title), child && isArrayNonEmpty(child.children) ? /*#__PURE__*/React.createElement("ul", null, child.children.map(function (item) {
|
|
185
222
|
var _cx3;
|
|
186
223
|
|
|
187
224
|
return /*#__PURE__*/React.createElement("div", {
|
|
188
225
|
onClick: function onClick() {
|
|
189
226
|
if (clickMenu) {
|
|
190
|
-
clickMenu(item.id);
|
|
227
|
+
clickMenu(item.id, item);
|
|
191
228
|
}
|
|
192
229
|
|
|
193
230
|
if (closePopper) {
|
|
@@ -197,8 +234,8 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
197
234
|
className: cx(prefixCls + "-item", (_cx3 = {}, _cx3[prefixCls + "-item--active"] = activeId === item.id, _cx3)),
|
|
198
235
|
key: item.id
|
|
199
236
|
}, item.title);
|
|
200
|
-
})));
|
|
201
|
-
})))
|
|
237
|
+
})) : null);
|
|
238
|
+
}))) : null, hasChildren && placement === 'horizontal' && !showAllSubMenus && (level === 1 ? /*#__PURE__*/React.createElement(Popper, {
|
|
202
239
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
203
240
|
attachEl: itemRef.current,
|
|
204
241
|
placement: level === 1 ? 'bottom-start' : 'right-start',
|
|
@@ -219,6 +256,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
219
256
|
}))) : /*#__PURE__*/React.createElement(Popper, {
|
|
220
257
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
221
258
|
attachEl: itemRef.current,
|
|
259
|
+
disabledPortal: true,
|
|
222
260
|
placement: level === 1 ? 'bottom-start' : 'right-start',
|
|
223
261
|
gutterGap: level === 1 ? 8 : 16,
|
|
224
262
|
onClose: function onClose() {
|
|
@@ -234,7 +272,7 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
234
272
|
level: level + 1,
|
|
235
273
|
parentIds: _parentIds
|
|
236
274
|
}));
|
|
237
|
-
})))),
|
|
275
|
+
})))), hasChildren && placement === 'horizontal' && showAllSubMenus ? /*#__PURE__*/React.createElement(Popper, {
|
|
238
276
|
visible: !!(expandedIds === null || expandedIds === void 0 ? void 0 : expandedIds.includes(id)),
|
|
239
277
|
attachEl: itemRef.current,
|
|
240
278
|
placement: 'bottom-start',
|
|
@@ -247,21 +285,19 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
247
285
|
}, /*#__PURE__*/React.createElement("div", {
|
|
248
286
|
className: prefixCls + "-fat-menu"
|
|
249
287
|
}, children.map(function (child) {
|
|
250
|
-
var _a;
|
|
251
|
-
|
|
252
288
|
return /*#__PURE__*/React.createElement("div", {
|
|
253
289
|
key: child.id,
|
|
254
290
|
className: prefixCls + "-fat-menu__group"
|
|
255
291
|
}, /*#__PURE__*/React.createElement("div", {
|
|
256
292
|
className: prefixCls + "-group-item"
|
|
257
|
-
}, child.title),
|
|
293
|
+
}, child.title), child && isArrayNonEmpty(child.children) ? /*#__PURE__*/React.createElement("ul", null, child.children.map(function (item) {
|
|
258
294
|
var _cx4;
|
|
259
295
|
|
|
260
296
|
return /*#__PURE__*/React.createElement("div", {
|
|
261
297
|
className: cx(prefixCls + "-item", (_cx4 = {}, _cx4[prefixCls + "-item--active"] = activeId === item.id, _cx4)),
|
|
262
298
|
onClick: function onClick() {
|
|
263
299
|
if (clickMenu) {
|
|
264
|
-
clickMenu(item.id);
|
|
300
|
+
clickMenu(item.id, item);
|
|
265
301
|
}
|
|
266
302
|
|
|
267
303
|
if (closePopper) {
|
|
@@ -270,13 +306,50 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
270
306
|
},
|
|
271
307
|
key: item.id
|
|
272
308
|
}, item.title);
|
|
273
|
-
})));
|
|
274
|
-
}))));
|
|
275
|
-
};
|
|
309
|
+
})) : null);
|
|
310
|
+
}))) : null);
|
|
311
|
+
});
|
|
276
312
|
|
|
277
313
|
if (__DEV__) {
|
|
278
314
|
MenuItem.displayName = 'MenuItem';
|
|
279
315
|
}
|
|
280
316
|
|
|
317
|
+
var Arrow = function Arrow(_ref) {
|
|
318
|
+
var prefixCls = _ref.prefixCls,
|
|
319
|
+
direction = _ref.direction;
|
|
320
|
+
var icon = null;
|
|
321
|
+
|
|
322
|
+
switch (direction) {
|
|
323
|
+
case 'up':
|
|
324
|
+
icon = /*#__PURE__*/React.createElement(UpOutlined, null);
|
|
325
|
+
break;
|
|
326
|
+
|
|
327
|
+
case 'down':
|
|
328
|
+
icon = /*#__PURE__*/React.createElement(DownOutlined, null);
|
|
329
|
+
break;
|
|
330
|
+
|
|
331
|
+
default:
|
|
332
|
+
icon = /*#__PURE__*/React.createElement(RightOutlined, null);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
336
|
+
className: prefixCls + "__arrow"
|
|
337
|
+
}, icon);
|
|
338
|
+
};
|
|
339
|
+
/**
|
|
340
|
+
* 渲染空白占位
|
|
341
|
+
*/
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
var renderIndent = function renderIndent(_ref2) {
|
|
345
|
+
var prefixCls = _ref2.prefixCls,
|
|
346
|
+
depth = _ref2.depth;
|
|
347
|
+
return times(depth, function (index) {
|
|
348
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
349
|
+
className: prefixCls + "__indent",
|
|
350
|
+
key: index
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
};
|
|
354
|
+
|
|
281
355
|
export { MenuItem };
|
|
282
|
-
//# sourceMappingURL=MenuItem.js.map
|
package/lib/esm/context.js
CHANGED
package/lib/esm/index.js
CHANGED