diff --git a/components/modal/Modal.tsx b/components/modal/Modal.tsx index d1a0c39422..8f9275d720 100644 --- a/components/modal/Modal.tsx +++ b/components/modal/Modal.tsx @@ -7,8 +7,8 @@ import warning from '../_util/warning'; import { ConfigContext } from '../config-provider'; import { NoFormStyle } from '../form/context'; import { NoCompactStyle } from '../space/Compact'; -import { Footer, renderCloseIcon } from './PurePanel'; import type { ModalProps, MousePosition } from './interface'; +import { Footer, renderCloseIcon } from './shared'; import useStyle from './style'; let mousePosition: MousePosition; diff --git a/components/modal/PurePanel.tsx b/components/modal/PurePanel.tsx index 3fc2f66120..6c6ce91dd9 100644 --- a/components/modal/PurePanel.tsx +++ b/components/modal/PurePanel.tsx @@ -1,16 +1,13 @@ /* eslint-disable react/jsx-no-useless-fragment */ -import CloseOutlined from '@ant-design/icons/CloseOutlined'; + import classNames from 'classnames'; import { Panel } from 'rc-dialog'; import type { PanelProps } from 'rc-dialog/lib/Dialog/Content/Panel'; import * as React from 'react'; -import Button from '../button'; -import { convertLegacyProps } from '../button/button'; import { ConfigContext } from '../config-provider'; -import { useLocale } from '../locale'; import { ConfirmContent } from './ConfirmDialog'; -import type { ModalFuncProps, ModalProps } from './interface'; -import { getConfirmLocale } from './locale'; +import type { ModalFuncProps } from './interface'; +import { Footer, renderCloseIcon } from './shared'; import useStyle from './style'; export interface PurePanelProps @@ -20,62 +17,6 @@ export interface PurePanelProps style?: React.CSSProperties; } -export function renderCloseIcon(prefixCls: string, closeIcon?: React.ReactNode) { - return ( - - {closeIcon || } - - ); -} - -interface FooterProps { - onOk?: React.MouseEventHandler; - onCancel?: React.MouseEventHandler; -} - -export const Footer: React.FC< - FooterProps & - Pick< - ModalProps, - | 'footer' - | 'okText' - | 'okType' - | 'cancelText' - | 'confirmLoading' - | 'okButtonProps' - | 'cancelButtonProps' - > -> = (props) => { - const { - okText, - okType = 'primary', - cancelText, - confirmLoading, - onOk, - onCancel, - okButtonProps, - cancelButtonProps, - } = props; - - const [locale] = useLocale('Modal', getConfirmLocale()); - - return ( - <> - - - - ); -}; - const PurePanel: React.FC = (props) => { const { prefixCls: customizePrefixCls, diff --git a/components/modal/shared.tsx b/components/modal/shared.tsx new file mode 100644 index 0000000000..c328e224d3 --- /dev/null +++ b/components/modal/shared.tsx @@ -0,0 +1,63 @@ +import CloseOutlined from '@ant-design/icons/CloseOutlined'; +import React from 'react'; +import Button from '../button'; +import { convertLegacyProps } from '../button/button'; +import { useLocale } from '../locale'; +import type { ModalProps } from './interface'; +import { getConfirmLocale } from './locale'; + +export function renderCloseIcon(prefixCls: string, closeIcon?: React.ReactNode) { + return ( + + {closeIcon || } + + ); +} + +interface FooterProps { + onOk?: React.MouseEventHandler; + onCancel?: React.MouseEventHandler; +} + +export const Footer: React.FC< + FooterProps & + Pick< + ModalProps, + | 'footer' + | 'okText' + | 'okType' + | 'cancelText' + | 'confirmLoading' + | 'okButtonProps' + | 'cancelButtonProps' + > +> = (props) => { + const { + okText, + okType = 'primary', + cancelText, + confirmLoading, + onOk, + onCancel, + okButtonProps, + cancelButtonProps, + } = props; + + const [locale] = useLocale('Modal', getConfirmLocale()); + + return ( + <> + + + + ); +};