chore(Link): add pickLinkProps util

This commit is contained in:
Benjamin Canac
2024-05-17 11:58:31 +02:00
parent 9970f0ea6b
commit 034062df65
8 changed files with 25 additions and 21 deletions

View File

@@ -15,8 +15,6 @@ interface ContextMenuContentProps<T> extends Omit<RadixContextMenuContentProps,
}
interface ContextMenuContentEmits extends RadixContextMenuContentEmits {}
type ContextMenuContentSlots<T extends { slot?: string }> = ContextMenuSlots<T>
</script>
<script setup lang="ts" generic="T extends ContextMenuItem">
@@ -27,14 +25,15 @@ import { reactiveOmit, createReusableTemplate } from '@vueuse/core'
import { useAppConfig } from '#imports'
import { ULink } from '#components'
import { omit } from '#ui/utils'
import { pickLinkProps } from '#ui/utils/link'
const props = defineProps<ContextMenuContentProps<T>>()
const emits = defineEmits<ContextMenuContentEmits>()
const slots = defineSlots<ContextMenuContentSlots<T>>()
const slots = defineSlots<ContextMenuSlots<T>>()
const appConfig = useAppConfig()
const contentProps = useForwardPropsEmits(reactiveOmit(props, 'sub', 'items', 'portal', 'class', 'ui'), emits)
const proxySlots = omit(slots, ['default']) as Record<string, ContextMenuContentSlots<T>[string]>
const proxySlots = omit(slots, ['default']) as Record<string, ContextMenuSlots<T>[string]>
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate()
@@ -102,7 +101,7 @@ const groups = computed(() => props.items?.length ? (Array.isArray(props.items[0
</UContextMenuContent>
</ContextMenu.Sub>
<ContextMenu.Item v-else as-child :disabled="item.disabled" :text-value="item.label" @select="item.select">
<ULink v-slot="{ active, ...slotProps }" v-bind="omit((item as ContextMenuItem), ['label', 'icon', 'avatar', 'content', 'kbds', 'slot', 'open', 'defaultOpen', 'select', 'children', 'type'])" custom>
<ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item as Omit<ContextMenuItem, 'type'>)" custom>
<ULinkBase v-bind="slotProps" :class="ui.item({ active })">
<ReuseItemTemplate :item="item" :active="active" :index="index" />
</ULinkBase>