@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
TypeScript
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'>;