|
|
|
|
@ -1,17 +1,19 @@
|
|
|
|
|
import type { MenuRecordRaw } from '@vben/types';
|
|
|
|
|
import type { ComputedRef } from 'vue';
|
|
|
|
|
|
|
|
|
|
import type { MenuRecordRaw } from '@vben/types';
|
|
|
|
|
|
|
|
|
|
import { computed, ref, watch } from 'vue';
|
|
|
|
|
import { useRoute } from 'vue-router';
|
|
|
|
|
|
|
|
|
|
import { preferences } from '@vben/preferences';
|
|
|
|
|
import { useAccessStore } from '@vben/stores';
|
|
|
|
|
import { findRootMenuByPath } from '@vben/utils';
|
|
|
|
|
import { computed, ref, watch } from 'vue';
|
|
|
|
|
import { useRoute } from 'vue-router';
|
|
|
|
|
|
|
|
|
|
import { useNavigation } from './use-navigation';
|
|
|
|
|
|
|
|
|
|
function useExtraMenu(useRootMenus?: ComputedRef<MenuRecordRaw[]>) {
|
|
|
|
|
const accessStore = useAccessStore();
|
|
|
|
|
const { navigation } = useNavigation();
|
|
|
|
|
const { navigation, willOpenedByWindow } = useNavigation();
|
|
|
|
|
|
|
|
|
|
const menus = computed(() => useRootMenus?.value ?? accessStore.accessMenus);
|
|
|
|
|
|
|
|
|
|
@ -31,11 +33,15 @@ function useExtraMenu(useRootMenus?: ComputedRef<MenuRecordRaw[]>) {
|
|
|
|
|
* @param menu
|
|
|
|
|
*/
|
|
|
|
|
const handleMixedMenuSelect = async (menu: MenuRecordRaw) => {
|
|
|
|
|
extraMenus.value = menu?.children ?? [];
|
|
|
|
|
extraActiveMenu.value = menu.parents?.[parentLevel.value] ?? menu.path;
|
|
|
|
|
const hasChildren = extraMenus.value.length > 0;
|
|
|
|
|
const _extraMenus = menu?.children ?? [];
|
|
|
|
|
const hasChildren = _extraMenus.length > 0;
|
|
|
|
|
|
|
|
|
|
if (!willOpenedByWindow(menu.path)) {
|
|
|
|
|
extraMenus.value = _extraMenus ?? [];
|
|
|
|
|
extraActiveMenu.value = menu.parents?.[parentLevel.value] ?? menu.path;
|
|
|
|
|
sidebarExtraVisible.value = hasChildren;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sidebarExtraVisible.value = hasChildren;
|
|
|
|
|
if (!hasChildren) {
|
|
|
|
|
await navigation(menu.path);
|
|
|
|
|
} else if (preferences.sidebar.autoActivateChild) {
|
|
|
|
|
|