import * as React from 'react'; import { StandardProps } from '../../common'; import { BlockerProps } from '../Blocker'; export declare type ModalCloseOrigin = 'button' | 'background'; export interface ModalCloseEvent { origin: ModalCloseOrigin; } declare type onBeforeCloseHandler = (e: ModalCloseEvent) => boolean | Promise; export interface ModalProps extends StandardProps { /** * Sets the content of the modal dialog. */ children?: React.ReactNode; /** * Determines if the modal is currently open or not. */ open?: boolean; /** * Event triggered before the modal is actually closed by the user. */ onBeforeClose?: onBeforeCloseHandler; /** * Event triggered when the modal should be closed by the user. */ onClose?(e: ModalCloseEvent): void; /** * When specified, default max-width of 500px will be overridden * @deprecated Please define through styled components and ${Modal.inner.ModalContent} */ width?: string; /** * Specify the minimal height for the modal container * @deprecated Please define through styled components and ${Modal.inner.StyledModal} */ minHeight?: string; } export interface ModalHeaderProps extends StandardProps { /** * @ignore */ children?: void; /** * The title of the modal dialog. */ title?: string; /** * The label (above title) of the dialog. */ label?: string; } export interface ModalProps { width?: string; } export interface StyledModalProps extends ModalProps { closing: boolean; } export interface StyledBlockerProps extends BlockerProps { closing: boolean; } export interface ModalContentProps { minHeight?: string; } interface ModalState { closing: boolean; } /** * A simple modal dialog for requiring user interaction. */ export declare class Modal extends React.PureComponent { constructor(props: ModalProps); private closeFrom; private callOnBeforeCloseHandler; private closeBackground; private closeButton; render(): false | JSX.Element; static inner: { readonly StyledBlocker: any; readonly StyledModal: any; readonly ModalContent: any; readonly CloseButton: React.SFC> & { inner: { readonly StyledCloseButton: any; readonly Icon: React.FC & { inner: { readonly StyledIcon: any; }; }; }; }; }; } /** * Styles the body of a modal dialog. */ export declare const ModalBody: React.FC & { inner: { readonly StyledModalBody: any; }; }; /** * Styles the header of a modal dialog */ export declare const ModalHeader: React.SFC & { inner: { readonly StyledModalHeader: any; readonly ModalLabel: any; readonly Headline: React.SFC; }; }; /** * Styles the footer of a modal dialog. */ export declare const ModalFooter: React.SFC & { inner: { readonly StyledModalFooter: any; }; }; export {};