mirror of
https://github.com/MarijnDoeve/TijdVoorDeTest.git
synced 2026-07-10 01:20:14 +02:00
5e7028c972
* feat: add fullscreen toggle and return-to-page logout redirect Add a Stimulus-driven fullscreen button/keypress to the quiz and elimination screens, and redirect admins back to the page they were on after logging out (unless it was a backoffice or elimination page). * docs: expand CLAUDE.md domain context and testing conventions Document the WIDM quiz/elimination domain model in more depth, and add guidance to prefer plain TestCase over WebTestCase/KernelTestCase and to apply the Boy Scout Rule for small nearby cleanups. * fix: drop f-keypress fullscreen shortcut Candidate names can start with "f" while typing, so the keypress conflicted with the enter-name form. Button-only toggle remains.
41 lines
1000 B
JavaScript
41 lines
1000 B
JavaScript
import {Controller} from '@hotwired/stimulus';
|
|
|
|
const STORAGE_KEY = 'tvdt-fullscreen';
|
|
|
|
export default class extends Controller {
|
|
connect() {
|
|
this.onFullscreenChange = this.onFullscreenChange.bind(this);
|
|
document.addEventListener('fullscreenchange', this.onFullscreenChange);
|
|
this.syncState();
|
|
|
|
if (sessionStorage.getItem(STORAGE_KEY) === '1' && !document.fullscreenElement) {
|
|
this.request();
|
|
}
|
|
}
|
|
|
|
disconnect() {
|
|
document.removeEventListener('fullscreenchange', this.onFullscreenChange);
|
|
}
|
|
|
|
toggle() {
|
|
if (document.fullscreenElement) {
|
|
document.exitFullscreen();
|
|
} else {
|
|
this.request();
|
|
}
|
|
}
|
|
|
|
request() {
|
|
document.documentElement.requestFullscreen().catch(() => {});
|
|
}
|
|
|
|
onFullscreenChange() {
|
|
sessionStorage.setItem(STORAGE_KEY, document.fullscreenElement ? '1' : '0');
|
|
this.syncState();
|
|
}
|
|
|
|
syncState() {
|
|
document.documentElement.classList.toggle('is-fullscreen', Boolean(document.fullscreenElement));
|
|
}
|
|
}
|