Skip to content

Commit 5f91f6c

Browse files
authored
fix: collapse sidebar after returning from drawer layout (#102463)
* fix(ui): collapse sidebar after drawer resize * chore: defer sidebar release note
1 parent fb3f0a2 commit 5f91f6c

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

ui/src/app/app-host.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,12 @@ class OpenClawShell extends LitElement {
553553
this.navDrawerOpen = true;
554554
return;
555555
}
556+
// A drawer that survived a breakpoint change is visually expanded even
557+
// when the persisted desktop preference says collapsed.
558+
const nextNavCollapsed = this.navDrawerOpen || !this.navCollapsed;
559+
this.closeNavDrawer();
556560
context.navigation.update({
557-
navCollapsed: !this.navCollapsed,
561+
navCollapsed: nextNavCollapsed,
558562
});
559563
}
560564

ui/src/e2e/sidebar-customization.e2e.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,23 @@ describeControlUiE2e("Control UI sidebar customization mocked Gateway E2E", () =
190190
await expect.poll(() => page.locator(".topbar-brand").isVisible()).toBe(false);
191191
await captureUiProof(page, "05-expanded-tablet-drawer.png");
192192

193+
// Widening with the drawer open must not leave its stale state blocking
194+
// the desktop collapse control.
195+
await page.setViewportSize({ height: 900, width: 1440 });
196+
await sidebar.getByRole("button", { name: "Collapse sidebar" }).click();
197+
await expect
198+
.poll(() => page.locator(".shell").getAttribute("class"))
199+
.toContain("shell--nav-collapsed");
200+
await expect
201+
.poll(() => page.locator(".shell").getAttribute("class"))
202+
.not.toContain("shell--nav-drawer-open");
203+
await captureUiProof(page, "06-desktop-collapse-after-drawer.png");
204+
205+
await page.setViewportSize({ height: 900, width: 900 });
206+
await drawerButton.click();
207+
await expect
208+
.poll(() => page.locator(".shell").getAttribute("class"))
209+
.toContain("shell--nav-drawer-open");
193210
await page.keyboard.press("Escape");
194211
await expect
195212
.poll(() => page.locator(".shell").getAttribute("class"))

0 commit comments

Comments
 (0)