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;
|
const spacerStyle = { "--downloads-virtual-total-height": `${virtualWindow.totalHeight}px` } as CSSProperties;
|
||||||
|
|
||||||
return (
|
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}
|
||||||
{!state ? (
|
{!state ? (
|
||||||
<div className="downloads-virtual-spacer" style={spacerStyle}>
|
<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);
|
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 {
|
.downloads-virtual-row > .downloads-package-card {
|
||||||
height: var(--downloads-virtual-row-height);
|
height: var(--downloads-virtual-row-height);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -240,6 +240,14 @@ describe("virtualisierte Paketanimation", () => {
|
|||||||
expect(prepared.rows.some((row) => row.type === "item-group")).toBe(false);
|
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", () => {
|
it("zeichnet den Startzustand in einem eigenen Frame vor der Aktivierung", () => {
|
||||||
const frames: FrameRequestCallback[] = [];
|
const frames: FrameRequestCallback[] = [];
|
||||||
const cancelled: number[] = [];
|
const cancelled: number[] = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user