Fix: Inner iframe clicks doesn't close menu

This commit is contained in:
Luc Mcgrady 2025-11-23 17:25:05 +00:00
parent ba540bb516
commit f8629bf148
No known key found for this signature in database
GPG key ID: 4F3D7A0B17CC3D9C
4 changed files with 33 additions and 11 deletions

View file

@ -132,6 +132,10 @@ addEventListener("keydown", (e) => {
}
});
addEventListener("click", () => {
postParentMessage({ type: "closemenu" });
});
const base = document.createElement("base");
base.href = "/media/";
document.head.appendChild(base);

View file

@ -5,22 +5,27 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<script lang="ts">
import Popover from "$lib/components/Popover.svelte";
import WithFloating from "$lib/components/WithFloating.svelte";
import { onMount } from "svelte";
export let showFloating = false;
export let lockOpen = false;
function close() {
if (!lockOpen) {
showFloating = false;
}
}
onMount(() => {
document.addEventListener("closemenu", () => close());
return () => {
document.removeEventListener("closemenu", close);
};
});
</script>
<div>
<WithFloating
show={showFloating}
inline
on:close={() => {
if (!lockOpen) {
showFloating = false;
}
}}
closeOnInsideClick
>
<WithFloating show={showFloating} inline on:close={close}>
<slot slot="reference" name="button"></slot>
<Popover slot="floating">

View file

@ -119,6 +119,10 @@ export class ReviewerState {
document.dispatchEvent(new KeyboardEvent(forceKeyUp ? "keyup" : "keydown", e.data.eventInit));
break;
}
case "closemenu": {
document.dispatchEvent(new CustomEvent("closemenu"));
break;
}
case "setstorage": {
setConfigJson({
key: "reviewerStorage",

View file

@ -16,9 +16,18 @@ interface KeyPressMessage {
eventInit: KeyboardEventInit;
}
interface CloseMenuMessage {
type: "closemenu";
}
interface SetStorageMessage {
type: "setstorage";
json_buffer: Uint8Array;
}
export type ReviewerRequest = AudioMessage | UpdateTypedAnswerMessage | KeyPressMessage | SetStorageMessage;
export type ReviewerRequest =
| AudioMessage
| UpdateTypedAnswerMessage
| KeyPressMessage
| SetStorageMessage
| CloseMenuMessage;