import type { VNode } from 'vue' import type { PrivateSiderMenuProps, SiderMenuProps } from './components/SiderMenu/SiderMenu' import type { HeaderViewProps } from './Header' import type { MenuDataItem } from './types' import type { BaseMenuProps } from './components/SiderMenu/BaseMenu' import type { VueNode, VueNodeOrRender } from '#/types' // 多页签的渲染 export type MultiTabRender = (props: HeaderViewProps) => VueNode // 头部渲染器 export type HeaderRender = (props: HeaderViewProps, defaultDom: VueNodeOrRender) => VueNode // 头部标题渲染器 export type HeaderTitleRender = ( props: HeaderViewProps, logo?: VueNodeOrRender, title?: VueNodeOrRender ) => VueNode // 头部内容渲染器 export type HeaderContentRender = (props: HeaderViewProps, defaultDom?: VueNodeOrRender) => VueNode // 头部右侧内容渲染器 export type RightContentRender = (props: HeaderViewProps) => VueNode // 处理父级菜单的 props,可以复写菜单的点击功能,一般用于埋点 export type SubMenuItemRender = ( item: MenuDataItem & { isUrl: boolean }, defaultDom: VueNodeOrRender, menuProps: BaseMenuProps ) => VueNode // 子菜单的渲染器 export type MenuItemRender = ( item: MenuDataItem & { isUrl: boolean; onClick: () => void }, defaultDom: VueNodeOrRender, menuProps: BaseMenuProps & Partial ) => VueNode // 菜单渲染器 export type MenuRender = (props: HeaderViewProps, defaultDom: VueNodeOrRender) => VueNode // 菜单头部渲染器 export type MenuHeaderRender = ( props: SiderMenuProps, logo: VueNodeOrRender, title: VueNodeOrRender ) => VueNode // 菜单底部渲染器 export type MenuFootRender = (props?: SiderMenuProps) => VueNode // 菜单内容渲染器 export type MenuContentRender = (props: SiderMenuProps, defaultDom: VueNodeOrRender) => VueNode // 菜单在 logo 和 content 之间的扩展区域渲染器,一般用来放搜索框 export type MenuExtraReander = (props: SiderMenuProps) => VueNode // 菜单折叠按钮的渲染器 export type CollapsedButtonRender = (collapsed?: boolean) => VueNode // 整体布局的底部渲染器 export type FooterRender = (props: HeaderViewProps, defaultDom: VNode) => VueNode