From 73f83cc97eef2e784433d28dddd6273f7c54871a Mon Sep 17 00:00:00 2001 From: Joooye_34 Date: Wed, 20 Sep 2023 22:07:15 +0800 Subject: [PATCH] fix(core): editor popover covered header popover (#4342) --- .../src/components/page-detail-editor.css.ts | 9 ++++++ .../src/components/page-detail-editor.tsx | 28 +++++++++++++------ apps/storybook/src/stories/core.stories.tsx | 4 +++ .../src/components/workspace/index.css.ts | 1 + 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/apps/core/src/components/page-detail-editor.css.ts b/apps/core/src/components/page-detail-editor.css.ts index 833ac0d884..2628e9d0d3 100644 --- a/apps/core/src/components/page-detail-editor.css.ts +++ b/apps/core/src/components/page-detail-editor.css.ts @@ -1,5 +1,14 @@ import { globalStyle, style } from '@vanilla-extract/css'; +/** + * Editor container element layer should be lower than header and after auto + * The zIndex of header is 2, defined in apps/core/src/components/pure/header/style.css.tsx + */ +export const editorContainer = style({ + position: 'relative', + zIndex: 0, // it will create stacking context to limit layer of child elements and be lower than after auto zIndex +}); + export const pluginContainer = style({ height: '100%', width: '100%', diff --git a/apps/core/src/components/page-detail-editor.tsx b/apps/core/src/components/page-detail-editor.tsx index 4d9510fb9d..6e9c5712e8 100644 --- a/apps/core/src/components/page-detail-editor.tsx +++ b/apps/core/src/components/page-detail-editor.tsx @@ -32,7 +32,7 @@ import { pageSettingFamily } from '../atoms'; import { fontStyleOptions, useAppSetting } from '../atoms/settings'; import { BlockSuiteEditor as Editor } from './blocksuite/block-suite-editor'; import * as styles from './page-detail-editor.css'; -import { pluginContainer } from './page-detail-editor.css'; +import { editorContainer, pluginContainer } from './page-detail-editor.css'; import { TrashButtonGroup } from './pure/trash-button-group'; export type OnLoadEditor = (page: Page, editor: EditorContainer) => () => void; @@ -188,23 +188,27 @@ const PluginContentAdapter = memo( interface LayoutPanelProps { node: LayoutNode; editorProps: PageDetailEditorProps; + depth: number; } const LayoutPanel = memo(function LayoutPanel( props: LayoutPanelProps ): ReactElement { - const node = props.node; + const { node, depth, editorProps } = props; const windowItems = useAtomValue(pluginWindowAtom); if (typeof node === 'string') { if (node === 'editor') { - return ; + return ; } else { const windowItem = windowItems[node]; return ; } } else { return ( - + - + @@ -224,7 +232,11 @@ const LayoutPanel = memo(function LayoutPanel( }} > - + @@ -244,7 +256,7 @@ export const PageDetailEditor = (props: PageDetailEditorProps) => { if (layout === 'editor') { return ( - + @@ -256,7 +268,7 @@ export const PageDetailEditor = (props: PageDetailEditorProps) => { return ( <> - + ); diff --git a/apps/storybook/src/stories/core.stories.tsx b/apps/storybook/src/stories/core.stories.tsx index b3eb9796d2..b00b8bb247 100644 --- a/apps/storybook/src/stories/core.stories.tsx +++ b/apps/storybook/src/stories/core.stories.tsx @@ -53,6 +53,10 @@ SettingPage.play = async ({ canvasElement, step }) => { document.body.querySelector('[data-testid="language-menu-button"]') ); }); + + // Menu button may have "pointer-events: none" style, await 100ms to avoid this weird situation. + await new Promise(resolve => window.setTimeout(resolve, 100)); + await step('click language menu button', async () => { await userEvent.click( document.body.querySelector( diff --git a/packages/component/src/components/workspace/index.css.ts b/packages/component/src/components/workspace/index.css.ts index ec816b3f1e..1c1cbf8f28 100644 --- a/packages/component/src/components/workspace/index.css.ts +++ b/packages/component/src/components/workspace/index.css.ts @@ -65,6 +65,7 @@ globalStyle(`html[data-theme="dark"] ${appStyle}`, { export const mainContainerStyle = style({ position: 'relative', + zIndex: 0, // it will create stacking context to limit layer of child elements and be lower than after auto zIndex width: 0, flex: 1, maxWidth: '100%',