import React, { ReactElement } from "react"
export interface ModalProps {
    /** String or component to render as title of the modal.*/
    title?: any,
    /** String or component to render as footer of the modal.*/
    footer?: any,
    /** React elements (ModalBody and ModalFooter) to be display when the modal is open.*/
    children: JSX.Element | JSX.Element[],
    /** Defines the width of the modal to be rendered */
    size?: "extra-small" | "small" | "medium" | "large" | "full-screen",
    /** Defines in which side of the screen should the modal be rendered.*/
    position?: "right" | "left" | "center",
    /** If true, the modal is rendered on screen */
    open?: boolean,
    /** Name of class to extend css properties*/
    className?: string,
    /** Extra style to add by props.*/
    style?: React.CSSProperties,
    /** Action taken when modal is closed by clicking outside modal.*/
    onClose?: () => void,
    /** If true, components that have isDisabled can be disabled.*/
    loading?: boolean,
    /** Function that defines the action to be taken when the X button or back arrow in the header is clicked.*/
    handleClose?: () => void,
    /**  If true, the close button (X) is not rendered. */
    closeButton?: boolean,
    /**
     * If true, the modal will not automatically shift focus to itself when it opens, and replace it to the last focused element when it closes. This also works correctly with any modal children that have the disableAutoFocus prop.
     * Generally this should never be set to true as it makes the modal less accessible to assistive technologies, like screen readers.
     */
    disableAutoFocus?: boolean,
    /**
     * If true, the modal will not prevent focus from leaving the modal while open.
     * Generally this should never be set to true as it makes the modal less accessible to assistive technologies, like screen readers.
     */
    disableEnforceFocus?: boolean,
    /**
     * If true, hitting escape will not fire the onClose callback.
     */
    disableEscapeKeyDown?: boolean
    /**
     * The children will be under the DOM hierarchy of the parent component.
     */
    disablePortal?: boolean,
    /**
     * If true, the modal will not restore focus to previously focused element once modal is hidden or unmounted.
     */
    disableRestoreFocus?: boolean,
    /** Disable the scroll lock behavior. */
    disableScrollLock?: boolean,
    /** If true, the backdrop is not rendered. */
    hideBackdrop?: boolean,
    /** Always keep the children in the DOM. This prop can be useful in SEO situation or when you want to maximize the responsiveness of the Modal. */
    keepMounted?: boolean
}