Files
admin-web/src/app/components/AdminSidebarMenuNode.vue
T

41 lines
1.0 KiB
Vue
Raw Normal View History

2026-07-30 17:59:43 +08:00
<script setup lang="ts">
2026-08-03 18:49:18 +08:00
import type { AdminNavigationNode } from '@/core/navigation/adminNavigation'
2026-07-30 17:59:43 +08:00
defineOptions({ name: 'AdminSidebarMenuNode' })
defineProps<{
node: AdminNavigationNode
level?: number
2026-07-30 17:59:43 +08:00
}>()
</script>
<template>
2026-10-20 23:34:11 +08:00
<el-sub-menu v-if="node.children?.length" :index="node.key" popper-class="admin-workbench shell-nav-popper">
2026-07-30 17:59:43 +08:00
<template #title>
<component
v-if="!level"
:is="node.icon"
class="menu-icon"
:style="{ color: node.iconColor }"
:size="20"
:stroke-width="1.9"
/>
2026-07-30 17:59:43 +08:00
<span>{{ node.title }}</span>
</template>
<AdminSidebarMenuNode v-for="child in node.children" :key="child.key" :node="child" :level="(level ?? 0) + 1" />
2026-07-30 17:59:43 +08:00
</el-sub-menu>
<el-menu-item v-else :index="node.path || node.key">
<component
v-if="!level"
:is="node.icon"
class="menu-icon"
:style="{ color: node.iconColor }"
:size="20"
:stroke-width="1.9"
/>
2026-07-30 17:59:43 +08:00
<template #title>{{ node.title }}</template>
</el-menu-item>
</template>