UNPKG

overlay-manager-rc

Version:
55 lines (49 loc) 2.19 kB
import * as _preact_signals_core from '@preact/signals-core'; import { FC, CSSProperties } from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; type OverlayId = string; type OverlayPosition = 'center' | 'top' | 'bottom' | 'left' | 'right'; type OverlayKind = 'overlay' | 'modal' | 'drawer'; interface OverlayContentProps<TData = unknown, TResult = unknown> { close: (result?: TResult) => void; data: TData; open: boolean; id: string; } type OverlayContent<TData = unknown, TResult = unknown> = FC<OverlayContentProps<TData, TResult>>; interface OverlayOptions<TData = unknown, TResult = unknown> { id?: string; content: OverlayContent<TData, TResult>; data?: TData; position?: OverlayPosition; kind?: OverlayKind; title?: string; width?: string | number; height?: string | number; style?: CSSProperties; className?: string; onClose?: (result?: TResult) => void | Promise<void>; onOpen?: (id: string) => void | Promise<void>; } interface OverlayData<TData = unknown, TResult = unknown> extends OverlayOptions<TData, TResult> { id: string; open: boolean; beforeClose?: () => Promise<boolean> | boolean; closeTimestamp?: number; } declare const overlays: _preact_signals_core.Signal<OverlayData<any, any>[]>; declare const useOverlayManager: () => { readonly openOverlay: <TData, TResult>(options: OverlayOptions<TData, TResult>) => Promise<TResult | undefined>; readonly closeAllOverlays: () => never[]; readonly closeOverlayById: (id: string) => Promise<void>; readonly overlays: _preact_signals_core.Signal<OverlayData<any, any>[]>; }; declare function OverlayContainer(): react_jsx_runtime.JSX.Element; /** * When the manager tries to run an overlay with the same id * Function that executes before closing the overlay * @param beforeClose * @param id */ declare const useBeforeClose: (beforeClose: () => Promise<boolean> | boolean, id: string) => void; export { OverlayContainer, type OverlayContent, type OverlayContentProps, type OverlayData, type OverlayId, type OverlayKind, type OverlayOptions, type OverlayPosition, overlays, useBeforeClose, useOverlayManager };