import { default as React } from 'react'; import { MenuProps as AntMenuProps } from 'antd'; import { BaseComponentProps, DataSetConfig } from '../../types/common'; /** * 溢出处理策略类型 * - default: 使用 Ant Design 原生省略号 * - pagination: 翻页模式(左右/上下箭头导航) * - scroll: 滚动条模式 */ export type OverflowStrategy = "default" | "pagination" | "scroll"; /** 翻页箭头某一状态(如 disabled / hover)下的语义样式 */ export interface PaginationArrowStateStyles { root?: React.CSSProperties; icon?: React.CSSProperties; } /** * 翻页箭头语义样式(paginationArrowStyle 层级协议) * - root:按钮容器 * - icon:箭头图标 * - disabled / hover:对应状态下的 root + icon * 仍兼容顶层扁平 CSSProperties(历史配置) */ export interface PaginationArrowSemanticStyles { root?: React.CSSProperties; icon?: React.CSSProperties; content?: React.CSSProperties; disabled?: PaginationArrowStateStyles; hover?: PaginationArrowStateStyles; } export type PaginationArrowStyle = React.CSSProperties | PaginationArrowSemanticStyles; /** * SubMenu 标题行(.ant-menu-submenu-title)的样式配置 * 这是对 Ant Design 原生 API 的扩展,用于解决 SubMenu 标题行无法通过 styles prop 设置的问题 */ export interface SubMenuRootStyles { /** SubMenu 标题行容器样式(边框、padding、borderRadius 等) */ item?: React.CSSProperties; /** SubMenu 标题行图标样式 */ itemIcon?: React.CSSProperties; /** SubMenu 标题行文字样式(字体大小、行高等) */ itemContent?: React.CSSProperties; /** 子级选中时 SubMenu 标题行的样式(背景色、文字颜色等) */ selected?: React.CSSProperties; } /** * Semantic DOM 样式配置 * 参考 Ant Design 6.x Semantic DOM 规范,并扩展 subMenu.root 用于 SubMenu 标题行 */ export interface MenuSemanticStyles { root?: React.CSSProperties; item?: React.CSSProperties; itemIcon?: React.CSSProperties; itemContent?: React.CSSProperties; popup?: React.CSSProperties; subMenu?: { /** 扩展:SubMenu 标题行样式配置(Ant Design 原生不支持,通过 CSS 注入实现) */ root?: SubMenuRootStyles; /** Ant Design 原生:子菜单面板标题样式 */ itemTitle?: React.CSSProperties; /** Ant Design 原生:子菜单列表样式 */ list?: React.CSSProperties; /** Ant Design 原生:子菜单内的项样式 */ item?: React.CSSProperties; /** Ant Design 原生:子菜单内的项图标样式 */ itemIcon?: React.CSSProperties; /** Ant Design 原生:子菜单内的项文字样式 */ itemContent?: React.CSSProperties; }; } /** * Menu Design Token * 参考 Ant Design 6.x Design Token 规范 */ export interface MenuToken { colorBgContainer?: string; itemBg?: string; itemColor?: string; itemHoverBg?: string; itemHoverColor?: string; itemSelectedBg?: string; itemSelectedColor?: string; itemActiveBg?: string; subMenuItemBg?: string; darkItemBg?: string; darkItemColor?: string; darkItemHoverBg?: string; darkItemHoverColor?: string; darkItemSelectedBg?: string; darkItemSelectedColor?: string; iconSize?: number; iconMarginInlineEnd?: number; collapsedWidth?: number; collapsedIconSize?: number; } export interface AndMenuProps extends Omit, BaseComponentProps, DataSetConfig { clickAction?: string; selectAction?: string; openChangeAction?: string; deselectAction?: string; onClick?: (info: any) => void; onSelect?: (info: any) => void; onOpenChange?: (openKeys: string[]) => void; onDeselect?: (info: any) => void; styles?: MenuSemanticStyles; token?: MenuToken; expandIcon?: React.ReactNode | ((props: { isOpen?: boolean; isSubMenu?: boolean; }) => React.ReactNode); overflowedIndicator?: React.ReactNode; openKeysDataSet?: string; openKeysDataSetField?: string; remoteUrl?: string; /** 展开触发方式(设计器/业务用,不传给 DOM) */ expandTrigger?: "click" | "hover" | "iconOnly"; overflowStrategy?: OverflowStrategy; paginationArrowStyle?: PaginationArrowStyle; paginationArrowIconPrev?: React.ReactNode | string; paginationArrowIconNext?: React.ReactNode | string; /** 迭代器 / Masonry 行号;与 Extend `setProps` 作用域 id(deriveScopedComponentId)一致 */ index?: number; } export declare const AndMenu: React.FC; export default AndMenu; //# sourceMappingURL=index.d.ts.map