chore(editor): at menu stays open when left right arrow keys are pressed (#10806)
Close [BS-2644](https://linear.app/affine-design/issue/BS-2644/menu-support)
This commit is contained in:
@@ -179,6 +179,14 @@ export class LinkedDocPopover extends SignalWatcher(
|
|||||||
createKeydownObserver({
|
createKeydownObserver({
|
||||||
target: eventSource,
|
target: eventSource,
|
||||||
signal: keydownObserverAbortController.signal,
|
signal: keydownObserverAbortController.signal,
|
||||||
|
interceptor: (event, next) => {
|
||||||
|
if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
},
|
||||||
onInput: isComposition => {
|
onInput: isComposition => {
|
||||||
if (isComposition) {
|
if (isComposition) {
|
||||||
this._updateLinkedDocGroup().catch(console.error);
|
this._updateLinkedDocGroup().catch(console.error);
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import {
|
|||||||
cutByKeyboard,
|
cutByKeyboard,
|
||||||
pasteByKeyboard,
|
pasteByKeyboard,
|
||||||
pressArrowLeft,
|
pressArrowLeft,
|
||||||
pressArrowRight,
|
|
||||||
pressBackspace,
|
pressBackspace,
|
||||||
pressEnter,
|
pressEnter,
|
||||||
|
pressEscape,
|
||||||
selectAllByKeyboard,
|
selectAllByKeyboard,
|
||||||
SHORT_KEY,
|
SHORT_KEY,
|
||||||
type,
|
type,
|
||||||
@@ -107,7 +107,7 @@ test.describe('reference node', () => {
|
|||||||
);
|
);
|
||||||
const { linkedDocPopover } = getLinkedDocPopover(page);
|
const { linkedDocPopover } = getLinkedDocPopover(page);
|
||||||
await expect(linkedDocPopover).toBeVisible();
|
await expect(linkedDocPopover).toBeVisible();
|
||||||
await pressArrowRight(page);
|
await pressEscape(page);
|
||||||
await expect(linkedDocPopover).toBeHidden();
|
await expect(linkedDocPopover).toBeHidden();
|
||||||
await type(page, '@');
|
await type(page, '@');
|
||||||
await expect(linkedDocPopover).toBeVisible();
|
await expect(linkedDocPopover).toBeVisible();
|
||||||
@@ -382,11 +382,6 @@ test.describe('linked page popover', () => {
|
|||||||
await page.keyboard.press('Escape');
|
await page.keyboard.press('Escape');
|
||||||
await expect(linkedDocPopover).toBeHidden();
|
await expect(linkedDocPopover).toBeHidden();
|
||||||
|
|
||||||
await type(page, '@');
|
|
||||||
await expect(linkedDocPopover).toBeVisible();
|
|
||||||
await page.keyboard.press('ArrowRight');
|
|
||||||
await expect(linkedDocPopover).toBeHidden();
|
|
||||||
|
|
||||||
await type(page, '@');
|
await type(page, '@');
|
||||||
await expect(linkedDocPopover).toBeVisible();
|
await expect(linkedDocPopover).toBeVisible();
|
||||||
await copyByKeyboard(page);
|
await copyByKeyboard(page);
|
||||||
|
|||||||
28
tests/affine-local/e2e/blocksuite/at-menu.spec.ts
Normal file
28
tests/affine-local/e2e/blocksuite/at-menu.spec.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import { test } from '@affine-test/kit/playwright';
|
||||||
|
import { openHomePage } from '@affine-test/kit/utils/load-page';
|
||||||
|
import {
|
||||||
|
clickNewPageButton,
|
||||||
|
type,
|
||||||
|
waitForEditorLoad,
|
||||||
|
} from '@affine-test/kit/utils/page-logic';
|
||||||
|
import { expect } from '@playwright/test';
|
||||||
|
|
||||||
|
test.beforeEach(async ({ page }) => {
|
||||||
|
await openHomePage(page);
|
||||||
|
await clickNewPageButton(page);
|
||||||
|
await waitForEditorLoad(page);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('at menu should not be close when press arrow key', async ({ page }) => {
|
||||||
|
await page.keyboard.press('Enter');
|
||||||
|
await type(page, '@');
|
||||||
|
|
||||||
|
const atMenu = page.locator('.linked-doc-popover');
|
||||||
|
await expect(atMenu).toBeVisible();
|
||||||
|
|
||||||
|
await page.keyboard.press('ArrowRight');
|
||||||
|
await expect(atMenu).toBeVisible();
|
||||||
|
|
||||||
|
await page.keyboard.press('ArrowLeft');
|
||||||
|
await expect(atMenu).toBeVisible();
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user