fix(downloads): fully disable package disclosure motion
Disable the persistent virtual row and spacer transitions when package disclosure animation is turned off, so following packages reposition immediately instead of continuing to slide. Add a renderer regression test covering the real no-motion class and CSS boundary.
This commit is contained in:
@@ -164,7 +164,7 @@ export function VirtualizedDownloadsBody({ actions, model, state }: { actions: D
|
||||
const spacerStyle = { "--downloads-virtual-total-height": `${virtualWindow.totalHeight}px` } as CSSProperties;
|
||||
|
||||
return (
|
||||
<div className="downloads-table-body" data-visual-region="downloads-table-body" ref={bodyRef} role="rowgroup">
|
||||
<div className={`downloads-table-body${model.animatePackageDisclosure ? "" : " is-disclosure-motion-disabled"}`} data-visual-region="downloads-table-body" ref={bodyRef} role="rowgroup">
|
||||
{state}
|
||||
{!state ? (
|
||||
<div className="downloads-virtual-spacer" style={spacerStyle}>
|
||||
|
||||
@@ -302,6 +302,11 @@
|
||||
transition: height 1500ms cubic-bezier(0.22, 1, 0.36, 1), transform 1500ms cubic-bezier(0.22, 1, 0.36, 1), opacity 1500ms cubic-bezier(0.22, 1, 0.36, 1);
|
||||
}
|
||||
|
||||
.downloads-table-body.is-disclosure-motion-disabled .downloads-virtual-spacer,
|
||||
.downloads-table-body.is-disclosure-motion-disabled .downloads-virtual-row {
|
||||
transition: none !important;
|
||||
}
|
||||
|
||||
.downloads-virtual-row > .downloads-package-card {
|
||||
height: var(--downloads-virtual-row-height);
|
||||
}
|
||||
|
||||
@@ -240,6 +240,14 @@ describe("virtualisierte Paketanimation", () => {
|
||||
expect(prepared.rows.some((row) => row.type === "item-group")).toBe(false);
|
||||
});
|
||||
|
||||
it("deaktiviert auch die CSS-Bewegung der virtuellen Folgezeilen", () => {
|
||||
const html = renderToStaticMarkup(<DownloadsContent actions={createActions()} model={withRuntime(createInput(), { animatePackageDisclosure: false })} />);
|
||||
const css = readFileSync(path.join(process.cwd(), "src/renderer/views/downloads/downloads.css"), "utf8");
|
||||
|
||||
expect(html).toContain('class="downloads-table-body is-disclosure-motion-disabled"');
|
||||
expect(css).toMatch(/\.downloads-table-body\.is-disclosure-motion-disabled \.downloads-virtual-spacer,\s*\.downloads-table-body\.is-disclosure-motion-disabled \.downloads-virtual-row\s*\{[^}]*transition:\s*none !important;/s);
|
||||
});
|
||||
|
||||
it("zeichnet den Startzustand in einem eigenen Frame vor der Aktivierung", () => {
|
||||
const frames: FrameRequestCallback[] = [];
|
||||
const cancelled: number[] = [];
|
||||
|
||||
Reference in New Issue
Block a user