From 351db434a89ab708d2777e75d7d317317efa5f90 Mon Sep 17 00:00:00 2001 From: Suguru Inoue Date: Fri, 20 Jun 2025 19:06:11 +0200 Subject: [PATCH] fix(editor): Add back keyboard shortcuts for log view in PiP (no-changelog) (#16563) --- .../src/composables/useKeybindings.ts | 8 +++--- .../features/logs/components/LogsPanel.vue | 21 +++++++-------- .../LogsViewKeyboardEventListener.vue | 27 +++++++++++++++++++ 3 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 packages/frontend/editor-ui/src/features/logs/components/LogsViewKeyboardEventListener.vue diff --git a/packages/frontend/editor-ui/src/composables/useKeybindings.ts b/packages/frontend/editor-ui/src/composables/useKeybindings.ts index 6fe02a4cbc..7bf1d7480a 100644 --- a/packages/frontend/editor-ui/src/composables/useKeybindings.ts +++ b/packages/frontend/editor-ui/src/composables/useKeybindings.ts @@ -1,7 +1,8 @@ import { useActiveElement, useEventListener } from '@vueuse/core'; import { useDeviceSupport } from '@n8n/composables/useDeviceSupport'; import type { MaybeRef, Ref } from 'vue'; -import { computed, unref } from 'vue'; +import { computed, inject, unref } from 'vue'; +import { PiPWindowSymbol } from '@/constants'; type KeyboardEventHandler = | ((event: KeyboardEvent) => void) @@ -29,7 +30,8 @@ export const useKeybindings = ( disabled: MaybeRef; }, ) => { - const activeElement = useActiveElement(); + const pipWindow = inject(PiPWindowSymbol); + const activeElement = useActiveElement({ window: pipWindow?.value }); const { isCtrlKeyPressed } = useDeviceSupport(); const isDisabled = computed(() => unref(options?.disabled)); @@ -148,5 +150,5 @@ export const useKeybindings = ( } } - useEventListener(document, 'keydown', onKeyDown); + useEventListener(pipWindow?.value?.document ?? document, 'keydown', onKeyDown); }; diff --git a/packages/frontend/editor-ui/src/features/logs/components/LogsPanel.vue b/packages/frontend/editor-ui/src/features/logs/components/LogsPanel.vue index bd9aabebe1..93e7a0afbd 100644 --- a/packages/frontend/editor-ui/src/features/logs/components/LogsPanel.vue +++ b/packages/frontend/editor-ui/src/features/logs/components/LogsPanel.vue @@ -14,8 +14,8 @@ import { useLogsTreeExpand } from '@/features/logs/composables/useLogsTreeExpand import { type LogEntry } from '@/features/logs/logs.types'; import { useLogsStore } from '@/stores/logs.store'; import { useLogsPanelLayout } from '@/features/logs/composables/useLogsPanelLayout'; -import { type KeyMap, useKeybindings } from '@/composables/useKeybindings'; -import { useActiveElement } from '@vueuse/core'; +import { type KeyMap } from '@/composables/useKeybindings'; +import LogsViewKeyboardEventListener from './LogsViewKeyboardEventListener.vue'; const props = withDefaults(defineProps<{ isReadOnly?: boolean }>(), { isReadOnly: false }); @@ -79,15 +79,8 @@ const logsPanelActionsProps = computed['$p onToggleOpen, onToggleSyncSelection: logsStore.toggleLogSelectionSync, })); -const activeElement = useActiveElement(); -const isBlurred = computed( - () => - !activeElement.value || - !container.value || - (!container.value.contains(activeElement.value) && container.value !== activeElement.value), -); -const localKeyMap = computed(() => ({ +const keyMap = computed(() => ({ j: selectNext, k: selectPrev, Escape: () => select(undefined), @@ -97,8 +90,6 @@ const localKeyMap = computed(() => ({ Enter: () => selected.value && handleOpenNdv(selected.value), })); -useKeybindings(localKeyMap, { disabled: isBlurred }); - function handleResizeOverviewPanelEnd() { if (isOverviewPanelFullWidth.value) { select(undefined); @@ -123,6 +114,12 @@ function handleOpenNdv(treeNode: LogEntry) {