@@ -59,6 +59,7 @@ var Search = Control.extend({
5959
6060 storageFallback : { } ,
6161 useLocalStorage : false ,
62+ searchResultsCache : null ,
6263
6364 // ---- END PROPERTIES ---- //
6465
@@ -462,21 +463,6 @@ var Search = Control.extend({
462463 self . clear ( ) ;
463464 } ) ;
464465 }
465-
466- // if we click the list item, navigate
467- // if the target element is an anchor tag, simply clear
468- if ( this . $resultsContainer && this . $resultsContainer . length ) {
469- this . $resultsContainer . on ( "click.search-component" , ".search-results > ul > li" , function ( ev ) {
470- var $target = $ ( ev . target ) ,
471- $a ;
472-
473- if ( ! $target . is ( "a" ) ) {
474- $a = $target . closest ( "li" ) . find ( "a" ) ;
475- self . navigate ( $a . attr ( "href" ) ) ;
476- return ;
477- }
478- } ) ;
479- }
480466 } ,
481467 unbindResultsEvents : function ( ) {
482468 //hide the search on cancel click
@@ -502,40 +488,45 @@ var Search = Control.extend({
502488 var self = this ;
503489 this . searchDebounceHandle = setTimeout ( function ( ) {
504490 self . searchEngineSearch ( value ) . then ( function ( results ) {
505- var numResults = results . length ;
506- if ( numResults > 50 ) {
507- numResults = '50+' ;
508- results = results . slice ( 0 , 50 ) ;
491+ self . searchResultsCache = results ;
492+ self . renderSearchResults ( results ) ;
493+ } ) ;
494+ } , this . options . searchTimeout ) ;
495+ } ,
496+
497+ renderSearchResults : function ( results ) {
498+ var self = this ;
499+ var numResults = results . length ;
500+ if ( numResults > 50 ) {
501+ numResults = '50+' ;
502+ results = results . slice ( 0 , 50 ) ;
503+ }
504+ var resultsFrag = this . options . resultsRenderer ( {
505+ results : results ,
506+ numResults : numResults ,
507+ searchValue : this . searchTerm
508+ } , {
509+ docUrl : function ( ) {
510+ if ( self . options . pathPrefix ) {
511+ return self . options . pathPrefix + "/" + this . url ;
509512 }
510- var resultsFrag = self . options . resultsRenderer ( {
511- results : results ,
512- numResults : numResults ,
513- searchValue :value ,
514- pathPrefix : ( self . options . pathPrefix === '.' ) ? '' : '/' + self . options . pathPrefix + '/'
515- } , {
516- docUrl : function ( ) {
517- if ( self . options . pathPrefix ) {
518- return self . options . pathPrefix + "/" + this . url ;
519- }
520-
521- if ( this . url . substr ( - 1 ) === "/" ) {
522- return this . url ;
523- }
524513
525- return "/" + this . url ;
526- }
527- } ) ;
514+ if ( this . url . substr ( - 1 ) === "/" ) {
515+ return this . url ;
516+ }
528517
529- self . $resultsWrap . empty ( ) ;
530- self . $resultsWrap [ 0 ] . appendChild ( resultsFrag ) ;
518+ return "/" + this . url ;
519+ }
520+ } ) ;
531521
532- //refresh necessary dom
533- self . $resultsList = null ;
534- if ( numResults ) {
535- self . $resultsList = self . $resultsWrap . find ( ".search-results > ul" ) ;
536- }
537- } ) ;
538- } , this . options . searchTimeout ) ;
522+ this . $resultsWrap . empty ( ) ;
523+ this . $resultsWrap [ 0 ] . appendChild ( resultsFrag ) ;
524+
525+ //refresh necessary dom
526+ this . $resultsList = null ;
527+ if ( numResults ) {
528+ this . $resultsList = this . $resultsWrap . find ( ".search-results > ul" ) ;
529+ }
539530 } ,
540531
541532 // ---- SHOW/HIDE ---- //
0 commit comments