From 5b5f997ecfdc1794b821dbf21a465decfb7277e2 Mon Sep 17 00:00:00 2001 From: freeplay Date: Sun, 16 Jul 2023 13:41:55 -0400 Subject: [PATCH] fix: more reliable not closing emoji picker on shift key --- .../client/src/components/MkEmojiPicker.vue | 4 +-- .../src/components/MkEmojiPickerDialog.vue | 31 +++---------------- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/packages/client/src/components/MkEmojiPicker.vue b/packages/client/src/components/MkEmojiPicker.vue index 09d61518d..2a797f56a 100644 --- a/packages/client/src/components/MkEmojiPicker.vue +++ b/packages/client/src/components/MkEmojiPicker.vue @@ -195,7 +195,7 @@ const props = withDefaults( ); const emit = defineEmits<{ - (ev: "chosen", v: string): void; + (ev: "chosen", v: string, ev: MouseEvent): void; }>(); const search = ref(); @@ -436,7 +436,7 @@ function chosen(emoji: any, ev?: MouseEvent) { } const key = getKey(emoji); - emit("chosen", key); + emit("chosen", key, ev); // 最近使った絵文字更新 if (!pinned.value.includes(key)) { diff --git a/packages/client/src/components/MkEmojiPickerDialog.vue b/packages/client/src/components/MkEmojiPickerDialog.vue index 28cc1d215..99afe9b6a 100644 --- a/packages/client/src/components/MkEmojiPickerDialog.vue +++ b/packages/client/src/components/MkEmojiPickerDialog.vue @@ -58,29 +58,16 @@ const emit = defineEmits<{ const modal = ref>(); const picker = ref>(); -const isShiftKeyPressed = ref(false); -const keydownHandler = (e) => { - if (e.key === "Shift") { - isShiftKeyPressed.value = true; - } -}; - -const keyupHandler = (e) => { - if (e.key === "Shift") { - isShiftKeyPressed.value = false; - } -}; function checkForShift(ev?: MouseEvent) { - if (!isShiftKeyPressed.value) { - modal.value?.close(ev); - } + if (ev?.shiftKey) return; + modal.value?.close(ev); } -function chosen(emoji: any) { +function chosen(emoji: any, ev: MouseEvent) { emit("done", emoji); - checkForShift(); + checkForShift(ev); } function opening() { @@ -91,16 +78,6 @@ function opening() { } picker.value?.focus(); } - -onMounted(() => { - window.addEventListener("keydown", keydownHandler); - window.addEventListener("keyup", keyupHandler); -}); - -onBeforeUnmount(() => { - window.removeEventListener("keydown", keydownHandler); - window.removeEventListener("keyup", keyupHandler); -});