Skip to content

Commit 072acc1

Browse files
authored
fix(ContextMenu): left clicking trigger should close when open (#1848)
1 parent cdd7376 commit 072acc1

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

.changeset/fifty-plums-eat.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"bits-ui": patch
3+
---
4+
5+
fix(ContextMenu): left clicking the trigger when open should register as outside click event

packages/bits-ui/src/lib/bits/utilities/dismissible-layer/use-dismissable-layer.svelte.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ function isValidEvent(e: PointerEvent, node: HTMLElement): boolean {
255255

256256
const targetIsContextMenuTrigger = Boolean(target.closest(`[${CONTEXT_MENU_TRIGGER_ATTR}]`));
257257
if ("button" in e && e.button > 0 && !targetIsContextMenuTrigger) return false;
258+
if ("button" in e && e.button === 0 && targetIsContextMenuTrigger) return true;
258259

259260
const nodeIsContextMenu = Boolean(node.closest(`[${CONTEXT_MENU_CONTENT_ATTR}]`));
260261
if (targetIsContextMenuTrigger && nodeIsContextMenu) return false;

tests/src/tests/context-menu/context-menu.browser.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,3 +475,9 @@ it("should open when right clicked inside a tooltip trigger", async () => {
475475
await page.getByTestId("context-menu-trigger").click({ button: "right" });
476476
await expectExists(page.getByTestId("context-menu-content"));
477477
});
478+
479+
it("should close when the trigger is left clicked and the menu is open", async () => {
480+
await open();
481+
await page.getByTestId("trigger").click({ force: true });
482+
await expectNotExists(page.getByTestId("content"));
483+
});

0 commit comments

Comments
 (0)