import type { Menu } from '/@/router/types'; import type { PropType } from 'vue'; import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; import { ThemeEnum } from '/@/enums/appEnum'; import { propTypes } from '/@/utils/propTypes'; import type { MenuTheme } from 'ant-design-vue'; import type { MenuMode } from 'ant-design-vue/lib/menu/src/interface'; export const basicProps = { items: { type: Array as PropType, default: () => [], }, collapsedShowTitle: propTypes.bool, // 最好是4 倍数 inlineIndent: propTypes.number.def(20), // 菜单组件的mode属性 mode: { type: String as PropType, default: MenuModeEnum.INLINE, }, type: { type: String as PropType, default: MenuTypeEnum.MIX, }, theme: { type: String as PropType, default: ThemeEnum.DARK, }, inlineCollapsed: propTypes.bool, mixSider: propTypes.bool, isHorizontal: propTypes.bool, accordion: propTypes.bool.def(true), beforeClickFn: { type: Function as PropType<(key: string) => Promise>, }, }; export const itemProps = { item: { type: Object as PropType, default: () => ({}), }, level: propTypes.number, theme: propTypes.oneOf(['dark', 'light']), showTitle: propTypes.bool, isHorizontal: propTypes.bool, }; export const contentProps = { item: { type: Object as PropType, default: null, }, showTitle: propTypes.bool.def(true), level: propTypes.number.def(0), isHorizontal: propTypes.bool.def(true), };