| | |
| | | import type { Menu } from '/@/router/types'; |
| | | import type { PropType } from 'vue'; |
| | | |
| | | import { MenuModeEnum, MenuTypeEnum, MenuThemeEnum } from '/@/enums/menuEnum'; |
| | | 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<Menu[]>, |
| | | default: () => [], |
| | | }, |
| | | appendClass: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: false, |
| | | }, |
| | | collapsedShowTitle: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: false, |
| | | }, |
| | | flatItems: { |
| | | type: Array as PropType<Menu[]>, |
| | | default: () => [], |
| | | }, |
| | | // 是否显示搜索框 |
| | | search: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: true, |
| | | }, |
| | | collapsedShowTitle: propTypes.bool, |
| | | // 最好是4 倍数 |
| | | inlineIndent: { |
| | | type: Number as PropType<number>, |
| | | default: 20, |
| | | }, |
| | | inlineIndent: propTypes.number.def(20), |
| | | // 菜单组件的mode属性 |
| | | mode: { |
| | | type: String as PropType<MenuModeEnum>, |
| | | type: String as PropType<MenuMode>, |
| | | default: MenuModeEnum.INLINE, |
| | | }, |
| | | |
| | | type: { |
| | | type: String as PropType<MenuTypeEnum>, |
| | | default: MenuTypeEnum.MIX, |
| | | }, |
| | | theme: { |
| | | type: String as PropType<string>, |
| | | default: MenuThemeEnum.DARK, |
| | | type: String as PropType<MenuTheme>, |
| | | default: ThemeEnum.DARK, |
| | | }, |
| | | showLogo: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: false, |
| | | }, |
| | | inlineCollapsed: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: false, |
| | | }, |
| | | isAppMenu: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: true, |
| | | }, |
| | | isTop: { |
| | | type: Boolean as PropType<boolean>, |
| | | default: false, |
| | | }, |
| | | inlineCollapsed: propTypes.bool, |
| | | mixSider: propTypes.bool, |
| | | |
| | | isHorizontal: propTypes.bool, |
| | | accordion: propTypes.bool.def(true), |
| | | beforeClickFn: { |
| | | type: Function as PropType<Fn>, |
| | | type: Function as PropType<(key: string) => Promise<boolean>>, |
| | | }, |
| | | }; |
| | | |
| | | export const itemProps = { |
| | | item: { |
| | | type: Object as PropType<Menu>, |
| | | default: () => ({}), |
| | | }, |
| | | level: propTypes.number, |
| | | theme: propTypes.oneOf(['dark', 'light']), |
| | | showTitle: propTypes.bool, |
| | | isHorizontal: propTypes.bool, |
| | | }; |
| | | |
| | | export const contentProps = { |
| | | item: { |
| | | type: Object as PropType<Menu>, |
| | | default: null, |
| | | }, |
| | | showTitle: propTypes.bool.def(true), |
| | | level: propTypes.number.def(0), |
| | | isHorizontal: propTypes.bool.def(true), |
| | | }; |