From fca21af950cce65968689a46c3ee22427cee6ffb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?kiner-tang=28=E6=96=87=E8=BE=89=29?= <1127031143@qq.com>
Date: Tue, 6 Jun 2023 09:54:14 +0800
Subject: [PATCH] refactor: solve modal circular dependency issue (#42841)
---
components/modal/Modal.tsx | 2 +-
components/modal/PurePanel.tsx | 65 ++--------------------------------
components/modal/shared.tsx | 63 ++++++++++++++++++++++++++++++++
3 files changed, 67 insertions(+), 63 deletions(-)
create mode 100644 components/modal/shared.tsx
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 (
+ <>
+
+
+ >
+ );
+};