refactor: `VPMenu` related component use generic type for component (#4883)

pull/4739/merge
Artea 2 months ago committed by GitHub
parent e1a35b63b3
commit f97635916e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,4 +1,5 @@
<script lang="ts" setup>
<script lang="ts" setup generic="T extends DefaultTheme.NavItem">
import type { DefaultTheme } from 'vitepress/theme'
import { ref } from 'vue'
import { useFlyout } from '../composables/flyout'
import VPMenu from './VPMenu.vue'
@ -7,7 +8,7 @@ defineProps<{
icon?: string
button?: string
label?: string
items?: any[]
items?: T[]
}>()
const open = ref(false)

@ -1,9 +1,10 @@
<script lang="ts" setup>
<script lang="ts" setup generic="T extends DefaultTheme.NavItem">
import type { DefaultTheme } from 'vitepress/theme'
import VPMenuLink from './VPMenuLink.vue'
import VPMenuGroup from './VPMenuGroup.vue'
defineProps<{
items?: any[]
items?: T[]
}>()
</script>

@ -1,9 +1,10 @@
<script lang="ts" setup>
<script lang="ts" setup generic="T extends (DefaultTheme.NavItemComponent | DefaultTheme.NavItemChildren | DefaultTheme.NavItemWithLink)">
import type { DefaultTheme } from 'vitepress/theme'
import VPMenuLink from './VPMenuLink.vue'
defineProps<{
text?: string
items: any[]
items: T[]
}>()
</script>
@ -11,7 +12,7 @@ defineProps<{
<div class="VPMenuGroup">
<p v-if="text" class="title">{{ text }}</p>
<template v-for="item in items">
<template v-for="item in items" :key="JSON.stringify(item)">
<VPMenuLink v-if="'link' in item" :item />
</template>
</div>

@ -1,11 +1,11 @@
<script lang="ts" setup>
<script lang="ts" setup generic="T extends DefaultTheme.NavItemWithLink">
import type { DefaultTheme } from 'vitepress/theme'
import { useData } from '../composables/data'
import { isActive } from '../../shared'
import VPLink from './VPLink.vue'
defineProps<{
item: DefaultTheme.NavItemWithLink
item: T
}>()
const { page } = useData()

Loading…
Cancel
Save