From cec527a58a399e1d0133eef1c81a52edd2009dcf Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Tue, 21 Jul 2026 15:16:06 +0800 Subject: [PATCH] fix(ui): align settings search with navigation rows (#112172) * fix(ui): align settings search with navigation * fix(ui): separate scrolled settings navigation --- ui/src/components/settings-sidebar.ts | 16 ++- ui/src/e2e/sidebar-customization.e2e.test.ts | 103 +++++++++++++++++++ ui/src/styles/layout.css | 21 +++- 3 files changed, 138 insertions(+), 2 deletions(-) diff --git a/ui/src/components/settings-sidebar.ts b/ui/src/components/settings-sidebar.ts index 385cef9293f5..a29fd1dfc7b0 100644 --- a/ui/src/components/settings-sidebar.ts +++ b/ui/src/components/settings-sidebar.ts @@ -198,6 +198,15 @@ function renderBlockItem(props: SettingsSidebarProps, block: SettingsSearchBlock `; } +function syncSettingsSearchScrollShadow(nav: HTMLElement) { + // The nav's top padding scrolls away with its rows. Keep the fixed search + // region visually separated once content reaches that boundary. + nav + .closest(".settings-sidebar") + ?.querySelector(".settings-sidebar__search") + ?.classList.toggle("settings-sidebar__search--scrolled", nav.scrollTop > 0); +} + export function renderSettingsSidebar(props: SettingsSidebarProps) { const gatewayStatus = t("chat.gatewayStatus", { status: props.connected ? t("common.online") : t("common.offline"), @@ -255,7 +264,12 @@ export function renderSettingsSidebar(props: SettingsSidebarProps) { ` : nothing} -