@ucloud-fe/react-components 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/icon.min.js +1 -1
- package/dist/main.min.js +24 -4
- package/lib/__index.js +4 -0
- package/lib/components/Nav/Nav.d.ts +50 -0
- package/lib/components/Nav/Nav.js +127 -0
- package/lib/components/Nav/NavContext.d.ts +14 -0
- package/lib/components/Nav/NavContext.js +24 -0
- package/lib/components/Nav/NavItem.d.ts +12 -0
- package/lib/components/Nav/NavItem.js +370 -0
- package/lib/components/Nav/SubMenu.d.ts +5 -0
- package/lib/components/Nav/SubMenu.js +82 -0
- package/lib/components/Nav/index.d.ts +2 -0
- package/lib/components/Nav/index.js +13 -0
- package/lib/components/Nav/style/index.d.ts +7 -0
- package/lib/components/Nav/style/index.js +50 -0
- package/lib/components/Nav/type.d.ts +34 -0
- package/lib/components/Nav/type.js +0 -0
- package/lib/components/Nav/util.d.ts +3 -0
- package/lib/components/Nav/util.js +25 -0
- package/lib/index.js +5 -1
- package/package.json +2 -1
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);
|