portal-vue
Version:
> A Portal Component for Vue 3, to render DOM outside of a component, anywhere in the document.
42 lines (36 loc) • 1.14 kB
text/typescript
import type { App } from 'vue'
import Portal from './components/portal'
import PortalTarget from './components/portal-target'
import {
provideWormhole,
useWormhole,
wormholeSymbol,
} from './composables/wormhole'
import type { Wormhole as TWormhole } from './types'
import { createWormhole, wormhole as defaultWormhole } from './wormhole'
export { mountPortalTarget } from './utils/mountPortalTarget'
export interface PluginOptions {
portalName?: string | false
portalTargetName?: string | false
MountingPortalName?: string
wormhole?: TWormhole
}
export default function install(app: App, options: PluginOptions = {}) {
options.portalName !== false &&
app.component(options.portalName || 'Portal', Portal)
options.portalTargetName !== false &&
app.component(options.portalTargetName || 'PortalTarget', PortalTarget)
const wormhole = options.wormhole ?? defaultWormhole
app.provide(wormholeSymbol, wormhole)
}
export const Wormhole = defaultWormhole
export const version = __PORTAL_VUE_VERSION__
export {
install,
Portal,
PortalTarget,
useWormhole,
provideWormhole,
TWormhole,
createWormhole,
}