From e640cd26e89f3deb6d48cdb55ae51f326fdc7bad Mon Sep 17 00:00:00 2001 From: Haruki Tazoe <40142697+jdkfx@users.noreply.github.com> Date: Tue, 20 Aug 2024 02:52:26 +0900 Subject: [PATCH] =?UTF-8?q?=E8=BE=9E=E6=9B=B8=E3=81=AE=E5=8D=98=E8=AA=9E?= =?UTF-8?q?=E3=83=BB=E8=AA=AD=E3=81=BF=E5=85=A5=E5=8A=9B=E6=AC=84=E3=81=A7?= =?UTF-8?q?=E5=8F=B3=E3=82=AF=E3=83=AA=E3=83=83=E3=82=AF=E3=83=A1=E3=83=8B?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=82=92=E4=BD=BF=E3=81=88=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B=20(#2156)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 右クリックによるコンテキストメニュー表示 * 辞書の単語と読みに全選択操作を追加 * 辞書の単語と読みにコピー操作を追加 * 辞書の単語と読みに切り取り操作を追加 * 辞書の単語と読みに貼り付け操作を追加 * 右クリックメニューに関するコンポーザブルを追加し、処理をそちらに委譲 * コンポーザブルを修正し、切り取りやコピーペーストができるようにする * 選択したinputテキストをコンテキストメニューヘッダーに表示する * コンテキストメニューの開閉によるfocusやblurに対する処理 * 右側のパネル描画をv-ifからv-showによる切り替えに修正 * コンポーザブルで不要なinputField引数の削除 * テキスト未選択時のコンテキストメニューヘッダーにテキストを表示させなくする * eslintのエラーを回避 * コメントの追加 * 関数の統合 * 選択したテキストの表示・非表示処理をリファクタリング * nativeElをキャッシュせず、常に新しく取得し直す * コメント追加や関数名の変更など、細かい修正 * Apply suggestions from code review * Apply suggestions from code review --------- Co-authored-by: Hiroshiba --- .../Dialog/DictionaryManageDialog.vue | 42 ++++- src/composables/useRightClickContextMenu.ts | 172 ++++++++++++++++++ src/helpers/SelectionHelperForQInput.ts | 40 ++-- 3 files changed, 234 insertions(+), 20 deletions(-) create mode 100644 src/composables/useRightClickContextMenu.ts diff --git a/src/components/Dialog/DictionaryManageDialog.vue b/src/components/Dialog/DictionaryManageDialog.vue index fb2c1828fd..2d4c1dcfb0 100644 --- a/src/components/Dialog/DictionaryManageDialog.vue +++ b/src/components/Dialog/DictionaryManageDialog.vue @@ -118,7 +118,7 @@
@@ -129,9 +129,18 @@ class="word-input" dense :disable="uiLocked" + @focus="clearSurfaceInputSelection()" @blur="setSurface(surface)" @keydown.enter="yomiFocus" - /> + > + +
読み
@@ -142,12 +151,20 @@ dense :error="!isOnlyHiraOrKana" :disable="uiLocked" + @focus="clearYomiInputSelection()" @blur="setYomi(yomi)" @keydown.enter="setYomiWhenEnter" > +
アクセント調整
@@ -272,6 +289,8 @@ import { computed, ref, watch } from "vue"; import { QInput } from "quasar"; import AudioAccent from "@/components/Talk/AudioAccent.vue"; +import ContextMenu from "@/components/Menu/ContextMenu.vue"; +import { useRightClickContextMenu } from "@/composables/useRightClickContextMenu"; import { useStore } from "@/store"; import type { FetchAudioResult } from "@/store/type"; import { AccentPhrase, UserDictWord } from "@/openapi"; @@ -676,6 +695,25 @@ const toWordEditingState = () => { const toDialogClosedState = () => { dictionaryManageDialogOpenedComputed.value = false; }; + +const surfaceContextMenu = ref>(); +const yomiContextMenu = ref>(); + +const { + contextMenuHeader: surfaceContextMenuHeader, + contextMenudata: surfaceContextMenudata, + startContextMenuOperation: startSurfaceContextMenuOperation, + clearInputSelection: clearSurfaceInputSelection, + endContextMenuOperation: endSurfaceContextMenuOperation, +} = useRightClickContextMenu(surfaceContextMenu, surfaceInput, surface); + +const { + contextMenuHeader: yomiContextMenuHeader, + contextMenudata: yomiContextMenudata, + startContextMenuOperation: startYomiContextMenuOperation, + clearInputSelection: clearYomiInputSelection, + endContextMenuOperation: endYomiContextMenuOperation, +} = useRightClickContextMenu(yomiContextMenu, yomiInput, yomi);