@@ -10,7 +10,7 @@ type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>
1010
1111interface DropdownMenuContentProps <T extends ArrayOrNested <DropdownMenuItem >> extends Omit <RekaDropdownMenuContentProps , ' as' | ' asChild' | ' forceMount' > {
1212 items? : T
13- portal? : boolean
13+ portal? : boolean | string | HTMLElement
1414 sub? : boolean
1515 labelKey: keyof NestedItem <T >
1616 /**
@@ -39,12 +39,13 @@ type DropdownMenuContentSlots<T extends ArrayOrNested<DropdownMenuItem>> = Omit<
3939 </script >
4040
4141<script setup lang="ts" generic =" T extends ArrayOrNested <DropdownMenuItem >" >
42- import { computed } from ' vue'
42+ import { computed , toRef } from ' vue'
4343import { DropdownMenu } from ' reka-ui/namespaced'
4444import { useForwardPropsEmits } from ' reka-ui'
4545import { reactiveOmit , createReusableTemplate } from ' @vueuse/core'
4646import { useAppConfig } from ' #imports'
4747import { useLocale } from ' ../composables/useLocale'
48+ import { usePortal } from ' ../composables/usePortal'
4849import { omit , get , isArrayOfArray } from ' ../utils'
4950import { pickLinkProps } from ' ../utils/link'
5051import ULinkBase from ' ./LinkBase.vue'
@@ -62,6 +63,7 @@ const slots = defineSlots<DropdownMenuContentSlots<T>>()
6263const { dir } = useLocale ()
6364const appConfig = useAppConfig ()
6465
66+ const portalProps = usePortal (toRef (() => props .portal ))
6567const contentProps = useForwardPropsEmits (reactiveOmit (props , ' sub' , ' items' , ' portal' , ' labelKey' , ' checkedIcon' , ' loadingIcon' , ' externalIcon' , ' class' , ' ui' , ' uiOverride' ), emits )
6668const proxySlots = omit (slots , [' default' ])
6769
@@ -109,7 +111,7 @@ const groups = computed<DropdownMenuItem[][]>(() =>
109111 </slot >
110112 </DefineItemTemplate >
111113
112- <DropdownMenu .Portal :disabled = " !portal " >
114+ <DropdownMenu .Portal v-bind = " portalProps " >
113115 <component :is =" sub ? DropdownMenu.SubContent : DropdownMenu.Content" :class =" props.class" v-bind =" contentProps" >
114116 <DropdownMenu .Group v-for =" (group, groupIndex) in groups" :key =" `group-${groupIndex}`" :class =" ui.group({ class: uiOverride?.group })" >
115117 <template v-for =" (item , index ) in group " :key =" ` group-${groupIndex }-${index } ` " >
0 commit comments