UNPKG

react-morphing-modal

Version:

React morphing modal! The easiest way to be fancy!

44 lines (43 loc) 1.46 kB
import React, { DOMAttributes } from 'react'; export declare type DOMEvent = keyof DOMAttributes<HTMLElement>; export declare type ModalId = string | number | symbol | null; export declare type StateValues = 0 | 1 | 2; export interface TriggerPropsOptions { id?: ModalId; event?: DOMEvent; onOpen?: () => any; onClose?: () => any; background?: string; } export declare type HookOptions = Omit<TriggerPropsOptions, 'id'>; export interface TriggerProps { ref: React.MutableRefObject<any>; [x: string]: React.MutableRefObject<any> | (() => void); } export declare type ModalState = Record<'IS_CLOSE' | 'IS_IN_PROGRESS' | 'IS_OPEN', StateValues>; export declare type ActiveTriggerRef = { nodeRef: React.MutableRefObject<any> | null; options?: TriggerPropsOptions | null; }; export interface GetTriggerProps { (id?: ModalId): TriggerProps; (options?: TriggerPropsOptions): TriggerProps; } export interface OpenModal { (triggerRef: React.MutableRefObject<any>, triggerOptions?: ModalId | TriggerPropsOptions): void; } export interface CloseModal { (): void; } export interface ModalProps { placeholderRef: React.MutableRefObject<HTMLDivElement | null>; state: StateValues; close: CloseModal; } export interface UseModal { open: OpenModal; close: CloseModal; activeModal: ModalId; modalProps: ModalProps; getTriggerProps: GetTriggerProps; }