@@ -10,7 +10,7 @@ type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>
10
10
11
11
interface DropdownMenuContentProps<T extends ArrayOrNested<DropdownMenuItem>> extends Omit<RekaDropdownMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
12
12
items?: T
13
- portal?: boolean
13
+ portal?: boolean | string | HTMLElement
14
14
sub?: boolean
15
15
labelKey: keyof NestedItem<T>
16
16
/**
@@ -39,12 +39,13 @@ type DropdownMenuContentSlots<T extends ArrayOrNested<DropdownMenuItem>> = Omit<
39
39
</script>
40
40
41
41
<script setup lang="ts" generic="T extends ArrayOrNested<DropdownMenuItem>">
42
- import { computed } from 'vue'
42
+ import { computed, toRef } from 'vue'
43
43
import { DropdownMenu } from 'reka-ui/namespaced'
44
44
import { useForwardPropsEmits } from 'reka-ui'
45
45
import { reactiveOmit, createReusableTemplate } from '@vueuse/core'
46
46
import { useAppConfig } from '#imports'
47
47
import { useLocale } from '../composables/useLocale'
48
+ import { usePortal } from '../composables/usePortal'
48
49
import { omit, get, isArrayOfArray } from '../utils'
49
50
import { pickLinkProps } from '../utils/link'
50
51
import ULinkBase from './LinkBase.vue'
@@ -62,6 +63,7 @@ const slots = defineSlots<DropdownMenuContentSlots<T>>()
62
63
const { dir } = useLocale()
63
64
const appConfig = useAppConfig()
64
65
66
+ const portalProps = usePortal(toRef(() => props.portal))
65
67
const contentProps = useForwardPropsEmits(reactiveOmit(props, 'sub', 'items', 'portal', 'labelKey', 'checkedIcon', 'loadingIcon', 'externalIcon', 'class', 'ui', 'uiOverride'), emits)
66
68
const proxySlots = omit(slots, ['default'])
67
69
@@ -109,7 +111,7 @@ const groups = computed<DropdownMenuItem[][]>(() =>
109
111
</slot>
110
112
</DefineItemTemplate>
111
113
112
- <DropdownMenu.Portal :disabled="!portal ">
114
+ <DropdownMenu.Portal v-bind="portalProps ">
113
115
<component :is="sub ? DropdownMenu.SubContent : DropdownMenu.Content" :class="props.class" v-bind="contentProps">
114
116
<DropdownMenu.Group v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" :class="ui.group({ class: uiOverride?.group })">
115
117
<template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
0 commit comments