diff --git a/src/runtime/components/App.vue b/src/runtime/components/App.vue index 8f478c72..36ac69e0 100644 --- a/src/runtime/components/App.vue +++ b/src/runtime/components/App.vue @@ -6,6 +6,7 @@ export interface AppProps extends Omit + portal?: string | HTMLElement } export interface AppSlots { @@ -22,10 +23,14 @@ import { toRef, useId, provide } from 'vue' import { ConfigProvider, TooltipProvider, useForwardProps } from 'reka-ui' import { reactivePick } from '@vueuse/core' import { localeContextInjectionKey } from '../composables/useLocale' +import { portalTargetInjectionKey } from '../composables/usePortal' import UToaster from './Toaster.vue' import UOverlayProvider from './OverlayProvider.vue' -const props = defineProps>() +const props = withDefaults(defineProps>(), { + portal: 'body' +}) + defineSlots() const configProviderProps = useForwardProps(reactivePick(props, 'scrollBody')) @@ -34,6 +39,9 @@ const toasterProps = toRef(() => props.toaster) const locale = toRef(() => props.locale) provide(localeContextInjectionKey, locale) + +const portal = toRef(() => props.portal) +provide(portalTargetInjectionKey, portal)