@ucloud-fe/react-components 1.9.1 → 1.10.1

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/__index.js CHANGED
@@ -119,6 +119,10 @@ import * as ModalAll from './components/Modal/';
119
119
  const Modal = Object.assign(ModalAll.default, ModalAll);
120
120
  export { Modal };
121
121
 
122
+ import * as NavAll from './components/Nav/';
123
+ const Nav = Object.assign(NavAll.default, NavAll);
124
+ export { Nav };
125
+
122
126
  import * as NoticeAll from './components/Notice/';
123
127
  const Notice = Object.assign(NoticeAll.default, NoticeAll);
124
128
  export { Notice };
@@ -0,0 +1,50 @@
1
+ import React, { Dispatch, HTMLAttributes, SetStateAction } from 'react';
2
+ import type { MenuProps as RcMenuProps } from 'rc-menu';
3
+ import { Override } from '../../type';
4
+ import { ItemType, NavItemProps, SubMenuProps } from './type';
5
+ export interface NavProps extends Omit<RcMenuProps, 'items'> {
6
+ /**
7
+ * 菜单类型,垂直或内嵌,默认内嵌
8
+ */
9
+ mode?: 'vertical' | 'inline';
10
+ /**
11
+ * 菜单项
12
+ */
13
+ items?: ItemType[];
14
+ /**
15
+ * inline 时菜单是否收起状态
16
+ */
17
+ inlineCollapsed?: boolean;
18
+ /**
19
+ * 每一级缩进量
20
+ */
21
+ inlineIndent?: number;
22
+ /**
23
+ * 初始展开的 SubMenu 菜单项 key 数组
24
+ */
25
+ defaultOpenKeys?: string[];
26
+ /**
27
+ * 初始选中的菜单项 key 数组
28
+ */
29
+ defaultSelectedKeys?: string[];
30
+ /**
31
+ * SubMenu 展开/关闭的回调
32
+ */
33
+ onOpenChange?: (openKeys: string[]) => void;
34
+ /**
35
+ * 自定义 SubMenu render,可以获取 items 参数传入的数据
36
+ */
37
+ subMenuItemRender?: (itemProps: SubMenuProps, dom: JSX.Element) => JSX.Element;
38
+ /**
39
+ * 自定义 MenuItem render,可以获取 items 参数传入的数据
40
+ */
41
+ menuItemRender?: (itemProps: NavItemProps, dom: JSX.Element) => JSX.Element;
42
+ }
43
+ export interface VerticalContextProps {
44
+ openKeys?: string[];
45
+ selectedKeys?: string[];
46
+ SetSelectedKeys?: Dispatch<SetStateAction<string[]>>;
47
+ }
48
+ export declare const VerticalContext: React.Context<VerticalContextProps>;
49
+ declare const Nav: ({ className, items, inlineCollapsed, mode, inlineIndent, subMenuItemRender, menuItemRender, ...rest }: NavProps & Override<HTMLAttributes<HTMLDivElement>, NavProps>) => JSX.Element;
50
+ export default Nav;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.VerticalContext = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _react = _interopRequireWildcard(require("react"));
23
+
24
+ var _classnames = _interopRequireDefault(require("classnames"));
25
+
26
+ var _rcMenu = _interopRequireDefault(require("rc-menu"));
27
+
28
+ var _NavContext = _interopRequireDefault(require("./NavContext"));
29
+
30
+ var _NavItem = require("./NavItem");
31
+
32
+ var _style = require("./style");
33
+
34
+ var _excluded = ["className", "items", "inlineCollapsed", "mode", "inlineIndent", "subMenuItemRender", "menuItemRender"];
35
+
36
+ var _this = void 0;
37
+
38
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
42
+ var VerticalContext = /*#__PURE__*/_react.default.createContext({
43
+ openKeys: [],
44
+ selectedKeys: []
45
+ });
46
+
47
+ exports.VerticalContext = VerticalContext;
48
+
49
+ var Nav = function Nav(_ref) {
50
+ var _this2 = this;
51
+
52
+ (0, _newArrowCheck2.default)(this, _this);
53
+ var className = _ref.className,
54
+ items = _ref.items,
55
+ inlineCollapsed = _ref.inlineCollapsed,
56
+ _ref$mode = _ref.mode,
57
+ mode = _ref$mode === void 0 ? 'inline' : _ref$mode,
58
+ _ref$inlineIndent = _ref.inlineIndent,
59
+ inlineIndent = _ref$inlineIndent === void 0 ? 32 : _ref$inlineIndent,
60
+ subMenuItemRender = _ref.subMenuItemRender,
61
+ menuItemRender = _ref.menuItemRender,
62
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
63
+ var newMode = (0, _react.useMemo)(function () {
64
+ (0, _newArrowCheck2.default)(this, _this2);
65
+ return inlineCollapsed ? 'vertical' : mode;
66
+ }.bind(this), [inlineCollapsed, mode]);
67
+ var mergedChildren = (0, _NavItem.useItems)(items, inlineIndent, inlineCollapsed, mode);
68
+
69
+ var _React$useState = _react.default.useState(rest.defaultSelectedKeys || []),
70
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
71
+ selectedKeys = _React$useState2[0],
72
+ SetSelectedKeys = _React$useState2[1];
73
+
74
+ var contextValue = _react.default.useMemo(function () {
75
+ (0, _newArrowCheck2.default)(this, _this2);
76
+ return {
77
+ inlineCollapsed: inlineCollapsed || false,
78
+ inlineIndent: inlineIndent,
79
+ mode: newMode,
80
+ openKeys: rest.defaultOpenKeys,
81
+ selectedKeys: selectedKeys,
82
+ SetSelectedKeys: SetSelectedKeys,
83
+ subMenuItemRender: subMenuItemRender,
84
+ menuItemRender: menuItemRender
85
+ };
86
+ }.bind(this), [inlineCollapsed, selectedKeys, SetSelectedKeys, newMode, inlineIndent, rest.defaultOpenKeys, subMenuItemRender, menuItemRender]); // 有垂直菜单的时候,selectedKeys手动处理
87
+
88
+
89
+ var verticalProps = (0, _react.useMemo)(function () {
90
+ var _this3 = this;
91
+
92
+ (0, _newArrowCheck2.default)(this, _this2);
93
+ return newMode === 'vertical' ? {
94
+ selectedKeys: selectedKeys,
95
+ onSelect: function onSelect(_ref2) {
96
+ (0, _newArrowCheck2.default)(this, _this3);
97
+ var key = _ref2.key;
98
+ SetSelectedKeys([key]);
99
+ }.bind(this)
100
+ } : {};
101
+ }.bind(this), [newMode, selectedKeys]);
102
+ return /*#__PURE__*/_react.default.createElement(_style.NavWarp, {
103
+ className: (0, _classnames.default)(_style.prefixClsNavWarp, className)
104
+ }, /*#__PURE__*/_react.default.createElement(_NavContext.default.Provider, {
105
+ value: contextValue
106
+ }, /*#__PURE__*/_react.default.createElement(_rcMenu.default, (0, _extends2.default)({
107
+ inlineIndent: 0
108
+ }, rest, {
109
+ mode: 'inline',
110
+ prefixCls: _style.prefixClsMenu,
111
+ className: (0, _classnames.default)(className, _style.prefixClsMenu, inlineCollapsed ? "".concat(_style.prefixClsMenu, "-collapsed") : "".concat(_style.prefixClsMenu, "-expand"))
112
+ }, verticalProps), mergedChildren)));
113
+ }.bind(void 0);
114
+
115
+ Nav.propTypes = {
116
+ mode: _propTypes.default.oneOf(['vertical', 'inline']),
117
+ items: _propTypes.default.array,
118
+ inlineCollapsed: _propTypes.default.bool,
119
+ inlineIndent: _propTypes.default.number,
120
+ defaultOpenKeys: _propTypes.default.arrayOf(_propTypes.default.string),
121
+ defaultSelectedKeys: _propTypes.default.arrayOf(_propTypes.default.string),
122
+ onOpenChange: _propTypes.default.func,
123
+ subMenuItemRender: _propTypes.default.func,
124
+ menuItemRender: _propTypes.default.func
125
+ };
126
+ var _default = Nav;
127
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ import { NavItemProps, SubMenuProps } from './type';
3
+ export interface NavContextProps {
4
+ inlineCollapsed: boolean;
5
+ inlineIndent: number;
6
+ mode: 'vertical' | 'inline';
7
+ openKeys?: string[];
8
+ selectedKeys?: string[];
9
+ SetSelectedKeys?: Dispatch<SetStateAction<string[]>>;
10
+ subMenuItemRender?: (itemProps: SubMenuProps, dom: JSX.Element) => JSX.Element;
11
+ menuItemRender?: (itemProps: NavItemProps, dom: JSX.Element) => JSX.Element;
12
+ }
13
+ declare const NavContext: import("react").Context<NavContextProps>;
14
+ export default NavContext;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ var NavContext = /*#__PURE__*/(0, _react.createContext)({
17
+ inlineCollapsed: false,
18
+ inlineIndent: 24,
19
+ mode: 'inline',
20
+ openKeys: [],
21
+ selectedKeys: []
22
+ });
23
+ var _default = NavContext;
24
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { NavContextProps } from './NavContext';
3
+ import { ItemType, NavItemProps, SubMenuProps } from './type';
4
+ export default class NavItem extends React.Component<NavItemProps> {
5
+ renderItemChildren(): JSX.Element;
6
+ renderIcon: (icon: React.ReactElement) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
7
+ renderItem: (contextProps: NavContextProps) => JSX.Element;
8
+ renderPopverMenu: (items: (ItemType | ItemType[])[], subMenuItemRender?: ((itemProps: SubMenuProps, dom: JSX.Element) => React.ReactNode) | undefined, menuItemRender?: ((itemProps: NavItemProps, dom: JSX.Element) => React.ReactNode) | undefined) => JSX.Element[];
9
+ renderVerticalItem: ({ inlineCollapsed, selectedKeys, subMenuItemRender, menuItemRender }: Partial<NavContextProps>) => JSX.Element;
10
+ render(): JSX.Element;
11
+ }
12
+ export declare function useItems(items?: ItemType[], inlineIndent?: number, inlineCollapsed?: boolean, mode?: 'inline' | 'vertical'): (JSX.Element | null)[] | undefined;
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useItems = useItems;
9
+ exports.default = void 0;
10
+
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+
13
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
14
+
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+
17
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
18
+
19
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
20
+
21
+ var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
22
+
23
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
24
+
25
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
26
+
27
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
28
+
29
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
30
+
31
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
32
+
33
+ var _intersection2 = _interopRequireDefault(require("lodash/intersection"));
34
+
35
+ var _react = _interopRequireDefault(require("react"));
36
+
37
+ var _classnames = _interopRequireDefault(require("classnames"));
38
+
39
+ var _rcMenu = require("rc-menu");
40
+
41
+ var _Popover = _interopRequireDefault(require("../../components/Popover"));
42
+
43
+ var _Menu = _interopRequireDefault(require("../../components/Menu"));
44
+
45
+ var _style = require("./style");
46
+
47
+ var _SubMenu = _interopRequireDefault(require("./SubMenu"));
48
+
49
+ var _NavContext = _interopRequireDefault(require("./NavContext"));
50
+
51
+ var _util = require("./util");
52
+
53
+ var _Tooltip = _interopRequireDefault(require("../Tooltip"));
54
+
55
+ var _this8 = void 0;
56
+
57
+ var _excluded = ["title", "icon", "verticalChildren", "marginLeft"],
58
+ _excluded2 = ["title", "icon", "verticalChildren", "marginLeft"],
59
+ _excluded3 = ["label", "children", "key", "style", "labelType"];
60
+
61
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
62
+
63
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
64
+
65
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
66
+
67
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
68
+
69
+ var NavItem = /*#__PURE__*/function (_React$Component) {
70
+ (0, _inherits2.default)(NavItem, _React$Component);
71
+
72
+ var _super = _createSuper(NavItem);
73
+
74
+ function NavItem() {
75
+ var _this2 = this;
76
+
77
+ var _this;
78
+
79
+ (0, _classCallCheck2.default)(this, NavItem);
80
+
81
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
82
+ args[_key] = arguments[_key];
83
+ }
84
+
85
+ _this = _super.call.apply(_super, [this].concat(args));
86
+
87
+ _this.renderIcon = function (icon) {
88
+ var _icon$props;
89
+
90
+ (0, _newArrowCheck2.default)(this, _this2);
91
+ return /*#__PURE__*/_react.default.cloneElement(icon, {
92
+ className: (0, _classnames.default)((_icon$props = icon.props) === null || _icon$props === void 0 ? void 0 : _icon$props.className, "".concat(_style.prefixClsMenuItem, "-icon"))
93
+ });
94
+ }.bind(this);
95
+
96
+ _this.renderItem = function (contextProps) {
97
+ var _this3 = this;
98
+
99
+ (0, _newArrowCheck2.default)(this, _this2);
100
+ var _this$props = _this.props,
101
+ className = _this$props.className,
102
+ type = _this$props.type;
103
+ var _this$props2 = _this.props,
104
+ title = _this$props2.title,
105
+ icon = _this$props2.icon,
106
+ verticalChildren = _this$props2.verticalChildren,
107
+ marginLeft = _this$props2.marginLeft,
108
+ rest = (0, _objectWithoutProperties2.default)(_this$props2, _excluded);
109
+ var inlineCollapsed = contextProps.inlineCollapsed,
110
+ menuItemRender = contextProps.menuItemRender;
111
+
112
+ if (verticalChildren !== null && verticalChildren !== void 0 && verticalChildren.length) {
113
+ return _this.renderVerticalItem(contextProps);
114
+ }
115
+
116
+ var dom = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.isValidElement(icon) && _this.renderIcon(icon), _this.renderItemChildren());
117
+
118
+ var renderContent = function renderContent() {
119
+ (0, _newArrowCheck2.default)(this, _this3);
120
+ return menuItemRender ? /*#__PURE__*/_react.default.cloneElement(menuItemRender(_this.props, dom), {
121
+ className: (0, _classnames.default)(_style.prefixClsTitleContent)
122
+ }) : /*#__PURE__*/_react.default.createElement("div", {
123
+ className: _style.prefixClsTitleContent
124
+ }, dom);
125
+ }.bind(this);
126
+
127
+ var returnNode = /*#__PURE__*/_react.default.createElement(_rcMenu.Item, (0, _extends2.default)({}, rest, {
128
+ className: (0, _classnames.default)(type && "".concat(_style.prefixClsMenuItem, "-").concat(type), _style.prefixClsMenuItem, className, inlineCollapsed && "".concat(_style.prefixClsMenuItem, "-collapsed")),
129
+ title: typeof title === 'string' ? title : undefined
130
+ }), inlineCollapsed ? /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
131
+ popup: /*#__PURE__*/_react.default.createElement("span", {
132
+ className: "".concat(_style.prefixClsMenuItem, "-tooltop-text")
133
+ }, title),
134
+ arrow: false,
135
+ placement: "right"
136
+ }, renderContent()) : renderContent());
137
+
138
+ return returnNode;
139
+ }.bind(this);
140
+
141
+ _this.renderPopverMenu = function (items, subMenuItemRender, menuItemRender) {
142
+ var _this4 = this;
143
+
144
+ (0, _newArrowCheck2.default)(this, _this2);
145
+ return items.map(function (i) {
146
+ (0, _newArrowCheck2.default)(this, _this4);
147
+ var _ref = i,
148
+ children = _ref.children,
149
+ label = _ref.label,
150
+ key = _ref.key;
151
+
152
+ if (children) {
153
+ return /*#__PURE__*/_react.default.createElement(_Menu.default.SubMenu, {
154
+ title: subMenuItemRender ? subMenuItemRender(_objectSpread(_objectSpread({}, i), {}, {
155
+ marginLeft: 0
156
+ }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, label)) : label,
157
+ key: key,
158
+ styleType: "popover"
159
+ }, _this.renderPopverMenu(children, subMenuItemRender, menuItemRender));
160
+ }
161
+
162
+ return /*#__PURE__*/_react.default.createElement(_Menu.default.Item, {
163
+ key: key
164
+ }, menuItemRender ? menuItemRender(_objectSpread(_objectSpread({}, i), {}, {
165
+ marginLeft: 0
166
+ }), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, label)) : label);
167
+ }.bind(this));
168
+ }.bind(this);
169
+
170
+ _this.renderVerticalItem = function (_ref2) {
171
+ var _this5 = this;
172
+
173
+ (0, _newArrowCheck2.default)(this, _this2);
174
+ var inlineCollapsed = _ref2.inlineCollapsed,
175
+ selectedKeys = _ref2.selectedKeys,
176
+ subMenuItemRender = _ref2.subMenuItemRender,
177
+ menuItemRender = _ref2.menuItemRender;
178
+ var _this$props3 = _this.props,
179
+ className = _this$props3.className,
180
+ type = _this$props3.type,
181
+ children = _this$props3.children;
182
+ var _this$props4 = _this.props,
183
+ title = _this$props4.title,
184
+ icon = _this$props4.icon,
185
+ verticalChildren = _this$props4.verticalChildren,
186
+ marginLeft = _this$props4.marginLeft,
187
+ rest = (0, _objectWithoutProperties2.default)(_this$props4, _excluded2);
188
+ var subKeys = (0, _util.getTreeAllKeys)([], verticalChildren || []).map(function (item) {
189
+ (0, _newArrowCheck2.default)(this, _this5);
190
+ return item.toString();
191
+ }.bind(this));
192
+ var intersectKeys = (0, _intersection2.default)(subKeys, selectedKeys);
193
+
194
+ var dom = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.isValidElement(icon) ? _this.renderIcon(icon) : /*#__PURE__*/_react.default.createElement("span", {
195
+ className: "".concat(_style.prefixClsMenuItem, "-icon")
196
+ }, title === null || title === void 0 ? void 0 : title.charAt(0)), _this.renderItemChildren());
197
+
198
+ var getItem = function getItem(itemRender) {
199
+ (0, _newArrowCheck2.default)(this, _this5);
200
+ return itemRender ? /*#__PURE__*/_react.default.cloneElement(itemRender(_this.props, dom), {
201
+ className: (0, _classnames.default)(_style.prefixClsTitleContent)
202
+ }) : /*#__PURE__*/_react.default.createElement("div", {
203
+ className: _style.prefixClsTitleContent
204
+ }, dom);
205
+ }.bind(this);
206
+
207
+ return /*#__PURE__*/_react.default.createElement(_Popover.default, {
208
+ trigger: ['hover'],
209
+ placement: "rightTop",
210
+ popup: /*#__PURE__*/_react.default.createElement(PopMenu, {
211
+ renderPopverMenu: _this.renderPopverMenu,
212
+ verticalChildren: verticalChildren
213
+ })
214
+ }, /*#__PURE__*/_react.default.createElement(_rcMenu.Item, (0, _extends2.default)({}, rest, {
215
+ className: (0, _classnames.default)(type && "".concat(_style.prefixClsMenuItem, "-").concat(type), _style.prefixClsMenuItem, className, inlineCollapsed && "".concat(_style.prefixClsMenuItem, "-collapsed"), intersectKeys.length && "".concat(_style.prefixClsMenuItem, "-pop-has-selected")),
216
+ title: typeof title === 'string' ? title : undefined
217
+ }), children ? getItem(subMenuItemRender) : getItem(menuItemRender)));
218
+ }.bind(this);
219
+
220
+ return _this;
221
+ }
222
+
223
+ (0, _createClass2.default)(NavItem, [{
224
+ key: "renderItemChildren",
225
+ value: function renderItemChildren() {
226
+ var children = this.props.children;
227
+
228
+ var wrapNode = /*#__PURE__*/_react.default.createElement("span", {
229
+ className: _style.prefixClsTitleText
230
+ }, children);
231
+
232
+ return wrapNode;
233
+ }
234
+ }, {
235
+ key: "render",
236
+ value: function render() {
237
+ return /*#__PURE__*/_react.default.createElement("div", {
238
+ style: {
239
+ marginLeft: this.props.marginLeft
240
+ }
241
+ }, /*#__PURE__*/_react.default.createElement(_NavContext.default.Consumer, null, this.renderItem));
242
+ }
243
+ }]);
244
+ return NavItem;
245
+ }(_react.default.Component);
246
+
247
+ exports.default = NavItem;
248
+
249
+ function useItems(items) {
250
+ var _this6 = this;
251
+
252
+ var inlineIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
253
+ var inlineCollapsed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
254
+ var mode = arguments.length > 3 ? arguments[3] : undefined;
255
+ return _react.default.useMemo(function () {
256
+ (0, _newArrowCheck2.default)(this, _this6);
257
+
258
+ if (!items) {
259
+ return items;
260
+ }
261
+
262
+ return convertItemsToNodes(items, 0, inlineIndent, inlineCollapsed, mode);
263
+ }.bind(this), [items]);
264
+ }
265
+ /**
266
+ *
267
+ * @param list
268
+ * @param padding 当前item的padding-left
269
+ * @param inlineIndent 每一级padding递增值
270
+ * @param level 当前等级
271
+ * @param menuLevel 需要将子项目变为右侧Menu垂直展开的等级
272
+ * @returns
273
+ */
274
+
275
+
276
+ function convertItemsToNodes(list, padding, inlineIndent, collapsed, mode) {
277
+ var _this7 = this;
278
+
279
+ return (list || []).map(function (opt, index) {
280
+ (0, _newArrowCheck2.default)(this, _this7);
281
+
282
+ if (opt && (0, _typeof2.default)(opt) === 'object') {
283
+ var _ref3 = opt,
284
+ label = _ref3.label,
285
+ children = _ref3.children,
286
+ key = _ref3.key,
287
+ style = _ref3.style,
288
+ labelType = _ref3.labelType,
289
+ restProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded3);
290
+ var mergedKey = key !== null && key !== void 0 ? key : "tmp-".concat(index);
291
+ var nextPadding = labelType === 'small' ? padding : inlineIndent; // 垂直展开,有children的菜单 labelType为small时不是NavItem,是SubMenu
292
+ // 折叠目录,所有都是NavItem
293
+
294
+ if (labelType !== 'small' && mode === 'vertical' && children || collapsed) {
295
+ return /*#__PURE__*/_react.default.createElement(NavItem, (0, _extends2.default)({}, restProps, {
296
+ key: mergedKey,
297
+ type: labelType,
298
+ style: _objectSpread({}, style),
299
+ marginLeft: padding,
300
+ verticalChildren: children,
301
+ title: label
302
+ }), label);
303
+ }
304
+
305
+ if (children) {
306
+ // Sub Menu
307
+ return /*#__PURE__*/_react.default.createElement(_SubMenu.default, (0, _extends2.default)({
308
+ key: mergedKey
309
+ }, restProps, {
310
+ type: labelType,
311
+ title: label,
312
+ marginLeft: padding
313
+ }), convertItemsToNodes(children, nextPadding, inlineIndent, collapsed, mode));
314
+ }
315
+
316
+ return /*#__PURE__*/_react.default.createElement(NavItem, (0, _extends2.default)({}, restProps, {
317
+ title: label,
318
+ key: mergedKey,
319
+ type: labelType,
320
+ style: _objectSpread({}, style),
321
+ marginLeft: padding
322
+ }), label);
323
+ }
324
+
325
+ return null;
326
+ }.bind(this)).filter(function (opt) {
327
+ (0, _newArrowCheck2.default)(this, _this7);
328
+ return opt;
329
+ }.bind(this));
330
+ } // 垂直菜单悬浮展开部分
331
+
332
+
333
+ var PopMenu = function PopMenu(_ref4) {
334
+ var _this9 = this;
335
+
336
+ (0, _newArrowCheck2.default)(this, _this8);
337
+ var renderPopverMenu = _ref4.renderPopverMenu,
338
+ verticalChildren = _ref4.verticalChildren;
339
+
340
+ var _React$useContext = _react.default.useContext(_NavContext.default),
341
+ SetNavSelectedKeys = _React$useContext.SetSelectedKeys,
342
+ navSelectedKeys = _React$useContext.selectedKeys,
343
+ subMenuItemRender = _React$useContext.subMenuItemRender,
344
+ menuItemRender = _React$useContext.menuItemRender;
345
+
346
+ var _React$useState = _react.default.useState([]),
347
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
348
+ menuSelectedKeys = _React$useState2[0],
349
+ setMenuSelectedKeys = _React$useState2[1];
350
+
351
+ _react.default.useEffect(function () {
352
+ var _this10 = this;
353
+
354
+ (0, _newArrowCheck2.default)(this, _this9);
355
+ var subKeys = (0, _util.getTreeAllKeys)([], verticalChildren || []).map(function (item) {
356
+ (0, _newArrowCheck2.default)(this, _this10);
357
+ return item.toString();
358
+ }.bind(this));
359
+ var intersectKeys = (0, _intersection2.default)(subKeys, navSelectedKeys);
360
+ setMenuSelectedKeys(intersectKeys.length ? intersectKeys : []);
361
+ }.bind(this), [navSelectedKeys]);
362
+
363
+ return /*#__PURE__*/_react.default.createElement(_style.NavPopWrap, null, /*#__PURE__*/_react.default.createElement(_Menu.default, {
364
+ selectedKeys: menuSelectedKeys,
365
+ onChange: function (key) {
366
+ (0, _newArrowCheck2.default)(this, _this9);
367
+ SetNavSelectedKeys === null || SetNavSelectedKeys === void 0 ? void 0 : SetNavSelectedKeys(key);
368
+ }.bind(this)
369
+ }, renderPopverMenu(verticalChildren || [], subMenuItemRender, menuItemRender)));
370
+ }.bind(void 0);
@@ -0,0 +1,5 @@
1
+ import { SubMenu as RcSubMenu } from 'rc-menu';
2
+ import { SubMenuProps } from './type';
3
+ export { RcSubMenu };
4
+ declare function SubMenu(props: SubMenuProps): JSX.Element;
5
+ export default SubMenu;