import {JSX, mergeProps, splitProps} from "solid-js"; import { Overlay as BaseOverlay, OverlayProps as BaseOverlayProps, OverlayInjectedProps, } from "solid-bootstrap-core"; import Fade from "./Fade"; import {TransitionType} from "./helpers"; import {Placement, RootCloseEvent} from "./types"; export type OverlayChildren = JSX.Element | ((injected: OverlayInjectedProps) => JSX.Element); export interface OverlayProps extends Omit { children: JSX.Element; transition?: TransitionType; placement?: Placement; rootCloseEvent?: RootCloseEvent; ref?: (ref: HTMLElement) => void; } const defaultProps: Partial = { transition: Fade, rootClose: false, show: false, placement: "top", popperConfig: {}, }; const Overlay = (p: OverlayProps /*outerRef*/) => { const [local, outerProps] = splitProps(mergeProps(defaultProps, p), [ "children" /*overlay*/, "transition", "ref", ]); const actualTransition = local.transition === true ? Fade : local.transition || undefined; return ( {local.children} ); }; export default Overlay;