@@ -374,7 +374,7 @@ describe('Interaction Event Controller Tests', () => {
374374
375375 test . each ( [
376376 { type : OriginEventType . KEY_DOWN , event : S2Event . GLOBAL_KEYBOARD_DOWN } ,
377- { type : OriginEventType . KEY_UP , event : S2Event . GLOBAL_KEYBOARD_DOWN } ,
377+ { type : OriginEventType . KEY_UP , event : S2Event . GLOBAL_KEYBOARD_UP } ,
378378 ] ) (
379379 'should not trigger sheet %o if outside the canvas container' ,
380380 ( { type, event } ) => {
@@ -586,4 +586,43 @@ describe('Interaction Event Controller Tests', () => {
586586 spreadsheet . container . emit ( OriginEventType . MOUSE_OUT ) ;
587587 expect ( spreadsheet . interaction . reset ) . not . toHaveBeenCalled ( ) ;
588588 } ) ;
589+
590+ // https://github.com/antvis/S2/issues/1172
591+ test . each ( [
592+ { type : OriginEventType . KEY_DOWN , event : S2Event . GLOBAL_KEYBOARD_DOWN } ,
593+ { type : OriginEventType . KEY_UP , event : S2Event . GLOBAL_KEYBOARD_UP } ,
594+ { type : OriginEventType . MOUSE_UP , event : S2Event . GLOBAL_MOUSE_UP } ,
595+ { type : OriginEventType . MOUSE_MOVE , event : S2Event . GLOBAL_MOUSE_MOVE } ,
596+ ] ) (
597+ 'should not prevent default original event if controller emitted global event %o' ,
598+ ( { type, event } ) => {
599+ jest
600+ . spyOn ( HTMLElement . prototype , 'contains' )
601+ . mockImplementation ( ( ) => true ) ;
602+
603+ const handler = jest . fn ( ) ;
604+ const originalEventHandler = jest . fn ( ) ;
605+ const preventDefault = jest . fn ( ) ;
606+
607+ spreadsheet . on ( event , handler ) ;
608+
609+ // 外部额外注册一个相同的事件
610+ window . addEventListener ( type , originalEventHandler ) ;
611+
612+ window . dispatchEvent (
613+ new MouseEvent ( 'click' , { preventDefault } as EventInit ) ,
614+ ) ;
615+ window . dispatchEvent ( new Event ( type , { preventDefault } as EventInit ) ) ;
616+
617+ // 都应该触发
618+ expect ( handler ) . toHaveBeenCalled ( ) ;
619+ expect ( originalEventHandler ) . toHaveBeenCalled ( ) ;
620+
621+ // 不应该阻止默认事件
622+ expect ( preventDefault ) . not . toHaveBeenCalled ( ) ;
623+
624+ spreadsheet . off ( event , handler ) ;
625+ window . removeEventListener ( type , originalEventHandler ) ;
626+ } ,
627+ ) ;
589628} ) ;
0 commit comments