| import type React from 'react'; |
| import type { DialogProps } from '@rc-component/dialog'; |
|
|
| import type { |
| ClosableType, |
| MaskType, |
| SemanticClassNamesType, |
| SemanticStylesType, |
| } from '../_util/hooks'; |
| import type { Breakpoint } from '../_util/responsiveObserver'; |
| import type { ButtonProps, LegacyButtonType } from '../button/Button'; |
| import type { DirectionType } from '../config-provider'; |
| import type { FocusableConfig, OmitFocusType } from '../drawer/useFocusable'; |
|
|
| export type ModalSemanticName = keyof ModalSemanticClassNames & keyof ModalSemanticStyles; |
|
|
| export type ModalSemanticClassNames = { |
| root?: string; |
| header?: string; |
| body?: string; |
| footer?: string; |
| container?: string; |
| title?: string; |
| wrapper?: string; |
| mask?: string; |
| }; |
|
|
| export type ModalSemanticStyles = { |
| root?: React.CSSProperties; |
| header?: React.CSSProperties; |
| body?: React.CSSProperties; |
| footer?: React.CSSProperties; |
| container?: React.CSSProperties; |
| title?: React.CSSProperties; |
| wrapper?: React.CSSProperties; |
| mask?: React.CSSProperties; |
| }; |
|
|
| export type ModalClassNamesType = SemanticClassNamesType<ModalProps, ModalSemanticClassNames>; |
|
|
| export type ModalStylesType = SemanticStylesType<ModalProps, ModalSemanticStyles>; |
|
|
| interface ModalCommonProps |
| extends Omit< |
| DialogProps, |
| | 'footer' |
| | 'width' |
| | 'onClose' |
| | 'animation' |
| | 'maskAnimation' |
| | 'transitionName' |
| | 'maskTransitionName' |
| | 'mask' |
| | 'classNames' |
| | 'styles' |
| | OmitFocusType |
| > { |
| footer?: |
| | React.ReactNode |
| | (( |
| originNode: React.ReactNode, |
| extra: { OkBtn: React.FC; CancelBtn: React.FC }, |
| ) => React.ReactNode); |
| closable?: |
| | boolean |
| | (Exclude<ClosableType, boolean> & { onClose?: () => void; afterClose?: () => void }); |
| classNames?: ModalClassNamesType; |
| styles?: ModalStylesType; |
| } |
|
|
| export interface ModalProps extends ModalCommonProps { |
| |
| open?: boolean; |
| |
| confirmLoading?: boolean; |
| |
| title?: React.ReactNode; |
| |
| onOk?: (e: React.MouseEvent<HTMLButtonElement>) => void; |
| |
| onCancel?: (e: React.MouseEvent<HTMLButtonElement>) => void; |
| afterClose?: () => void; |
| |
| afterOpenChange?: (open: boolean) => void; |
| |
| centered?: boolean; |
| |
| width?: string | number | Partial<Record<Breakpoint, string | number>>; |
| |
| okText?: React.ReactNode; |
| |
| okType?: LegacyButtonType; |
| |
| cancelText?: React.ReactNode; |
| |
| maskClosable?: boolean; |
| |
| forceRender?: boolean; |
| okButtonProps?: ButtonProps; |
| cancelButtonProps?: ButtonProps; |
| |
| destroyOnClose?: boolean; |
| |
| |
| |
| destroyOnHidden?: boolean; |
| style?: React.CSSProperties; |
| wrapClassName?: string; |
| maskTransitionName?: string; |
| transitionName?: string; |
| className?: string; |
| rootClassName?: string; |
| rootStyle?: React.CSSProperties; |
| getContainer?: string | HTMLElement | getContainerFunc | false; |
| zIndex?: number; |
| |
| bodyStyle?: React.CSSProperties; |
| |
| maskStyle?: React.CSSProperties; |
| mask?: MaskType; |
| keyboard?: boolean; |
| wrapProps?: any; |
| prefixCls?: string; |
| closeIcon?: React.ReactNode; |
| modalRender?: (node: React.ReactNode) => React.ReactNode; |
| children?: React.ReactNode; |
| mousePosition?: MousePosition; |
| |
| |
| |
| loading?: boolean; |
|
|
| |
| |
| focusTriggerAfterClose?: boolean; |
| focusable?: FocusableConfig; |
| } |
|
|
| type getContainerFunc = () => HTMLElement; |
|
|
| export interface ModalFuncProps extends ModalCommonProps { |
| prefixCls?: string; |
| className?: string; |
| rootClassName?: string; |
| open?: boolean; |
| title?: React.ReactNode; |
| content?: React.ReactNode; |
| |
| onOk?: (...args: any[]) => any; |
| onCancel?: (...args: any[]) => any; |
| afterClose?: () => void; |
| okButtonProps?: ButtonProps; |
| cancelButtonProps?: ButtonProps; |
| centered?: boolean; |
| width?: string | number; |
| okText?: React.ReactNode; |
| okType?: LegacyButtonType; |
| cancelText?: React.ReactNode; |
| icon?: React.ReactNode; |
| mask?: MaskType; |
| maskClosable?: boolean; |
| zIndex?: number; |
| okCancel?: boolean; |
| style?: React.CSSProperties; |
| wrapClassName?: string; |
| |
| maskStyle?: React.CSSProperties; |
| type?: 'info' | 'success' | 'error' | 'warn' | 'warning' | 'confirm'; |
| keyboard?: boolean; |
| getContainer?: string | HTMLElement | getContainerFunc | false; |
|
|
| transitionName?: string; |
| maskTransitionName?: string; |
| direction?: DirectionType; |
| |
| bodyStyle?: React.CSSProperties; |
| closeIcon?: React.ReactNode; |
| footer?: ModalProps['footer']; |
| modalRender?: (node: React.ReactNode) => React.ReactNode; |
|
|
| |
| |
| focusTriggerAfterClose?: boolean; |
| |
| autoFocusButton?: null | 'ok' | 'cancel'; |
| focusable?: FocusableConfig & { |
| autoFocusButton?: null | 'ok' | 'cancel'; |
| }; |
| } |
|
|
| export interface ModalLocale { |
| okText: string; |
| cancelText: string; |
| justOkText: string; |
| } |
|
|
| export type MousePosition = { x: number; y: number } | null; |
|
|