Skip to content

Commit

Permalink
fix(blocks): element toolbar should be hidden when resizing element (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
fundon committed May 14, 2024
1 parent 5238dfe commit 09e5658
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,19 @@ export class EdgelessConnectorHandle extends WithDisposable(LitElement) {
_disposables.dispose();
this._disposables = new DisposableGroup();
this._bindEvent();
edgeless.slots.elementResizeEnd.emit();
});
}

private _bindEvent() {
const edgeless = this.edgeless;

this._disposables.addFromEvent(this._startHandler, 'pointerdown', e => {
edgeless.slots.elementResizeStart.emit();
this._capPointerDown(e, 'source');
});
this._disposables.addFromEvent(this._endHandler, 'pointerdown', e => {
edgeless.slots.elementResizeStart.emit();
this._capPointerDown(e, 'target');
});
this._disposables.add(() => {
Expand Down
13 changes: 12 additions & 1 deletion packages/blocks/src/root-block/widgets/element-toolbar/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -239,13 +239,24 @@ export class EdgelessElementToolbarWidget extends WidgetElement<
this._dragging = true;
})
);

_disposables.add(
edgeless.dispatcher.add('dragEnd', () => {
this._dragging = false;
this._recalculatePosition();
})
);

_disposables.add(
edgeless.slots.elementResizeStart.on(() => {
this._dragging = true;
})
);
_disposables.add(
edgeless.slots.elementResizeEnd.on(() => {
this._dragging = false;
this._recalculatePosition();
})
);
}

private _recalculatePosition() {
Expand Down
27 changes: 27 additions & 0 deletions tests/edgeless/element-toolbar.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { expect } from '@playwright/test';

import {
addBasicRectShapeElement,
locatorComponentToolbar,
resizeElementByHandle,
selectNoteInEdgeless,
switchEditorMode,
zoomResetByKeyboard,
} from '../utils/actions/edgeless.js';
import {
enterPlaygroundRoom,
Expand Down Expand Up @@ -61,3 +64,27 @@ test('tooltip should be hidden after clicking on button', async ({ page }) => {
await expect(page.locator('note-display-mode-panel')).toBeHidden();
await expect(page.locator('edgeless-color-panel')).toBeVisible();
});

test('should be hidden when resizing element', async ({ page }) => {
await enterPlaygroundRoom(page);
await initEmptyEdgelessState(page);
await switchEditorMode(page);
await zoomResetByKeyboard(page);

await addBasicRectShapeElement(page, { x: 210, y: 110 }, { x: 310, y: 210 });
await page.mouse.click(220, 120);

const toolbar = locatorComponentToolbar(page);
await expect(toolbar).toBeVisible();

await resizeElementByHandle(page, { x: 400, y: 300 }, 'top-left', 30);

await page.mouse.move(450, 300);
await expect(toolbar).toBeEmpty();

await page.mouse.move(320, 220);
await expect(toolbar).toBeEmpty();

await page.mouse.up();
await expect(toolbar).toBeVisible();
});

0 comments on commit 09e5658

Please sign in to comment.