Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd9ef6ed

Browse files
authored
chore: replace MoreMenu with DropdownMenu (#17615)
Replace MoreMenu with DropDownMenu component to match update designpatterns.Note: This was the result of experimentation using Cursor to make thechanges and Claude Code for fixing tests.One key takeaway is that verbose e2e logging, especially benignwarnings/errors can confuse Claude Code in running playwright andconfirming its work.<img width="201" alt="Screenshot 2025-05-01 at 00 00 52"src="https://github.com/user-attachments/assets/4905582e-902e-4b61-adc8-14cab6bd006b"/><img width="257" alt="Screenshot 2025-05-01 at 00 01 07"src="https://github.com/user-attachments/assets/5befc420-724a-4c57-9a9d-330a39867fae"/><img width="270" alt="Screenshot 2025-05-01 at 00 01 20"src="https://github.com/user-attachments/assets/9cbf07cb-7d44-4228-ae6f-216e9f2faed0"/><img width="224" alt="Screenshot 2025-05-01 at 00 01 30"src="https://github.com/user-attachments/assets/9fe95916-3d9d-4600-9b1f-8a620e152a53"/>
1 parentb7e08ba commitd9ef6ed

File tree

22 files changed

+384
-504
lines changed

22 files changed

+384
-504
lines changed

‎site/e2e/tests/groups/removeMember.spec.ts‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ test("remove member", async ({ page, baseURL }) => {
3333
awaitexpect(page).toHaveTitle(`${group.display_name} - Coder`);
3434

3535
constuserRow=page.getByRole("row",{name:member.username});
36-
awaituserRow.getByRole("button",{name:"More options"}).click();
37-
38-
constmenu=page.locator("#more-options");
36+
awaituserRow.getByRole("button",{name:"Open menu"}).click();
37+
constmenu=page.getByRole("menu");
3938
awaitmenu.getByText("Remove").click({timeout:1_000});
4039

4140
awaitexpect(page.getByText("Member removed successfully.")).toBeVisible();

‎site/e2e/tests/organizationGroups.spec.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,10 @@ test("create group", async ({ page }) => {
7979
awaitexpect(page.getByText("No users found")).toBeVisible();
8080

8181
// Remove someone from the group
82-
awaitaddedRow.getByLabel("More options").click();
83-
awaitpage.getByText("Remove").click();
82+
awaitaddedRow.getByRole("button",{name:"Open menu"}).click();
83+
constmenu=page.getByRole("menu");
84+
awaitmenu.getByText("Remove").click();
85+
8486
awaitexpect(addedRow).not.toBeVisible();
8587

8688
// Delete the group

‎site/e2e/tests/organizationMembers.spec.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ test("add and remove organization member", async ({ page }) => {
3939
awaitexpect(addedRow.getByText("+1 more")).toBeVisible();
4040

4141
// Remove them from the org
42-
awaitaddedRow.getByLabel("More options").click();
43-
awaitpage.getByText("Remove").click();// Click the "Remove" option
42+
awaitaddedRow.getByRole("button",{name:"Open menu"}).click();
43+
constmenu=page.getByRole("menu");
44+
awaitmenu.getByText("Remove").click();
4445
awaitpage.getByRole("button",{name:"Remove"}).click();// Click "Remove" in the confirmation dialog
4546
awaitexpect(addedRow).not.toBeVisible();
4647
});

‎site/e2e/tests/organizations/customRoles/customRoles.spec.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ test.describe("CustomRolesPage", () => {
3737
awaitexpect(roleRow.getByText(customRole.display_name)).toBeVisible();
3838
awaitexpect(roleRow.getByText("organization_member")).toBeVisible();
3939

40-
awaitroleRow.getByRole("button",{name:"More options"}).click();
41-
constmenu=page.locator("#more-options");
40+
awaitroleRow.getByRole("button",{name:"Open menu"}).click();
41+
constmenu=page.getByRole("menu");
4242
awaitmenu.getByText("Edit").click();
4343

4444
awaitexpect(page).toHaveURL(
@@ -118,7 +118,7 @@ test.describe("CustomRolesPage", () => {
118118

119119
// Verify that the more menu (three dots) is not present for built-in roles
120120
awaitexpect(
121-
roleRow.getByRole("button",{name:"More options"}),
121+
roleRow.getByRole("button",{name:"Open menu"}),
122122
).not.toBeVisible();
123123

124124
awaitdeleteOrganization(org.name);
@@ -175,9 +175,9 @@ test.describe("CustomRolesPage", () => {
175175
awaitpage.goto(`/organizations/${org.name}/roles`);
176176

177177
constroleRow=page.getByTestId(`role-${customRole.name}`);
178-
awaitroleRow.getByRole("button",{name:"More options"}).click();
178+
awaitroleRow.getByRole("button",{name:"Open menu"}).click();
179179

180-
constmenu=page.locator("#more-options");
180+
constmenu=page.getByRole("menu");
181181
awaitmenu.getByText("Delete…").click();
182182

183183
constinput=page.getByRole("textbox");

‎site/e2e/tests/updateTemplate.spec.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ test("add and remove a group", async ({ page }) => {
5353
awaitexpect(row).toBeVisible();
5454

5555
// Now remove the group
56-
awaitrow.getByLabel("More options").click();
57-
awaitpage.getByText("Remove").click();
56+
awaitrow.getByRole("button",{name:"Open menu"}).click();
57+
constmenu=page.getByRole("menu");
58+
awaitmenu.getByText("Remove").click();
59+
5860
awaitexpect(page.getByText("Group removed successfully!")).toBeVisible();
5961
awaitexpect(row).not.toBeVisible();
6062
});

‎site/e2e/tests/users/removeUser.spec.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ test("remove user", async ({ page, baseURL }) => {
1717
awaitexpect(page).toHaveTitle("Users - Coder");
1818

1919
constuserRow=page.getByRole("row",{name:user.email});
20-
awaituserRow.getByRole("button",{name:"More options"}).click();
21-
constmenu=page.locator("#more-options");
22-
awaitmenu.getByText("Delete").click();
20+
awaituserRow.getByRole("button",{name:"Open menu"}).click();
21+
constmenu=page.getByRole("menu");
22+
awaitmenu.getByText("Delete").click();
2323

2424
constdialog=page.getByTestId("dialog");
2525
awaitdialog.getByLabel("Name of the user to delete").fill(user.username);

‎site/src/components/DropdownMenu/DropdownMenu.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export const DropdownMenuSeparator = forwardRef<
196196
>(({ className, ...props},ref)=>(
197197
<DropdownMenuPrimitive.Separator
198198
ref={ref}
199-
className={cn(["-mx-1 my-3 h-px bg-border"],className)}
199+
className={cn(["-mx-1 my-2 h-px bg-border"],className)}
200200
{...props}
201201
/>
202202
));

‎site/src/components/MoreMenu/MoreMenu.stories.tsx‎

Lines changed: 0 additions & 59 deletions
This file was deleted.

‎site/src/components/MoreMenu/MoreMenu.tsx‎

Lines changed: 0 additions & 135 deletions
This file was deleted.

‎site/src/pages/DeploymentSettingsPage/AppearanceSettingsPage/AnnouncementBannerItem.tsx‎

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import Checkbox from "@mui/material/Checkbox";
33
importTableCellfrom"@mui/material/TableCell";
44
importTableRowfrom"@mui/material/TableRow";
55
importtype{BannerConfig}from"api/typesGenerated";
6+
import{Button}from"components/Button/Button";
67
import{
7-
MoreMenu,
8-
MoreMenuContent,
9-
MoreMenuItem,
10-
MoreMenuTrigger,
11-
ThreeDotsButton,
12-
}from"components/MoreMenu/MoreMenu";
8+
DropdownMenu,
9+
DropdownMenuContent,
10+
DropdownMenuItem,
11+
DropdownMenuTrigger,
12+
}from"components/DropdownMenu/DropdownMenu";
13+
import{EllipsisVertical}from"lucide-react";
1314
importtype{FC}from"react";
1415

1516
interfaceAnnouncementBannerItemProps{
@@ -48,17 +49,25 @@ export const AnnouncementBannerItem: FC<AnnouncementBannerItemProps> = ({
4849
</TableCell>
4950

5051
<TableCell>
51-
<MoreMenu>
52-
<MoreMenuTrigger>
53-
<ThreeDotsButton/>
54-
</MoreMenuTrigger>
55-
<MoreMenuContent>
56-
<MoreMenuItemonClick={()=>onEdit()}>Edit&hellip;</MoreMenuItem>
57-
<MoreMenuItemonClick={()=>onDelete()}danger>
52+
<DropdownMenu>
53+
<DropdownMenuTriggerasChild>
54+
<Buttonsize="icon-lg"variant="subtle"aria-label="Open menu">
55+
<EllipsisVerticalaria-hidden="true"/>
56+
<spanclassName="sr-only">Open menu</span>
57+
</Button>
58+
</DropdownMenuTrigger>
59+
<DropdownMenuContentalign="end">
60+
<DropdownMenuItemonClick={()=>onEdit()}>
61+
Edit&hellip;
62+
</DropdownMenuItem>
63+
<DropdownMenuItem
64+
className="text-content-destructive focus:text-content-destructive"
65+
onClick={()=>onDelete()}
66+
>
5867
Delete&hellip;
59-
</MoreMenuItem>
60-
</MoreMenuContent>
61-
</MoreMenu>
68+
</DropdownMenuItem>
69+
</DropdownMenuContent>
70+
</DropdownMenu>
6271
</TableCell>
6372
</TableRow>
6473
);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp