UNPKG

use-async-modal

Version:

Show promised based modal imperatively using hook for React.js.

33 lines (32 loc) 1.31 kB
import { FC, CSSProperties, ReactPortal } from "react"; export declare type ResolveFunction<ResultType> = ((x: ResultType) => void) | (() => void); export interface UseModalComponentProps<ResultType> { onResolve: ResolveFunction<ResultType>; } export declare type UseModalOptions<ResultType> = UseModalOptionsBasic<ResultType>; export interface UseModalOptionsBasic<ResultType> { Component: FC<UseModalComponentProps<ResultType>>; overlayStyles?: CSSProperties; overlayClassName?: string; closeOnEsc?: boolean; closeOnOverlayClick?: boolean; defaultResolved?: ResultType; overlayClassNameOnOpen?: string; overlayClassNameOnClose?: string; closeTimeoutMs?: number; blockBodyScroll?: boolean; onOpen?: (options: UseModalOnOpenOptions) => void | Promise<void>; onClose?: (options: UseModalOnCloseOptions<ResultType>) => void | Promise<void>; } export interface UseModalOnOpenOptions extends Omit<UseModalContainerRef, "portal"> { } export interface UseModalOnCloseOptions<ResultType> { resolved: ResultType; } export interface UseModalContainerRef { containerId: string; containerRef: HTMLDivElement; portal: ReactPortal; blockBodyScroll: boolean; } export declare type UseModalReturnType<ResultType = unknown> = () => Promise<ResultType>;