@@ -52,6 +52,7 @@ class DocSearch {
5252
5353 this . client = algoliasearch ( this . appId , this . apiKey ) ;
5454 this . client . addAlgoliaAgent ( 'docsearch.js ' + version ) ;
55+
5556 this . autocomplete = autocomplete ( this . input , autocompleteOptions , [ {
5657 source : this . getAutocompleteSource ( ) ,
5758 templates : {
@@ -62,7 +63,11 @@ class DocSearch {
6263 this . autocomplete . on (
6364 'autocomplete:selected' ,
6465 this . handleSelected . bind ( null , this . autocomplete . autocomplete )
65- ) ;
66+ )
67+ this . autocomplete . on (
68+ 'autocomplete:shown' ,
69+ this . handleShown . bind ( null , this . input )
70+ )
6671 }
6772
6873 /**
@@ -184,6 +189,27 @@ class DocSearch {
184189 input . setVal ( '' ) ;
185190 window . location . href = suggestion . url ;
186191 }
192+
193+ handleShown ( input , event ) {
194+ var middleOfInput = input . offset ( ) . left + input . width ( ) / 2 ;
195+ var middleOfWindow = $ ( document ) . width ( ) / 2 ;
196+
197+ if ( isNaN ( middleOfWindow ) ) {
198+ middleOfWindow = 900 ;
199+ }
200+
201+ var alignClass = middleOfInput - middleOfWindow >= 0 ? 'algolia-autocomplete-right' : 'algolia-autocomplete-left' ;
202+ var otherAlignClass = middleOfInput - middleOfWindow < 0 ? 'algolia-autocomplete-right' : 'algolia-autocomplete-left' ;
203+
204+ var autocompleteWrapper = $ ( '.algolia-autocomplete' ) ;
205+ if ( ! autocompleteWrapper . hasClass ( alignClass ) ) {
206+ autocompleteWrapper . addClass ( alignClass )
207+ }
208+
209+ if ( autocompleteWrapper . hasClass ( otherAlignClass ) ) {
210+ autocompleteWrapper . removeClass ( otherAlignClass ) ;
211+ }
212+ }
187213}
188214
189215export default DocSearch ;
0 commit comments