@@ -52,6 +52,7 @@ class DocSearch {
52
52
53
53
this . client = algoliasearch ( this . appId , this . apiKey ) ;
54
54
this . client . addAlgoliaAgent ( 'docsearch.js ' + version ) ;
55
+
55
56
this . autocomplete = autocomplete ( this . input , autocompleteOptions , [ {
56
57
source : this . getAutocompleteSource ( ) ,
57
58
templates : {
@@ -62,7 +63,11 @@ class DocSearch {
62
63
this . autocomplete . on (
63
64
'autocomplete:selected' ,
64
65
this . handleSelected . bind ( null , this . autocomplete . autocomplete )
65
- ) ;
66
+ )
67
+ this . autocomplete . on (
68
+ 'autocomplete:shown' ,
69
+ this . handleShown . bind ( null , this . input )
70
+ )
66
71
}
67
72
68
73
/**
@@ -184,6 +189,27 @@ class DocSearch {
184
189
input . setVal ( '' ) ;
185
190
window . location . href = suggestion . url ;
186
191
}
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
+ }
187
213
}
188
214
189
215
export default DocSearch ;
0 commit comments