26 lines
729 B
Vue
26 lines
729 B
Vue
<script setup lang="ts">
|
|||
|
|
import type { AdminNavigationNode } from '@/navigation/adminNavigation'
|
||
|
|
|
||
|
|
defineOptions({ name: 'AdminSidebarMenuNode' })
|
||
|
|
|
||
|
|
defineProps<{
|
||
|
|
node: AdminNavigationNode
|
||
|
|
}>()
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<template>
|
||
|
|
<el-sub-menu v-if="node.children?.length" :index="node.key">
|
||
|
|
<template #title>
|
||
|
|
<component :is="node.icon" :size="19" :stroke-width="1.8" />
|
||
|
|
<span>{{ node.title }}</span>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<AdminSidebarMenuNode v-for="child in node.children" :key="child.key" :node="child" />
|
||
|
|
</el-sub-menu>
|
||
|
|
|
||
|
|
<el-menu-item v-else :index="node.path || node.key">
|
||
|
|
<component :is="node.icon" :size="19" :stroke-width="1.8" />
|
||
|
|
<template #title>{{ node.title }}</template>
|
||
|
|
</el-menu-item>
|
||
|
|
</template>
|