diff --git a/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts b/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts index 3c7db0668b..ab2db6a9c0 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts +++ b/packages/core/client/src/modules/blocks/data-blocks/list/__e2e__/schemaInitializer.test.ts @@ -40,6 +40,7 @@ test.describe('where list block can be added', () => { await page.getByLabel('schema-initializer-Grid-').nth(1).hover(); await page.getByRole('menuitem', { name: 'Role name' }).click(); await page.mouse.move(300, 0); + await page.reload(); await expect(page.getByLabel('block-item-CollectionField-').getByText('Root')).toBeVisible(); await expect(page.getByLabel('block-item-CollectionField-').getByText('Admin')).toBeVisible(); await expect(page.getByLabel('block-item-CollectionField-').getByText('Member')).toBeVisible(); diff --git a/packages/core/client/src/schema-component/antd/action/Action.Modal.tsx b/packages/core/client/src/schema-component/antd/action/Action.Modal.tsx index 09562cb54d..2411b32ed9 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.Modal.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.Modal.tsx @@ -9,7 +9,7 @@ import { css } from '@emotion/css'; import { observer, useField, useFieldSchema } from '@formily/react'; -import { Modal, ModalProps } from 'antd'; +import { Modal, ModalProps, Skeleton } from 'antd'; import classNames from 'classnames'; import React, { FC, startTransition, useEffect, useState } from 'react'; import { ErrorBoundary, FallbackProps } from 'react-error-boundary'; @@ -53,7 +53,6 @@ const ActionModalContent: FC<{ footerNodeName: string; field: any; schema: any } if (!deferredVisible) { return null; } - return ( { + if (visible) { + const timer = setTimeout(() => setReady(true), delay); + return () => clearTimeout(timer); + } else { + setReady(false); + } + }, [visible]); + return ready; +} + export const InternalActionModal: React.FC> = observer( (props) => { const { footerNodeName = 'Action.Modal.Footer', width, zIndex: _zIndex, ...others } = props; @@ -90,6 +102,7 @@ export const InternalActionModal: React.FC> = obse } const zIndex = getZIndex('modal', _zIndex || parentZIndex, props.level || 0); + const ready = useDelayedVisible(visible, 200); // 200ms 与 Modal 动画时间一致 return ( @@ -154,7 +167,11 @@ export const InternalActionModal: React.FC> = obse ) } > - + {ready ? ( + + ) : ( + + )}