From 1c1edb4a226acf5e169bd72376036a21575d2dfa Mon Sep 17 00:00:00 2001 From: yyh <92089059+lyzno1@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:53:36 +0800 Subject: [PATCH] fix: keep account dropdown open when switching theme (#32918) --- web/app/components/base/theme-switcher.tsx | 18 ++++++++++++------ .../header/account-dropdown/index.spec.tsx | 14 ++++++++++++++ .../header/account-dropdown/index.tsx | 2 +- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/web/app/components/base/theme-switcher.tsx b/web/app/components/base/theme-switcher.tsx index 86e24a443c..58da8f4664 100644 --- a/web/app/components/base/theme-switcher.tsx +++ b/web/app/components/base/theme-switcher.tsx @@ -13,44 +13,50 @@ export default function ThemeSwitcher() { return (
-
handleThemeChange('system')} + aria-label="System theme" data-testid="system-theme-container" >
-
+
-
handleThemeChange('light')} + aria-label="Light theme" data-testid="light-theme-container" >
-
+
-
handleThemeChange('dark')} + aria-label="Dark theme" data-testid="dark-theme-container" >
-
+
) } diff --git a/web/app/components/header/account-dropdown/index.spec.tsx b/web/app/components/header/account-dropdown/index.spec.tsx index 60e00868c1..a92f8503ee 100644 --- a/web/app/components/header/account-dropdown/index.spec.tsx +++ b/web/app/components/header/account-dropdown/index.spec.tsx @@ -29,6 +29,10 @@ vi.mock('@/app/components/header/github-star', () => ({ default: () =>
GithubStar
, })) +vi.mock('@/app/components/base/theme-switcher', () => ({ + default: () => , +})) + vi.mock('@/context/app-context', () => ({ useAppContext: vi.fn(), })) @@ -276,6 +280,16 @@ describe('AccountDropdown', () => { // Assert expect(screen.queryByTestId('account-about')).not.toBeInTheDocument() }) + + it('should keep account dropdown open when clicking the theme switcher', () => { + // Act + renderWithRouter() + fireEvent.click(screen.getByRole('button', { name: 'common.account.account' })) + fireEvent.click(screen.getByTestId('theme-switcher-button')) + + // Assert + expect(screen.getByText('common.userProfile.logout')).toBeInTheDocument() + }) }) describe('Branding and Environment', () => { diff --git a/web/app/components/header/account-dropdown/index.tsx b/web/app/components/header/account-dropdown/index.tsx index 4cf1f4efda..c4f1c5699f 100644 --- a/web/app/components/header/account-dropdown/index.tsx +++ b/web/app/components/header/account-dropdown/index.tsx @@ -228,8 +228,8 @@ export default function AppSelector() { )} e.preventDefault()} >