diff --git a/packages/vuetify/src/components/VOverlay/VOverlay.tsx b/packages/vuetify/src/components/VOverlay/VOverlay.tsx index d292df38e27..c683fffa6b2 100644 --- a/packages/vuetify/src/components/VOverlay/VOverlay.tsx +++ b/packages/vuetify/src/components/VOverlay/VOverlay.tsx @@ -46,7 +46,10 @@ import { } from '@/util' // Types -import type { PropType, Ref } from 'vue' +import type { + ComponentPublicInstance, PropType, + Ref, +} from 'vue' import type { BackgroundColorData } from '@/composables/color' interface ScrimProps { @@ -74,7 +77,7 @@ function Scrim (props: ScrimProps) { export type OverlaySlots = { default: { isActive: Ref } - activator: { isActive: boolean, props: Record } + activator: { isActive: boolean, props: Record, targetRef: Ref | HTMLElement> } } export const makeVOverlayProps = propsFactory({ @@ -268,9 +271,9 @@ export const VOverlay = genericComponent()({ <> { slots.activator?.({ isActive: isActive.value, + targetRef, props: mergeProps({ ref: activatorRef, - targetRef, }, activatorEvents.value, props.activatorProps), })} diff --git a/packages/vuetify/src/components/VOverlay/useActivator.tsx b/packages/vuetify/src/components/VOverlay/useActivator.tsx index 9c5e8754f90..b1555ee3c48 100644 --- a/packages/vuetify/src/components/VOverlay/useActivator.tsx +++ b/packages/vuetify/src/components/VOverlay/useActivator.tsx @@ -237,7 +237,7 @@ export function useActivator ( }) }) - const targetRef = ref() + const targetRef = ref | HTMLElement>() const target = computed(() => { if (props.target === 'cursor' && cursorTarget.value) return cursorTarget.value if (targetRef.value) return refElement(targetRef.value)