Keep desktop sidebar controls stable across panel changes (#2078)
* fix(app): stabilize desktop sidebar controls Keep the left-window-controls toggle mounted across sidebar state changes so its position and tooltip state remain stable. Preserve browser placement and show an explicit Explorer close control only where native right-side controls do not provide one. * fix(app): suppress inactive sidebar chrome
This commit is contained in:
@@ -1,12 +1,59 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
canDesktopAppSidebarShare,
|
||||
resolveDesktopAppChromeLayout,
|
||||
resolveDesktopAppContentMinimum,
|
||||
resolveDesktopExplorerWidth,
|
||||
resolveDesktopSidebarWidth,
|
||||
} from "@/components/desktop-sidebar-layout";
|
||||
|
||||
describe("desktop sidebar layout", () => {
|
||||
it("keeps the sidebar toggle window-owned beside left window controls", () => {
|
||||
expect(
|
||||
resolveDesktopAppChromeLayout({
|
||||
desktopSidebarRendered: true,
|
||||
hasTopLeftWindowControls: true,
|
||||
sidebarControlsEnabled: true,
|
||||
}),
|
||||
).toEqual({
|
||||
sidebarCorners: "top-left",
|
||||
contentCorners: "top-right",
|
||||
sidebarToggleOwner: "window",
|
||||
});
|
||||
expect(
|
||||
resolveDesktopAppChromeLayout({
|
||||
desktopSidebarRendered: true,
|
||||
hasTopLeftWindowControls: false,
|
||||
sidebarControlsEnabled: true,
|
||||
}),
|
||||
).toEqual({
|
||||
sidebarCorners: "none",
|
||||
contentCorners: "both",
|
||||
sidebarToggleOwner: "content",
|
||||
});
|
||||
expect(
|
||||
resolveDesktopAppChromeLayout({
|
||||
desktopSidebarRendered: false,
|
||||
hasTopLeftWindowControls: true,
|
||||
sidebarControlsEnabled: true,
|
||||
}),
|
||||
).toEqual({
|
||||
sidebarCorners: "none",
|
||||
contentCorners: "both",
|
||||
sidebarToggleOwner: "window",
|
||||
});
|
||||
});
|
||||
|
||||
it("hides the window-owned sidebar toggle when app chrome is suppressed", () => {
|
||||
expect(
|
||||
resolveDesktopAppChromeLayout({
|
||||
desktopSidebarRendered: false,
|
||||
hasTopLeftWindowControls: true,
|
||||
sidebarControlsEnabled: false,
|
||||
}).sidebarToggleOwner,
|
||||
).toBe("none");
|
||||
});
|
||||
|
||||
it("clamps a persisted wide sidebar to preserve the center pane", () => {
|
||||
const atHalfScreen = resolveDesktopSidebarWidth({ requestedWidth: 600, viewportWidth: 751 });
|
||||
expect(atHalfScreen).toBe(351);
|
||||
|
||||
Reference in New Issue
Block a user