@@@@@@
This commit is contained in:
39
library/components/VabMenu/index.vue
Normal file
39
library/components/VabMenu/index.vue
Normal file
@@ -0,0 +1,39 @@
|
||||
<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>
|
||||
Reference in New Issue
Block a user