|
@@ -45,11 +45,18 @@
|
|
|
},
|
|
|
emits: ['select', 'open-change'],
|
|
|
setup(props, { emit }) {
|
|
|
- const rootMenuEmitter = mitt();
|
|
|
+ const rootMenuEmitter = mitt<{
|
|
|
+ 'on-update-opened': (string | number)[];
|
|
|
+ 'on-menu-item-select': string | number;
|
|
|
+ 'open-name-change': {
|
|
|
+ name: string;
|
|
|
+ opened: boolean;
|
|
|
+ };
|
|
|
+ }>();
|
|
|
const instance = getCurrentInstance();
|
|
|
|
|
|
const currentActiveName = ref<string | number>('');
|
|
|
- const openedNames = ref<string[]>([]);
|
|
|
+ const openedNames = ref<(string | number)[]>([]);
|
|
|
|
|
|
const { prefixCls } = useDesign('menu');
|
|
|
|
|
@@ -95,13 +102,13 @@
|
|
|
rootMenuEmitter.emit('on-update-opened', openedNames.value);
|
|
|
}
|
|
|
|
|
|
- function addSubMenu(name: string) {
|
|
|
+ function addSubMenu(name: string | number) {
|
|
|
if (openedNames.value.includes(name)) return;
|
|
|
openedNames.value.push(name);
|
|
|
updateOpened();
|
|
|
}
|
|
|
|
|
|
- function removeSubMenu(name: string) {
|
|
|
+ function removeSubMenu(name: string | number) {
|
|
|
openedNames.value = openedNames.value.filter((item) => item !== name);
|
|
|
updateOpened();
|
|
|
}
|
|
@@ -131,7 +138,7 @@
|
|
|
onMounted(() => {
|
|
|
openedNames.value = !props.collapse ? [...props.openNames] : [];
|
|
|
updateOpened();
|
|
|
- rootMenuEmitter.on('on-menu-item-select', (name: string) => {
|
|
|
+ rootMenuEmitter.on('on-menu-item-select', (name: string | number) => {
|
|
|
currentActiveName.value = name;
|
|
|
|
|
|
nextTick(() => {
|