@react-crates/modal
Version:
리액트 모달을 쉽게 등록하고 사용가능한 라이브러리입니다.
33 lines (32 loc) • 2.2 kB
TypeScript
/// <reference types="react" />
import { ModalManager } from "./services";
import type { DefaultModalPosition, ModalComponentSeedTable, ModalController, ModalManagerOptionsProps, ModalPositionTable } from "./types";
type ExtractPositionType<T extends ModalManagerOptionsProps> = T extends {
position?: infer R;
} ? R : ModalPositionTable<DefaultModalPosition>;
export declare function generateModal<T extends ModalComponentSeedTable<string, Extract<keyof ExtractPositionType<P>, string>>, P extends ModalManagerOptionsProps = ModalManagerOptionsProps<ModalPositionTable<DefaultModalPosition>>>(modalComponentSeedTable?: T, options?: P): {
modalManager: ModalManager<ModalPositionTable>;
modalCtrl: ModalController<T, ExtractPositionType<P>>;
ModalProvider: (props: import("./components/providers/ModalProvider").ModalProviderProps) => JSX.Element;
DynamicModal: {
({ children, ...options }: import("./components/utils/DynamicModal").DynamicModalProps<Extract<keyof ExtractPositionType<P>, string>>): JSX.Element;
displayName: string;
Trigger: {
({ onClick, ...restProps }: import("./components/utils/DynamicModal").DynamicModalTriggerProps): JSX.Element;
displayName: string;
};
Element: {
({ children }: import("./components/utils/DynamicModal").DynamicModalElementProps): null;
displayName: string;
};
Action: {
({ onClick, children, confirmType, ...restProps }: import("./components/modal/ModalAction").ModalActionProps): JSX.Element | null;
displayName: string;
Confirm: import("react").ForwardRefExoticComponent<import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>;
Cancel: import("react").ForwardRefExoticComponent<import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>;
Custom: import("react").ForwardRefExoticComponent<import("./components/modal/ModalAction").ModalCustomActionProps & import("react").RefAttributes<HTMLButtonElement>>;
};
};
useIsOpenModal: () => boolean;
};
export {};