mirror of
https://github.com/ankitects/anki.git
synced 2026-01-09 03:53:55 -05:00
Fix: Inner iframe clicks doesn't close menu
This commit is contained in:
parent
ba540bb516
commit
f8629bf148
4 changed files with 33 additions and 11 deletions
|
|
@ -132,6 +132,10 @@ addEventListener("keydown", (e) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addEventListener("click", () => {
|
||||||
|
postParentMessage({ type: "closemenu" });
|
||||||
|
});
|
||||||
|
|
||||||
const base = document.createElement("base");
|
const base = document.createElement("base");
|
||||||
base.href = "/media/";
|
base.href = "/media/";
|
||||||
document.head.appendChild(base);
|
document.head.appendChild(base);
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,27 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Popover from "$lib/components/Popover.svelte";
|
import Popover from "$lib/components/Popover.svelte";
|
||||||
import WithFloating from "$lib/components/WithFloating.svelte";
|
import WithFloating from "$lib/components/WithFloating.svelte";
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
|
||||||
export let showFloating = false;
|
export let showFloating = false;
|
||||||
export let lockOpen = false;
|
export let lockOpen = false;
|
||||||
|
|
||||||
|
function close() {
|
||||||
|
if (!lockOpen) {
|
||||||
|
showFloating = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
document.addEventListener("closemenu", () => close());
|
||||||
|
return () => {
|
||||||
|
document.removeEventListener("closemenu", close);
|
||||||
|
};
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<WithFloating
|
<WithFloating show={showFloating} inline on:close={close}>
|
||||||
show={showFloating}
|
|
||||||
inline
|
|
||||||
on:close={() => {
|
|
||||||
if (!lockOpen) {
|
|
||||||
showFloating = false;
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
closeOnInsideClick
|
|
||||||
>
|
|
||||||
<slot slot="reference" name="button"></slot>
|
<slot slot="reference" name="button"></slot>
|
||||||
|
|
||||||
<Popover slot="floating">
|
<Popover slot="floating">
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,10 @@ export class ReviewerState {
|
||||||
document.dispatchEvent(new KeyboardEvent(forceKeyUp ? "keyup" : "keydown", e.data.eventInit));
|
document.dispatchEvent(new KeyboardEvent(forceKeyUp ? "keyup" : "keydown", e.data.eventInit));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "closemenu": {
|
||||||
|
document.dispatchEvent(new CustomEvent("closemenu"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "setstorage": {
|
case "setstorage": {
|
||||||
setConfigJson({
|
setConfigJson({
|
||||||
key: "reviewerStorage",
|
key: "reviewerStorage",
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,18 @@ interface KeyPressMessage {
|
||||||
eventInit: KeyboardEventInit;
|
eventInit: KeyboardEventInit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface CloseMenuMessage {
|
||||||
|
type: "closemenu";
|
||||||
|
}
|
||||||
|
|
||||||
interface SetStorageMessage {
|
interface SetStorageMessage {
|
||||||
type: "setstorage";
|
type: "setstorage";
|
||||||
json_buffer: Uint8Array;
|
json_buffer: Uint8Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ReviewerRequest = AudioMessage | UpdateTypedAnswerMessage | KeyPressMessage | SetStorageMessage;
|
export type ReviewerRequest =
|
||||||
|
| AudioMessage
|
||||||
|
| UpdateTypedAnswerMessage
|
||||||
|
| KeyPressMessage
|
||||||
|
| SetStorageMessage
|
||||||
|
| CloseMenuMessage;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue