@@ -12,13 +12,14 @@ class SoloView extends HTMLElement {
1212 fragment : null ,
1313 touchStartX : 0 ,
1414 touchEndX : 0 ,
15- } ;
16- // Adding window and doc event listeners
15+ } ; // Adding window and doc event listeners
1716 window . addEventListener (
1817 "hashchange" ,
19- { passive : true } ,
20- this . handleFragment . bind ( this )
18+ this . handleFragment . bind ( this ) ,
19+ { passive : true }
2120 ) ;
21+ // Note: We're keeping document keydown listener for wider page coverage
22+ // but the handler will now check for editable elements
2223 document . addEventListener ( "keydown" , this . handleKeydown . bind ( this ) ) ;
2324 }
2425
@@ -78,7 +79,11 @@ class SoloView extends HTMLElement {
7879 { passive : true }
7980 ) ;
8081
81- this . addEventListener ( "keydown" , this . handleKeydown , { passive : true } ) ;
82+ this . addEventListener (
83+ "keydown" ,
84+ this . handleKeydown ,
85+ { passive : false } // Changed from true to false so we can call preventDefault when appropriate
86+ ) ;
8287 }
8388
8489 // Update current block index
@@ -118,11 +123,20 @@ class SoloView extends HTMLElement {
118123 this . navigateNext ( new Event ( "swipe" ) ) ;
119124 }
120125 } ;
121-
122126 handleKeydown = ( event ) => {
127+ // Don't intercept arrow keys if they occurred in a form control that uses arrow keys
128+ const target = event . target ;
129+ if ( target . tagName === 'TEXTAREA' ||
130+ target . tagName === 'INPUT' ||
131+ target . tagName === 'SELECT' ||
132+ target . isContentEditable ) {
133+ return ; // Allow default behavior for arrow keys in editable elements
134+ }
135+
123136 if ( event . key === "ArrowLeft" ) {
124137 this . navigateBack ( event ) ;
125138 }
139+
126140 if ( event . key === "ArrowRight" ) {
127141 this . navigateNext ( event ) ;
128142 }
0 commit comments