Skip to content

Commit ae5f1ab

Browse files
authored
Change Dropdowns to use Radix's DropdownMenu (#3189)
1 parent 580101d commit ae5f1ab

File tree

10 files changed

+398
-254
lines changed

10 files changed

+398
-254
lines changed

.changeset/twelve-beers-confess.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"gitbook": patch
3+
---
4+
5+
Change `Dropdown`s to use Radix's `DropdownMenu`

bun.lock

+112-1
Large diffs are not rendered by default.

packages/gitbook/e2e/internal.spec.ts

+28-17
Original file line numberDiff line numberDiff line change
@@ -111,24 +111,24 @@ const testCases: TestsCase[] = [
111111
name: 'Customized variant titles are displayed',
112112
url: '',
113113
run: async (page) => {
114-
const spaceDrowpdown = page
114+
const spaceDropdown = page
115115
.locator('[data-testid="space-dropdown-button"]')
116116
.locator('visible=true');
117-
await spaceDrowpdown.click();
117+
await spaceDropdown.click();
118118

119119
const variantSelectionDropdown = page.locator(
120-
'css=[data-testid="space-dropdown-button"] + div'
120+
'css=[data-testid="dropdown-menu"]'
121121
);
122122
// the customized space title
123123
await expect(
124-
variantSelectionDropdown.getByRole('link', {
124+
variantSelectionDropdown.getByRole('menuitem', {
125125
name: 'Multi-Variants',
126126
})
127127
).toBeVisible();
128128

129129
// the NON-customized space title
130130
await expect(
131-
variantSelectionDropdown.getByRole('link', {
131+
variantSelectionDropdown.getByRole('menuitem', {
132132
name: 'RFCs',
133133
})
134134
).toBeVisible();
@@ -145,14 +145,17 @@ const testCases: TestsCase[] = [
145145
url: 'api-multi-versions/reference/api-reference/pets',
146146
screenshot: false,
147147
run: async (page) => {
148-
const spaceDrowpdown = await page
148+
const spaceDropdown = await page
149149
.locator('[data-testid="space-dropdown-button"]')
150150
.locator('visible=true');
151-
await spaceDrowpdown.click();
151+
await spaceDropdown.click();
152152

153+
const variantSelectionDropdown = page.locator(
154+
'css=[data-testid="dropdown-menu"]'
155+
);
153156
// Click the second variant in the dropdown
154-
await page
155-
.getByRole('link', {
157+
await variantSelectionDropdown
158+
.getByRole('menuitem', {
156159
name: '2.0',
157160
})
158161
.click();
@@ -168,14 +171,18 @@ const testCases: TestsCase[] = [
168171
url: 'api-multi-versions-share-links/8tNo6MeXg7CkFMzSSz81/reference/api-reference/pets',
169172
screenshot: false,
170173
run: async (page) => {
171-
const spaceDrowpdown = await page
174+
const spaceDropdown = await page
172175
.locator('[data-testid="space-dropdown-button"]')
173176
.locator('visible=true');
174-
await spaceDrowpdown.click();
177+
await spaceDropdown.click();
178+
179+
const variantSelectionDropdown = page.locator(
180+
'css=[data-testid="dropdown-menu"]'
181+
);
175182

176183
// Click the second variant in the dropdown
177-
await page
178-
.getByRole('link', {
184+
await variantSelectionDropdown
185+
.getByRole('menuitem', {
179186
name: '2.0',
180187
})
181188
.click();
@@ -205,14 +212,18 @@ const testCases: TestsCase[] = [
205212
return `api-multi-versions-va/reference/api-reference/pets?jwt_token=${token}`;
206213
},
207214
run: async (page) => {
208-
const spaceDrowpdown = await page
215+
const spaceDropdown = await page
209216
.locator('[data-testid="space-dropdown-button"]')
210217
.locator('visible=true');
211-
await spaceDrowpdown.click();
218+
await spaceDropdown.click();
219+
220+
const variantSelectionDropdown = page.locator(
221+
'css=[data-testid="dropdown-menu"]'
222+
);
212223

213224
// Click the second variant in the dropdown
214-
await page
215-
.getByRole('link', {
225+
await variantSelectionDropdown
226+
.getByRole('menuitem', {
216227
name: '2.0',
217228
})
218229
.click();

packages/gitbook/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@gitbook/react-math": "workspace:*",
2828
"@gitbook/react-openapi": "workspace:*",
2929
"@radix-ui/react-checkbox": "^1.0.4",
30+
"@radix-ui/react-dropdown-menu": "^2.1.12",
3031
"@radix-ui/react-navigation-menu": "^1.2.3",
3132
"@radix-ui/react-popover": "^1.0.7",
3233
"@radix-ui/react-tooltip": "^1.1.8",
@@ -37,6 +38,7 @@
3738
"assert-never": "^1.2.1",
3839
"bun-types": "^1.1.20",
3940
"classnames": "^2.5.1",
41+
"event-iterator": "^2.0.0",
4042
"framer-motion": "^10.16.14",
4143
"js-cookie": "^3.0.5",
4244
"jsontoxml": "^1.0.1",
@@ -52,6 +54,7 @@
5254
"openapi-types": "^12.1.3",
5355
"p-map": "^7.0.0",
5456
"parse-cache-control": "^1.0.1",
57+
"partial-json": "^0.1.7",
5558
"react": "^19.0.0",
5659
"react-dom": "^19.0.0",
5760
"react-hotkeys-hook": "^4.4.1",
@@ -70,8 +73,6 @@
7073
"usehooks-ts": "^3.1.0",
7174
"zod": "^3.24.2",
7275
"zod-to-json-schema": "^3.24.5",
73-
"event-iterator": "^2.0.0",
74-
"partial-json": "^0.1.7",
7576
"zustand": "^5.0.3"
7677
},
7778
"devDependencies": {

packages/gitbook/src/components/Header/Dropdown.tsx

-143
This file was deleted.

0 commit comments

Comments
 (0)