UNPKG

portal-vue

Version:

> A Portal Component for Vue 3, to render DOM outside of a component, anywhere in the document.

42 lines (41 loc) 992 B
import type { Slot } from 'vue'; export type Name = string | symbol; export interface StringBoolMap { [key: string]: boolean; } export interface TransportInput { to: Name; from: Name; order?: number; content: Slot; } export type TransportsHub = Map<Name, TransportsByTarget>; export type TransportsByTarget = Map<Name, Transport>; export interface Transport { to: Name; from: Name; order: number; content: Slot; } export interface TransportCloser { to: Name; from?: Name; } export interface PortalProps { to: Name; name?: Name; disabled?: boolean; order?: number; slotProps?: Record<string, any>; } export type PortalTargetProps = Partial<{ multiple: boolean; name: Name; slotProps: object; }>; export type Wormhole = Readonly<{ open: (t: TransportInput) => void; close: (t: TransportCloser) => void; getContentForTarget: (t: Name, returnAll?: boolean) => Transport[]; transports: TransportsHub; }>;