1 | import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
2 | import _extends from "@babel/runtime/helpers/esm/extends";
|
3 | import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
4 | import _createClass from "@babel/runtime/helpers/esm/createClass";
|
5 | import _inherits from "@babel/runtime/helpers/esm/inherits";
|
6 | import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
7 | var __rest = this && this.__rest || function (s, e) {
|
8 | var t = {};
|
9 | for (var p in s) {
|
10 | if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
11 | }
|
12 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
13 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
14 | }
|
15 | return t;
|
16 | };
|
17 | import classNames from 'classnames';
|
18 | import { Item } from 'rc-menu';
|
19 | import toArray from "rc-util/es/Children/toArray";
|
20 | import * as React from 'react';
|
21 | import { SiderContext } from '../layout/Sider';
|
22 | import Tooltip from '../tooltip';
|
23 | import { cloneElement, isValidElement } from '../_util/reactNode';
|
24 | import MenuContext from './MenuContext';
|
25 | var MenuItem = function (_React$Component) {
|
26 | _inherits(MenuItem, _React$Component);
|
27 | var _super = _createSuper(MenuItem);
|
28 | function MenuItem() {
|
29 | var _this;
|
30 | _classCallCheck(this, MenuItem);
|
31 | _this = _super.apply(this, arguments);
|
32 | _this.renderItem = function (_ref) {
|
33 | var _classNames;
|
34 | var siderCollapsed = _ref.siderCollapsed;
|
35 | var _a;
|
36 | var _this$context = _this.context,
|
37 | prefixCls = _this$context.prefixCls,
|
38 | firstLevel = _this$context.firstLevel,
|
39 | inlineCollapsed = _this$context.inlineCollapsed,
|
40 | direction = _this$context.direction,
|
41 | disableMenuItemTitleTooltip = _this$context.disableMenuItemTitleTooltip;
|
42 | var _this$props = _this.props,
|
43 | className = _this$props.className,
|
44 | children = _this$props.children;
|
45 | var _b = _this.props,
|
46 | title = _b.title,
|
47 | icon = _b.icon,
|
48 | danger = _b.danger,
|
49 | rest = __rest(_b, ["title", "icon", "danger"]);
|
50 | var tooltipTitle = title;
|
51 | if (typeof title === 'undefined') {
|
52 | tooltipTitle = firstLevel ? children : '';
|
53 | } else if (title === false) {
|
54 | tooltipTitle = '';
|
55 | }
|
56 | var tooltipProps = {
|
57 | title: tooltipTitle
|
58 | };
|
59 | if (!siderCollapsed && !inlineCollapsed) {
|
60 | tooltipProps.title = null;
|
61 |
|
62 |
|
63 | tooltipProps.open = false;
|
64 | }
|
65 | var childrenLength = toArray(children).length;
|
66 | var returnNode = React.createElement(Item, _extends({}, rest, {
|
67 | className: classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + "-item-danger", danger), _defineProperty(_classNames, prefixCls + "-item-only-child", (icon ? childrenLength + 1 : childrenLength) === 1), _classNames), className),
|
68 | title: typeof title === 'string' ? title : undefined
|
69 | }), cloneElement(icon, {
|
70 | className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', prefixCls + "-item-icon")
|
71 | }), _this.renderItemChildren(inlineCollapsed));
|
72 | if (!disableMenuItemTitleTooltip) {
|
73 | returnNode = React.createElement(Tooltip, _extends({}, tooltipProps, {
|
74 | placement: direction === 'rtl' ? 'left' : 'right',
|
75 | overlayClassName: prefixCls + "-inline-collapsed-tooltip"
|
76 | }), returnNode);
|
77 | }
|
78 | return returnNode;
|
79 | };
|
80 | return _this;
|
81 | }
|
82 | _createClass(MenuItem, [{
|
83 | key: "renderItemChildren",
|
84 | value: function renderItemChildren(inlineCollapsed) {
|
85 | var _this$context2 = this.context,
|
86 | prefixCls = _this$context2.prefixCls,
|
87 | firstLevel = _this$context2.firstLevel;
|
88 | var _this$props2 = this.props,
|
89 | icon = _this$props2.icon,
|
90 | children = _this$props2.children;
|
91 | var wrapNode = React.createElement("span", {
|
92 | className: prefixCls + "-title-content"
|
93 | }, children);
|
94 |
|
95 |
|
96 | if (!icon || isValidElement(children) && children.type === 'span') {
|
97 | if (children && inlineCollapsed && firstLevel && typeof children === 'string') {
|
98 | return React.createElement("div", {
|
99 | className: prefixCls + "-inline-collapsed-noicon"
|
100 | }, children.charAt(0));
|
101 | }
|
102 | }
|
103 | return wrapNode;
|
104 | }
|
105 | }, {
|
106 | key: "render",
|
107 | value: function render() {
|
108 | return React.createElement(SiderContext.Consumer, null, this.renderItem);
|
109 | }
|
110 | }]);
|
111 | return MenuItem;
|
112 | }(React.Component);
|
113 | export { MenuItem as default };
|
114 | MenuItem.contextType = MenuContext; |
\ | No newline at end of file |