react-morphing-modal
Version:
React morphing modal! The easiest way to be fancy!
44 lines (43 loc) • 1.46 kB
TypeScript
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;
}