import React, { Fragment } from 'react'; import Icon, { IconProps, IconTagType } from '@uiw/react-icon'; import { IProps } from '@uiw/utils'; import './style/item.less'; const disabledProps = { href: undefined, onClick: undefined, onMouseDown: undefined, onMouseEnter: undefined, onMouseLeave: undefined, tabIndex: -1, }; export type TagType = React.ComponentType | keyof JSX.IntrinsicElements; export interface MenuItemProps extends IProps, React.HTMLProps { text?: React.ReactNode; addonAfter?: React.ReactNode; tagName?: Tag; multiline?: boolean; isSubMenuItem?: boolean; disabled?: boolean; active?: boolean; icon?: IconProps['type']; children?: React.ReactNode; } function Internal(props: MenuItemProps, ref: React.Ref>) { const { prefixCls = 'w-menu-item', className, tagName: TagName = 'a', children, disabled = false, multiline = false, icon, text, active = false, addonAfter, isSubMenuItem, ...htmlProps } = props; const anchorCls = [prefixCls, active ? 'active' : null, disabled ? 'w-disabled' : null, className] .filter(Boolean) .join(' ') .trim(); const tagComp = React.createElement( TagName, { ...htmlProps, ...(disabled ? disabledProps : {}), className: anchorCls, ref, } as any,
{text}
{addonAfter}
, ); if (isSubMenuItem) { return tagComp; } return
  • {tagComp}
  • ; } export const MenuItem = React.forwardRef(Internal); MenuItem.displayName = 'uiw.MenuItem';