Harden disclosure visuals and download toolbar tail

Replace the synthetic disclosure interpolation test with a real Chrome headless run against the existing visual harness, sampling rendered height, transform, opacity, and adjacent row geometry during collapse and expansion.

Group the global downloads disclosure action in a responsive toolbar tail, remove the horizontal toolbar scroll path, and keep the action pinned within the supported 1120 pixel layout while the schedule is open.

Disable the global disclosure action for a truly empty queue and cover the empty model plus responsive DOM boundaries.
This commit is contained in:
Sucukdeluxe
2026-08-22 11:32:23 +02:00
parent a101bd0bed
commit 9cdd0310a5
4 changed files with 354 additions and 94 deletions
+10
View File
@@ -1108,13 +1108,23 @@ describe("downloads view", () => {
visitElements(toolbar, (element) => {
if (element.type === "button") toolbarButtons.push(element);
});
const tail = findElement(toolbar, (element) => String(element.props.className || "").includes("downloads-toolbar-tail"));
expect(sidebar).not.toContain("Alle ein-/ausklappen");
expect(tail.props.children).toBeTruthy();
expect(toolbarButtons.at(-1)?.props.children).toBe("Alle ein-/ausklappen");
findButton(toolbar, "Alle ein-/ausklappen").props.onClick();
expect(toggles).toBe(1);
});
it("disables the global package disclosure action for a truly empty queue", () => {
const model = withRuntime(createInput({ packageOrder: [], packages: {}, items: {} }), { running: false });
const toolbar = DownloadsToolbar({ actions: createActions(), model });
expect(model.empty).toBe(true);
expect(findButton(toolbar, "Alle ein-/ausklappen").props.disabled).toBe(true);
});
it("blocks native package dragging while preserving explicit reorder actions", () => {
const model = withRuntime(createInput());
const component = PackageCardContent({