Переглянути джерело

fix: fix modal popupContainer return body (#2335)

代强 1 рік тому
батько
коміт
a65aac2561

+ 3 - 3
packages/semi-ui/modal/Modal.tsx

@@ -137,14 +137,14 @@ class Modal extends BaseComponent<ModalReactProps, ModalState> {
             disabledBodyScroll: () => {
                 const { getPopupContainer } = this.props;
                 this.bodyOverflow = document.body.style.overflow || '';
-                if (!getPopupContainer && this.bodyOverflow !== 'hidden') {
+                if ((!getPopupContainer || getPopupContainer() === document.body) && this.bodyOverflow !== 'hidden') {
                     document.body.style.overflow = 'hidden';
                     document.body.style.width = `calc(${this.originBodyWidth || '100%'} - ${this.scrollBarWidth}px)`;
                 }
             },
             enabledBodyScroll: () => {
                 const { getPopupContainer } = this.props;
-                if (!getPopupContainer && this.bodyOverflow !== null && this.bodyOverflow !== 'hidden') {
+                if ((!getPopupContainer || getPopupContainer() === document.body) && this.bodyOverflow !== null && this.bodyOverflow !== 'hidden') {
                     document.body.style.overflow = this.bodyOverflow;
                     document.body.style.width = this.originBodyWidth;
                 }
@@ -354,7 +354,7 @@ class Modal extends BaseComponent<ModalReactProps, ModalState> {
         } = {
             zIndex,
         };
-        if (getPopupContainer) {
+        if (getPopupContainer && getPopupContainer() !== document.body) {
             wrapperStyle = {
                 zIndex,
                 position: 'static',

+ 1 - 1
packages/semi-ui/modal/ModalContent.tsx

@@ -308,7 +308,7 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
         } = this.props;
         const { direction } = this.context;
         const classList = cls(className, {
-            [`${cssClasses.DIALOG}-popup`]: getPopupContainer && !maskFixed,
+            [`${cssClasses.DIALOG}-popup`]: getPopupContainer && getPopupContainer() !== document.body && !maskFixed,
             [`${cssClasses.DIALOG}-fixed`]: maskFixed,
             [`${cssClasses.DIALOG}-rtl`]: direction === 'rtl',
         });