Browse Source

fix: SimpleRootMenuContextProps type error

main
xingyu 2 years ago
parent
commit
d819fd8e47
  1. 2
      src/components/Drawer/src/BasicDrawer.vue
  2. 11
      src/components/SimpleMenu/src/components/Menu.vue
  3. 2
      src/components/SimpleMenu/src/components/useMenu.ts
  4. 20
      src/components/SimpleMenu/src/components/useSimpleMenuContext.ts

2
src/components/Drawer/src/BasicDrawer.vue

@ -55,7 +55,7 @@ const getProps = computed((): DrawerProps => {
opt.rootClassName = wrapClassName ? `${wrapClassName} ${detailCls}` : detailCls
if (!getContainer)
opt.getContainer = `.${prefixVar}-layout-content` as any
opt.getContainer = `.${prefixVar}-layout-content`
}
return opt as DrawerProps
})

11
src/components/SimpleMenu/src/components/Menu.vue

@ -1,7 +1,7 @@
<script lang="ts" setup>
import { computed, getCurrentInstance, nextTick, onMounted, provide, ref, watch, watchEffect } from 'vue'
import type { SubMenuProvider } from './types'
import { createSimpleRootMenuContext } from './useSimpleMenuContext'
import { createSimpleRootMenuContext, type MenuEmitterEvents } from './useSimpleMenuContext'
import { useDesign } from '@/hooks/web/useDesign'
import { propTypes } from '@/utils/propTypes'
import { mitt } from '@/utils/mitt'
@ -28,14 +28,7 @@ const props = defineProps({
})
const emit = defineEmits(['select', 'open-change'])
const rootMenuEmitter = mitt<{
'on-update-opened': (string | number)[]
'on-menu-item-select': string | number
'open-name-change': {
name: string
opened: boolean
}
}>()
const rootMenuEmitter = mitt<MenuEmitterEvents>()
const instance = getCurrentInstance()
const currentActiveName = ref<string | number>('')

2
src/components/SimpleMenu/src/components/useMenu.ts

@ -53,7 +53,7 @@ export function useMenuItem(instance: ComponentInternalInstance | null) {
list: [],
}
}
const ret: any[] = []
const ret: ComponentInternalInstance[] = []
while (parent && parent.type.name !== 'Menu') {
if (parent.type.name === 'SubMenu')
ret.push(parent)

20
src/components/SimpleMenu/src/components/useSimpleMenuContext.ts

@ -1,9 +1,25 @@
import type { InjectionKey, Ref } from 'vue'
import type { InjectionKey, Ref, ComponentInternalInstance } from 'vue'
import type { Emitter } from '@/utils/mitt'
import { createContext, useContext } from '@/hooks/core/useContext'
export type MenuEmitterEvents = {
'on-update-opened':
| (string | number)[]
| {
opend: boolean;
parent?: ComponentInternalInstance | null;
uidList: number[];
};
'on-menu-item-select': string | number;
'open-name-change': {
name: string | number;
opened: boolean;
};
'on-update-active-name:submenu': number[];
};
export interface SimpleRootMenuContextProps {
rootMenuEmitter: Emitter
rootMenuEmitter: Emitter<MenuEmitterEvents>
activeName: Ref<string | number>
}