import { Props } from "../pisellDraggable/components/TreeItem/TreeItem.js";
import { CSSProperties } from "react";

//#region src/components/pisellNavigationMenu/types.d.ts
interface NavigationMenuItem {
  id: string;
  /** 标题 */
  title: string;
  /** 图标 */
  icon?: string;
  /** 描述 */
  description?: string;
  /** 子菜单 */
  children?: NavigationMenuItem[];
  /** 版本 */
  version?: string;
  /** 是否是分组 */
  isGroup?: boolean;
  /** 是否允许添加子菜单 */
  allowAddChild?: boolean;
  /** 是否允许删除 */
  allowDelete?: boolean;
  /** 是否允许编辑 */
  allowEdit?: boolean;
  /** 是否允许添加子菜单 */
  allowAddSubmenu?: boolean;
  /** 是否允许添加页面 */
  allowAddPage?: boolean;
  /** 其他属性 */
  [key: string]: any;
}
interface PisellNavigationMenuProps {
  /** 导航菜单数据 */
  value: NavigationMenuItem[];
  /** 是否允许拖拽排序 */
  allowDrag?: boolean;
  /** 是否允许删除菜单项 */
  allowDelete?: boolean;
  /** 是否允许添加子菜单 */
  allowAddChild?: boolean;
  /** 是否允许添加根菜单 */
  allowAddRoot?: boolean;
  /** 是否允许显示隐藏 */
  allowIsShow?: boolean;
  /** 是否禁用 */
  disabled?: boolean;
  /** 菜单项间距 */
  spacing?: number;
  /** 最大层级数 */
  maxLevel?: number;
  /** 样式 */
  style?: CSSProperties;
  /** 类名 */
  className?: string;
  /** 数据变化回调 */
  onChange?: (items: NavigationMenuItem[]) => void;
  /** 设计模式 */
  __designMode?: string;
  /** 标题 */
  title?: string;
  /** 添加子菜单回调 */
  onAddSubMenu?: (item?: NavigationMenuItem) => void;
  /** 添加页面回调 */
  onAddPage?: (item?: NavigationMenuItem) => void;
  /** 编辑回调 */
  onEdit?: (item: NavigationMenuItem) => void;
  /** 删除回调 */
  onDelete?: (item: NavigationMenuItem) => void;
  /** 左侧自定义内容 */
  leftContent?: React.ReactNode;
  /** 右侧自定义内容 */
  rightContent?: React.ReactNode;
  /** 获取item样式 */
  getItemStyle?: (itemProps: Props) => React.CSSProperties;
  /** 自定义拖拽判断函数，返回false时阻止拖拽 */
  canDrop?: (dragItem: NavigationMenuItem, dropTarget: NavigationMenuItem, parentId: string | number | null) => boolean;
  /** 显示隐藏回调 */
  onIsShow?: (item: NavigationMenuItem) => void;
  /** 节点缩进宽度 */
  indentationWidth?: number;
  /** 隐藏描述 */
  hideDescription?: boolean;
  /** 悬浮时展示action */
  showActionOnHover?: boolean;
  /** 是否展示标题标签 */
  showTitleTags?: boolean;
}
//#endregion
export { NavigationMenuItem, PisellNavigationMenuProps };