diff options
author | Wolfgang Müller | 2025-02-19 16:50:43 +0100 |
---|---|---|
committer | Wolfgang Müller | 2025-02-19 17:45:19 +0100 |
commit | f90f3604cf161a82336ed1f81967933adedfeb96 (patch) | |
tree | b8c78a359236fbd11658cd458efd47a312420bca /frontend/src/lib/reader/components/ToggleFullscreenButton.svelte | |
parent | 6b6a4d7b9aa9f8057b0ce7d5426dc549fff3a50f (diff) | |
download | hircine-f90f3604cf161a82336ed1f81967933adedfeb96.tar.gz |
frontend: Add fullscreen toggle in the reader
Diffstat (limited to 'frontend/src/lib/reader/components/ToggleFullscreenButton.svelte')
-rw-r--r-- | frontend/src/lib/reader/components/ToggleFullscreenButton.svelte | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/frontend/src/lib/reader/components/ToggleFullscreenButton.svelte b/frontend/src/lib/reader/components/ToggleFullscreenButton.svelte new file mode 100644 index 0000000..9ad4ce6 --- /dev/null +++ b/frontend/src/lib/reader/components/ToggleFullscreenButton.svelte @@ -0,0 +1,34 @@ +<script lang="ts"> + import { accelerator } from '$lib/Shortcuts'; + import { toastFinally } from '$lib/Toasts'; + + let { dialog }: { dialog?: HTMLElement } = $props(); + + function onclick() { + if (isFullscreen) { + document.exitFullscreen().catch(toastFinally); + } else if (dialog?.requestFullscreen) { + dialog.requestFullscreen().catch(toastFinally); + } + } + + let fullscreenElement: HTMLElement | null = $state(null); + let isFullscreen = $derived(fullscreenElement !== null); +</script> + +<svelte:document bind:fullscreenElement /> + +<button + type="button" + class="btn-transparent" + title="Toggle fullscreen" + aria-label="Toggle fullscreen" + {onclick} + use:accelerator={'f'} +> + {#if isFullscreen} + <span class="icon-lg icon-[material-symbols--fullscreen-exit]"></span> + {:else} + <span class="icon-lg icon-[material-symbols--fullscreen]"></span> + {/if} +</button> |