diff --git a/frontend/src/components/BausteinPanel.vue b/frontend/src/components/BausteinPanel.vue index 99d7985..7660ed7 100644 --- a/frontend/src/components/BausteinPanel.vue +++ b/frontend/src/components/BausteinPanel.vue @@ -348,21 +348,32 @@ function onWindowKey(e) { onMounted(() => { if (props.mode !== 'full') return // Trigger-Modus (Liste): nur Tab-Leiste, keine Prüfungs-/Text-Logik window.addEventListener('keydown', onWindowKey) + window.addEventListener('keydown', onPruefKey) // Direkt im Fokus geöffneter Vertiefung-/Amateur-Tab: Text laden (sonst nur via toggle). if (activeTab.value === 'vertiefung' || activeTab.value === 'deepdive') openText(activeTab.value) }) -onUnmounted(() => window.removeEventListener('keydown', onWindowKey)) +onUnmounted(() => { + window.removeEventListener('keydown', onWindowKey) + window.removeEventListener('keydown', onPruefKey) +}) -// ALT+1 Nachfragen/Nachhaken · ALT+2 primär (Antwort abgeben / Nächste Frage) -// ALT+3 Verlauf bewerten (frage_offen, nach Diskussion) bzw. Gründlich prüfen (bewertet). +// ALT+1 Nachfragen/Nachhaken · ALT+2 primärer Button je Phase (idle: Frage anfordern, +// frage_offen: Antwort abgeben, bewertet: Nächste Frage) · ALT+3 Verlauf bewerten / Gründlich. +// window-Listener (nicht div), damit es auch ohne Fokus im Feld greift + den Browser-Default +// (Tab-Wechsel) unterdrückt. Nur im Prüfungs-Tab. function onPruefKey(e) { if (!e.altKey || e.repeat) return - if (e.key === '1') { e.preventDefault(); nachfragen() } - else if (e.key === '2') { - e.preventDefault() - pruefPhase.value === 'frage_offen' ? antwortAbgeben() : naechsteFrageZeigen() + if (props.mode !== 'full' || activeTab.value !== 'pruefung') return + if (!['1', '2', '3'].includes(e.key)) return + e.preventDefault() + if (pruefLoading.value) return + if (e.key === '1') { + if (pruefPhase.value !== 'idle' && pruefInput.value.trim()) nachfragen() + } else if (e.key === '2') { + if (pruefPhase.value === 'idle') frageAnfordern() + else if (pruefPhase.value === 'frage_offen') { if (pruefInput.value.trim()) antwortAbgeben() } + else naechsteFrageZeigen() } else if (e.key === '3') { - e.preventDefault() if (pruefPhase.value === 'bewertet') gruendlichPruefen() else if (pruefPhase.value === 'frage_offen' && hatDiskussion.value) verlaufBewerten() } @@ -434,7 +445,7 @@ function onPruefKey(e) { -
+