@@ -41,7 +41,9 @@ export class SearchElement extends LitElement {
41
41
state : true ,
42
42
} ,
43
43
cssFormFocusClasses : { state : true } ,
44
- showModalKeycode : { type : Number , attribute : "show-modal-keycode" } ,
44
+ triggerKeycode : { type : Number , attribute : "trigger-keycode" } ,
45
+ triggerSelector : { type : String , attribute : "trigger-selector" } ,
46
+ triggerEvent : { type : String , attribute : "trigger-event" } ,
45
47
} ;
46
48
47
49
static styles = styleSheet ;
@@ -64,7 +66,9 @@ export class SearchElement extends LitElement {
64
66
this . currentQueryRequest = null ;
65
67
this . defaultFilter = null ;
66
68
this . filters = [ ] ;
67
- this . showModalKeycode = 191 ;
69
+ this . triggerKeycode = 191 ;
70
+ this . triggerSelector = null ;
71
+ this . triggerEvent = "focusin" ;
68
72
}
69
73
70
74
loadConfig ( config ) {
@@ -483,20 +487,43 @@ export class SearchElement extends LitElement {
483
487
this . closeModal ( ) ;
484
488
}
485
489
// Show the modal with `/`
486
- else if ( e . keyCode === this . showModalKeycode && ! this . show ) {
490
+ else if ( e . keyCode === this . triggerKeycode && ! this . show ) {
487
491
// prevent opening "Quick Find" in Firefox
488
492
e . preventDefault ( ) ;
489
493
this . showModal ( ) ;
490
494
}
491
495
} ;
492
496
497
+ _handleShowModalUser = ( e ) => {
498
+ e . preventDefault ( ) ;
499
+ this . showModal ( ) ;
500
+ } ;
501
+
493
502
connectedCallback ( ) {
494
503
super . connectedCallback ( ) ;
495
504
// open search modal if "forward slash" button is pressed
496
505
document . addEventListener ( "keydown" , this . _handleShowModal ) ;
506
+
507
+ if ( this . triggerSelector ) {
508
+ let element = document . querySelector ( this . triggerSelector ) ;
509
+ if ( element !== undefined ) {
510
+ element . addEventListener ( this . triggerEvent , this . _handleShowModalUser ) ;
511
+ }
512
+ }
497
513
}
514
+
498
515
disconnectedCallback ( ) {
499
516
document . removeEventListener ( "keydown" , this . _handleShowModal ) ;
517
+ if ( this . triggerSelector ) {
518
+ let element = document . querySelector ( this . triggerSelector ) ;
519
+ if ( element !== undefined ) {
520
+ element . removeEventListener (
521
+ this . triggerEvent ,
522
+ this . _handleShowModalUser
523
+ ) ;
524
+ }
525
+ }
526
+
500
527
super . disconnectedCallback ( ) ;
501
528
}
502
529
}
0 commit comments