|
|
|
@ -1,13 +1,14 @@ |
|
|
|
|
import React, { PropsWithChildren, useCallback, useEffect } from 'react'; |
|
|
|
|
import { cx } from '@emotion/css'; |
|
|
|
|
import { FocusScope } from '@react-aria/focus'; |
|
|
|
|
import { OverlayContainer } from '@react-aria/overlays'; |
|
|
|
|
import React, { PropsWithChildren, useCallback, useEffect } from 'react'; |
|
|
|
|
|
|
|
|
|
import { useTheme2 } from '../../themes'; |
|
|
|
|
import { IconName } from '../../types'; |
|
|
|
|
import { getModalStyles } from './getModalStyles'; |
|
|
|
|
import { ModalHeader } from './ModalHeader'; |
|
|
|
|
import { IconButton } from '../IconButton/IconButton'; |
|
|
|
|
import { HorizontalGroup } from '../Layout/Layout'; |
|
|
|
|
import { FocusScope } from '@react-aria/focus'; |
|
|
|
|
import { OverlayContainer } from '@react-aria/overlays'; |
|
|
|
|
import { getModalStyles } from './getModalStyles'; |
|
|
|
|
import { ModalHeader } from './ModalHeader'; |
|
|
|
|
|
|
|
|
|
export interface Props { |
|
|
|
|
/** @deprecated no longer used */ |
|
|
|
@ -20,6 +21,7 @@ export interface Props { |
|
|
|
|
contentClassName?: string; |
|
|
|
|
closeOnEscape?: boolean; |
|
|
|
|
closeOnBackdropClick?: boolean; |
|
|
|
|
trapFocus?: boolean; |
|
|
|
|
|
|
|
|
|
isOpen?: boolean; |
|
|
|
|
onDismiss?: () => void; |
|
|
|
@ -39,6 +41,7 @@ export function Modal(props: PropsWithChildren<Props>) { |
|
|
|
|
contentClassName, |
|
|
|
|
onDismiss: propsOnDismiss, |
|
|
|
|
onClickBackdrop, |
|
|
|
|
trapFocus = true, |
|
|
|
|
} = props; |
|
|
|
|
const theme = useTheme2(); |
|
|
|
|
const styles = getModalStyles(theme); |
|
|
|
@ -76,7 +79,7 @@ export function Modal(props: PropsWithChildren<Props>) { |
|
|
|
|
className={styles.modalBackdrop} |
|
|
|
|
onClick={onClickBackdrop || (closeOnBackdropClick ? onDismiss : undefined)} |
|
|
|
|
/> |
|
|
|
|
<FocusScope contain autoFocus restoreFocus> |
|
|
|
|
<FocusScope contain={trapFocus} autoFocus restoreFocus> |
|
|
|
|
<div className={cx(styles.modal, className)}> |
|
|
|
|
<div className={headerClass}> |
|
|
|
|
{typeof title === 'string' && <DefaultModalHeader {...props} title={title} />} |
|
|
|
|