mirror of
https://github.com/block/buzz.git
synced 2026-11-08 18:31:56 +00:00
fix(desktop): prevent menu-to-dialog UI lockups (#1839)
Signed-off-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
@@ -22,7 +22,7 @@ export function DeleteActionMenu({ label, onConfirm }: DeleteActionMenuProps) {
|
||||
|
||||
return (
|
||||
<div className="ml-auto opacity-0 transition-opacity group-hover:opacity-100">
|
||||
<DropdownMenu>
|
||||
<DropdownMenu modal={false}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<button
|
||||
className="rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground"
|
||||
|
||||
@@ -116,7 +116,7 @@ function MoreActionsMenu({
|
||||
|
||||
return (
|
||||
<>
|
||||
<DropdownMenu open={open} onOpenChange={onOpenChange}>
|
||||
<DropdownMenu modal={false} open={open} onOpenChange={onOpenChange}>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<DropdownMenuTrigger asChild>
|
||||
|
||||
@@ -116,7 +116,7 @@ function MemberRow({
|
||||
</div>
|
||||
|
||||
{showActions ? (
|
||||
<DropdownMenu>
|
||||
<DropdownMenu modal={false}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
data-testid={`relay-member-actions-${member.pubkey}`}
|
||||
|
||||
@@ -234,7 +234,7 @@ function TemplateRow({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<DropdownMenu>
|
||||
<DropdownMenu modal={false}>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button
|
||||
className="h-7 w-7 shrink-0 opacity-0 group-hover:opacity-100"
|
||||
|
||||
@@ -99,7 +99,7 @@ function WorkspaceButton({
|
||||
: workspace.name;
|
||||
|
||||
return (
|
||||
<ContextMenu>
|
||||
<ContextMenu modal={false}>
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<ContextMenuTrigger asChild>
|
||||
|
||||
@@ -281,7 +281,11 @@ export function WorkspaceSwitcher({
|
||||
) : null;
|
||||
|
||||
const switcherDropdown = (
|
||||
<DropdownMenu open={dropdownOpen} onOpenChange={setDropdownOpen}>
|
||||
<DropdownMenu
|
||||
modal={false}
|
||||
open={dropdownOpen}
|
||||
onOpenChange={setDropdownOpen}
|
||||
>
|
||||
<DropdownMenuTrigger asChild>
|
||||
{variant === "profile" ? (
|
||||
<button
|
||||
|
||||
@@ -55,6 +55,38 @@ test.describe("workspace rail", () => {
|
||||
await expect(page.getByTestId("workspace-rail-add")).toBeVisible();
|
||||
});
|
||||
|
||||
test("restores pointer events after dismissing workspace settings", async ({
|
||||
page,
|
||||
}) => {
|
||||
await installMockBridge(page, undefined, { skipWorkspaceSeed: true });
|
||||
await seedWorkspaces(page, [WORKSPACE_A, WORKSPACE_B], WORKSPACE_A.id);
|
||||
await page.goto("/");
|
||||
|
||||
const workspaceButton = page.getByTestId(
|
||||
`workspace-rail-button-${WORKSPACE_A.id}`,
|
||||
);
|
||||
await workspaceButton.click({ button: "right" });
|
||||
await page.getByRole("menuitem", { name: "Workspace settings" }).click();
|
||||
|
||||
await expect(
|
||||
page.getByRole("dialog", { name: "Edit Workspace" }),
|
||||
).toBeVisible();
|
||||
await page.mouse.click(0, 0);
|
||||
|
||||
await expect(
|
||||
page.getByRole("dialog", { name: "Edit Workspace" }),
|
||||
).toHaveCount(0);
|
||||
await expect(page.locator("body")).not.toHaveCSS("pointer-events", "none");
|
||||
await page.getByTestId(`workspace-rail-button-${WORKSPACE_B.id}`).click();
|
||||
await expect
|
||||
.poll(() =>
|
||||
page.evaluate(() =>
|
||||
window.localStorage.getItem("buzz-active-workspace-id"),
|
||||
),
|
||||
)
|
||||
.toBe(WORKSPACE_B.id);
|
||||
});
|
||||
|
||||
test("switches the active workspace on click", async ({ page }) => {
|
||||
await installMockBridge(page, undefined, { skipWorkspaceSeed: true });
|
||||
await seedWorkspaces(page, [WORKSPACE_A, WORKSPACE_B], WORKSPACE_A.id);
|
||||
|
||||
Reference in New Issue
Block a user