fix(web): plein écran lecteur — header overlay et masquage automatique après 2 s d'inactivité

This commit is contained in:
Git Agent
2026-08-24 15:06:32 +02:00
parent 0b14a94af8
commit 7055372faf
4 changed files with 156 additions and 5 deletions

View File

@ -15,7 +15,7 @@ import {
zoomReaderSize
} from "./readerLayout";
import { classifyPdfCanvas, pdfCanvasHasVisibleContent, pdfCanvasVisible, pdfRenderScale } from "./pdfRender";
import { isElementFullscreen, isReaderInteractiveTarget, readerArrowAction, shouldHandleReaderArrowKey, supportsElementFullscreen } from "./readerFullscreen";
import { isElementFullscreen, isReaderHeaderActive, isReaderInteractiveTarget, readerArrowAction, shouldHandleReaderArrowKey, supportsElementFullscreen } from "./readerFullscreen";
import { configurePdfWorker, pdfWorkerSrc } from "./pdfWorker";
import { readerErrorMessage } from "./ReaderError";
@ -185,6 +185,35 @@ describe("reader runtime helpers", () => {
expect(isElementFullscreen(regularElement, documentRef)).toBe(false);
});
it("keeps the fullscreen reader header visible while it is actively used", () => {
const focusedControl = {};
const focusedHeader = {
contains: (target: unknown) => target === focusedControl,
matches: () => false,
querySelector: () => null
} as unknown as HTMLElement;
const hoveredHeader = {
contains: () => false,
matches: (selector: string) => selector === ":hover",
querySelector: () => null
} as unknown as HTMLElement;
const menuOpenHeader = {
contains: () => false,
matches: () => false,
querySelector: () => ({})
} as unknown as HTMLElement;
const idleHeader = {
contains: () => false,
matches: () => false,
querySelector: () => null
} as unknown as HTMLElement;
expect(isReaderHeaderActive(focusedHeader, { activeElement: focusedControl } as unknown as Document)).toBe(true);
expect(isReaderHeaderActive(hoveredHeader, { activeElement: null } as unknown as Document)).toBe(true);
expect(isReaderHeaderActive(menuOpenHeader, { activeElement: null } as unknown as Document)).toBe(true);
expect(isReaderHeaderActive(idleHeader, { activeElement: null } as unknown as Document)).toBe(false);
});
it("keeps reader arrow shortcuts away from interactive or external targets", () => {
const originalElement = globalThis.Element;
const originalNode = globalThis.Node;