UNPKG

@vegajs/modal-controller

Version:

A flexible modal management system for React applications, featuring ModalContainer, ModalProvider, and ModalController components for advanced and intuitive modal workflows.

23 lines (22 loc) 942 B
import type { ComponentType, PropsWithChildren } from 'react'; export type OnResolve<T = unknown> = (status: boolean, data?: T) => void; export type ResolveObject<T = unknown> = { status: Parameters<OnResolve<T>>[0]; data: Parameters<OnResolve<T>>[1]; }; export type ModalProps<T = unknown> = { onClose: () => void; onResolve: OnResolve<T>; isOpen: boolean; }; export type WithModalProps<Props extends object> = PropsWithChildren<ModalProps> & Props; export type ModalComponent = ComponentType<ModalProps>; export type BaseModalUnit<T = unknown> = { id: string; component: ModalComponent; confirmComponent?: ModalComponent; onResolve: OnResolve<T>; }; export type ConfirmModalServiceUnit = Omit<BaseModalUnit, 'confirmComponent'>; export type ServiceModalUnit = BaseModalUnit | ConfirmModalServiceUnit; export type ModalUnit = Omit<BaseModalUnit, 'onResolve'> | Omit<ConfirmModalServiceUnit, 'onResolve'>;