Skip to content

Commit f45833b

Browse files
committed
Disable all shortcuts when typing in notes textarea or input fields
1 parent 0e7ed32 commit f45833b

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

the-future-of-ruby-documentation.html

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,12 @@ <h1 class="reveal" style="font-size:clamp(2rem,6vw,4.5rem)">Thank you!</h1>
549549
</section>
550550

551551
<script>
552+
// Shared check: is the user typing in a text field?
553+
function isTyping(e) {
554+
const tag = e.target.tagName;
555+
return tag === 'TEXTAREA' || tag === 'INPUT' || !!e.target.getAttribute('contenteditable');
556+
}
557+
552558
class SlidePresentation {
553559
constructor() {
554560
this.slides = document.querySelectorAll('.slide');
@@ -579,7 +585,7 @@ <h1 class="reveal" style="font-size:clamp(2rem,6vw,4.5rem)">Thank you!</h1>
579585
}
580586
setupKeyboardNav() {
581587
document.addEventListener('keydown', (e) => {
582-
if (e.target.getAttribute('contenteditable') || e.target.tagName === 'TEXTAREA' || e.target.tagName === 'INPUT') return;
588+
if (isTyping(e)) return;
583589
switch(e.key) {
584590
case 'ArrowDown': case 'ArrowRight': case ' ': case 'PageDown':
585591
e.preventDefault(); this.goToSlide(this.currentSlide + 1); break;
@@ -655,7 +661,7 @@ <h1 class="reveal" style="font-size:clamp(2rem,6vw,4.5rem)">Thank you!</h1>
655661
}
656662
setupKeyboard() {
657663
document.addEventListener('keydown', (e) => {
658-
if ((e.key === 'e' || e.key === 'E') && !e.target.getAttribute('contenteditable')) this.toggleEditMode();
664+
if ((e.key === 'e' || e.key === 'E') && !isTyping(e)) this.toggleEditMode();
659665
if (e.ctrlKey && e.key === 's' && this.isActive) { e.preventDefault(); this.exportFile(); }
660666
});
661667
}
@@ -741,8 +747,8 @@ <h1 class="reveal" style="font-size:clamp(2rem,6vw,4.5rem)">Thank you!</h1>
741747
}
742748
setupKeyboard() {
743749
document.addEventListener('keydown', (e) => {
744-
if (e.target === this.textarea) return;
745-
if ((e.key === 'n' || e.key === 'N') && !e.target.getAttribute('contenteditable')) this.toggle();
750+
if (isTyping(e)) return;
751+
if (e.key === 'n' || e.key === 'N') this.toggle();
746752
});
747753
this.textarea.addEventListener('keydown', (e) => {
748754
if (e.key === 'Escape') { this.toggle(); e.preventDefault(); }
@@ -858,7 +864,7 @@ <h1 class="reveal" style="font-size:clamp(2rem,6vw,4.5rem)">Thank you!</h1>
858864

859865
setupKeyboard() {
860866
document.addEventListener('keydown', (e) => {
861-
if (e.target.getAttribute('contenteditable')) return;
867+
if (isTyping(e)) return;
862868
if (e.key === 's' || e.key === 'S') { if (!e.ctrlKey && !e.metaKey) this.openPresenterWindow(); }
863869
if (e.key === 'b' || e.key === 'B') this.toggleBlackout();
864870
});

0 commit comments

Comments
 (0)