diff --git a/blocksuite/blocks/src/root-block/preview/preview-root-block.ts b/blocksuite/blocks/src/root-block/preview/preview-root-block.ts index d1f8df06d..511689c5a 100644 --- a/blocksuite/blocks/src/root-block/preview/preview-root-block.ts +++ b/blocksuite/blocks/src/root-block/preview/preview-root-block.ts @@ -1,5 +1,8 @@ +import { NoteBlockModel, NoteDisplayMode } from '@blocksuite/affine-model'; +import { matchModels } from '@blocksuite/affine-shared/utils'; import { BlockComponent } from '@blocksuite/block-std'; import { css, html } from 'lit'; +import { repeat } from 'lit/directives/repeat.js'; import { ReadOnlyClipboard } from '../clipboard/readonly-clipboard'; @@ -24,8 +27,21 @@ export class PreviewRootBlockComponent extends BlockComponent { } override renderBlock() { - return html`
- ${this.host.renderChildren(this.model)} -
`; + const widgets = html`${repeat( + Object.entries(this.widgets), + ([id]) => id, + ([_, widget]) => widget + )}`; + + const children = this.renderChildren(this.model, child => { + const isNote = matchModels(child, [NoteBlockModel]); + const note = child as NoteBlockModel; + const displayOnEdgeless = + !!note.displayMode && note.displayMode === NoteDisplayMode.EdgelessOnly; + // Should remove deprecated `hidden` property in the future + return !(isNote && displayOnEdgeless); + }); + + return html`
${children} ${widgets}
`; } } diff --git a/tests/affine-local/e2e/blocksuite/embed/synced.spec.ts b/tests/affine-local/e2e/blocksuite/embed/synced.spec.ts new file mode 100644 index 000000000..9cde75852 --- /dev/null +++ b/tests/affine-local/e2e/blocksuite/embed/synced.spec.ts @@ -0,0 +1,58 @@ +import { test } from '@affine-test/kit/playwright'; +import { + clickEdgelessModeButton, + createEdgelessNoteBlock, + locateEditorContainer, +} from '@affine-test/kit/utils/editor'; +import { openHomePage } from '@affine-test/kit/utils/load-page'; +import { + clickNewPageButton, + createLinkedPage, + waitForEditorLoad, +} from '@affine-test/kit/utils/page-logic'; +import { expect } from '@playwright/test'; + +const title = 'Synced Block Test'; + +test.beforeEach(async ({ page }) => { + await openHomePage(page); + await waitForEditorLoad(page); + await clickNewPageButton(page, title); + await clickEdgelessModeButton(page); + const container = locateEditorContainer(page); + await container.click(); +}); + +test('should not show hidden note in embed view page mode', async ({ + page, +}) => { + const note = page.locator('affine-edgeless-note'); + await note.dblclick(); + await page.keyboard.type('visible content'); + await createEdgelessNoteBlock(page, [100, 100]); + await page.keyboard.press('Enter'); + await page.keyboard.type('hidden content'); + await page.keyboard.press('Enter'); + + // create a new page and navigate + await createLinkedPage(page, 'Test Page'); + const inlineLink = page.locator('affine-reference'); + await inlineLink.dblclick(); + + // reference the previous page + await page.keyboard.press('Enter'); + await page.keyboard.type('@' + title); + const docPopover = page.locator('.linked-doc-popover'); + await docPopover.getByText(/^Synced Block Test$/).click(); + + // switch to embed view + await inlineLink.hover(); + const inlineToolbar = page.locator('reference-popup'); + await inlineToolbar.getByLabel('Switch view').click(); + await inlineToolbar.getByLabel('Embed view').click(); + + // check the content + const embedLink = page.locator('affine-embed-synced-doc-block'); + expect(embedLink.getByText(/visible content/)).toBeVisible(); + expect(embedLink.getByText(/hidden content/)).toBeHidden(); +});