acud
Version:
acg react 组件库
62 lines • 2.38 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
/**
* @file
* @author zhousheng
*/
import React, { useContext, useMemo } from 'react';
import classnames from 'classnames';
import { isValidElement, cloneElement } from '../_util/reactNode';
import Tooltip from '../tooltip';
import MenuContext from './MenuContext';
import { MenuContext as BaseMenuContext } from './rc-menu/context/MenuContext';
;
var MenuHead = function MenuHead(props) {
var children = props.children,
icon = props.icon,
title = props.title,
popupClassName = props.popupClassName,
onClick = props.onClick;
var _useContext = useContext(MenuContext),
prefixCls = _useContext.prefixCls;
var _useContext2 = useContext(BaseMenuContext),
inlineCollapsed = _useContext2.inlineCollapsed;
var classNames = classnames("".concat(prefixCls, "-inline-header"), _defineProperty({}, "".concat(prefixCls, "-inline-header-collapsed"), inlineCollapsed));
var tipTitle = useMemo(function () {
if (title) {
return title;
}
if (inlineCollapsed && children) {
return children;
}
return null;
}, [title, inlineCollapsed, children]);
var renderNode = useMemo(function () {
var _a;
var copyIcon = cloneElement(icon, {
className: classnames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', "".concat(prefixCls, "-item-icon"))
});
if (!inlineCollapsed) {
return /*#__PURE__*/React.createElement(React.Fragment, null, copyIcon, /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-inline-header-item-text")
}, children));
}
if (icon) {
return copyIcon;
}
if (typeof children === 'string' && children.length) {
return /*#__PURE__*/React.createElement("span", null, children.charAt(0));
}
return null;
}, [inlineCollapsed, children, icon, prefixCls]);
return /*#__PURE__*/React.createElement("div", {
className: classNames,
onClick: onClick
}, /*#__PURE__*/React.createElement(Tooltip, {
title: tipTitle,
placement: "right",
overlayClassName: classnames("".concat(prefixCls, "-inline-header-tooltip"), popupClassName)
}, /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-inline-header-item")
}, renderNode)));
};
export default MenuHead;