@prezly/react-promise-modal
Version:
The proper (and easy) way of doing modals in React. With Promises.
26 lines (25 loc) • 969 B
TypeScript
import * as React from "react";
import { type Milliseconds } from "./ModalTransitions";
interface Options {
concurrencyMode?: ConcurrencyMode;
transitionDuration?: Milliseconds;
}
type ConcurrencyMode = "stack" | "replace" | "ignore";
type RenderFunction<P> = (props: P) => React.ReactElement | null | undefined;
interface RenderProps<T> {
show: boolean;
stage: "open" | "opening" | "closing";
onDismiss: () => void;
onSubmit: (value: Exclude<T, undefined>) => void;
}
export declare function usePromiseModal<T>(render: RenderFunction<RenderProps<T>>, options?: Options): {
modal: React.ReactElement;
invoke: () => Promise<T | undefined>;
isDisplayed: boolean;
};
export declare function usePromiseModal<T, Args>(render: RenderFunction<RenderProps<T> & Omit<Args, keyof RenderProps<T>>>, options?: Options): {
modal: React.ReactElement;
invoke: (args: Args) => Promise<T | undefined>;
isDisplayed: boolean;
};
export {};