@@ -57,7 +57,6 @@ define([
57
57
58
58
navigator : {
59
59
navigate ( { itemUrl} ) {
60
- console . log ( "Local navigate:" , itemUrl ) ;
61
60
window . location . assign ( itemUrl ) ;
62
61
} ,
63
62
navigateNewTab ( { itemUrl} ) {
@@ -121,7 +120,7 @@ define([
121
120
122
121
handleAutocompleteSubmit ( { state : { query } } ) {
123
122
if ( query && ! this . hasRedirect ) {
124
- window . location . href = this . getSearchResultsUrl ( query ) ;
123
+ this . navigator . navigate ( { itemUrl : this . getSearchResultsUrl ( query ) } ) ;
125
124
}
126
125
} ,
127
126
@@ -788,16 +787,26 @@ define([
788
787
}
789
788
} ,
790
789
790
+ /**
791
+ * Only clickable links can open in a new window - else popup blockers may be triggered
792
+ * @param event
793
+ * @returns {boolean }
794
+ */
795
+ canRedirectToNewWindow ( event ) {
796
+ return algoliaConfig . autocomplete . redirects . openInNewWindow
797
+ && ! ( event instanceof SubmitEvent )
798
+ && ! ( event instanceof KeyboardEvent ) ;
799
+ } ,
800
+
791
801
buildRedirectPlugin ( ) {
792
802
const onRedirect = ( redirects , { event, navigator, state } ) => {
793
- console . log ( "onRedirect called:" , redirects ) ;
794
803
const item = redirects . find ( ( r ) => r . sourceId === 'products' ) ;
795
804
const itemUrl = item ?. urls ?. [ 0 ] ;
796
805
if ( ! itemUrl ) return ;
797
806
798
807
if ( event . metaKey || event . ctrlKey ) {
799
808
navigator . navigateNewTab ( { itemUrl, item, state } ) ;
800
- } else if ( event . shiftKey ) {
809
+ } else if ( event . shiftKey || this . canRedirectToNewWindow ( event ) ) {
801
810
navigator . navigateNewWindow ( { itemUrl, item, state } ) ;
802
811
} else {
803
812
navigator . navigate ( { itemUrl, item, state } ) ;
0 commit comments