Files
liangjian 836c61ac55 @@@@@@
2026-01-27 16:32:15 +08:00

40 lines
909 B
Vue

<template>
<component :is="menuComponent" :item-or-menu="item">
<template v-if="item.children && item.children.length > 0">
<vab-menu v-for="route in item.children" :key="route.path" :item="route" />
</template>
</component>
</template>
<script setup>
defineOptions({
name: 'VabMenu',
})
const imports = import.meta.glob('./**/*.vue', { eager: true })
const Components = {}
Object.getOwnPropertyNames(imports).forEach((key) => {
Components[key.replaceAll(/(\/|components|\.|vue)/g, '')] = imports[key].default
})
const props = defineProps({
item: {
type: Object,
required: true,
},
layout: {
type: String,
default: '',
},
})
const menuComponent = computed(() =>
props.item.children &&
props.item.children.some((route) => {
return route.meta && route.meta.hidden !== true
})
? Components['VabSubMenu']
: Components['VabMenuItem']
)
</script>