import React, { useContext, useState } from "react" import PropTypes from "prop-types" import classNames from "classnames" import Icon from "../icon" import { MenuContext } from "./Context" import "./style" const prefix = "adui-menu" export interface ISubMenuProps { [key: string]: any /** * 子节点 */ children?: React.ReactNode /** * 附加类名 */ className?: string /** * 是否禁用 */ disabled?: Boolean /** * 独立的 index required */ index: React.ReactText /** * subnav 标题 */ title?: React.ReactNode } /** * 行动菜单 - 子菜单 */ const SubMenu: React.FC = ({ className, children, disabled, index, title, ...otherProps }: ISubMenuProps) => { const [open, setOpen] = useState(false) const { minWidth, onExpandChange } = useContext(MenuContext) const classSet = classNames(className, `${prefix}-sub`, { [`${prefix}-sub_open`]: open, [`${prefix}-sub_disabled`]: disabled, }) const handleExpandChange = (bool: boolean) => { if (onExpandChange) { onExpandChange(index, bool) } setOpen(bool) } let mouseEvents = {} if (!disabled) { mouseEvents = { onMouseEnter: () => handleExpandChange(true), onMouseLeave: () => handleExpandChange(false), } } return (
{title}
{children}
) } SubMenu.propTypes = { /** * 子节点 */ children: PropTypes.node, /** * 附加类名 */ className: PropTypes.string, /** * 是否禁用 */ disabled: PropTypes.bool, /** * 独立的 index required */ index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, /** * subnav 标题 */ title: PropTypes.node, } SubMenu.defaultProps = { children: null, className: undefined, disabled: false, title: null, } export default SubMenu