@@ -16,6 +16,7 @@ define(
16
16
17
17
const DEFAULT_HITS_PER_SECTION = 2 ;
18
18
const DEBOUNCE_MS = 300 ;
19
+ const MIN_SEARCH_LENGTH_CHARS = 3 ;
19
20
20
21
// global state
21
22
let suggestionSection = false ;
@@ -349,8 +350,8 @@ define(
349
350
transformSource ( { source} ) {
350
351
return {
351
352
...source ,
352
- getItems ( ) {
353
- const items = source . getItems ( ) ;
353
+ getItems ( { query } ) {
354
+ const items = filterMinChars ( query , source . getItems ( ) ) ;
354
355
const oldTransform = items . transformResponse ;
355
356
items . transformResponse = arg => {
356
357
const hits = oldTransform ? oldTransform ( arg ) : arg . hits ;
@@ -385,6 +386,12 @@ define(
385
386
} ) ;
386
387
} ;
387
388
389
+ const filterMinChars = ( query , result ) => {
390
+ return ( query . length >= MIN_SEARCH_LENGTH_CHARS )
391
+ ? result
392
+ : [ ] ;
393
+ }
394
+
388
395
const debouncePromise = ( fn , time ) => {
389
396
let timerId = undefined ;
390
397
@@ -453,9 +460,12 @@ define(
453
460
window . location . href = algoliaConfig . resultPageUrl + `?q=${ data . state . query } ` ;
454
461
}
455
462
} ,
456
- getSources ( ) {
457
- return debounced ( autocompleteConfig ) ;
463
+ getSources ( { query } ) {
464
+ return filterMinChars ( query , debounced ( autocompleteConfig ) ) ;
458
465
} ,
466
+ shouldPanelOpen ( { state } ) {
467
+ return state . query . length >= MIN_SEARCH_LENGTH_CHARS ;
468
+ }
459
469
} ;
460
470
461
471
if ( isMobile ( ) === true ) {
0 commit comments