       selected: index == @state.selectedModelIndex
       ref: index
       key: fact.id
-      onMouseEnter: => @setState selectedModelIndex: index
-      onMouseLeave: => @setState selectedModelIndex: null
-      onClick: => @setState selectedModelIndex: index; @props.onSelect?()
+      onMouseEnter: => @setState hasModelSelected: true, selectedModelIndex: index
+      onMouseLeave: => @setState hasModelSelected: false
+      onClick: =>
+        @setState hasModelSelected: true, selectedModelIndex: index
+        @props.onSelect?()
 
   selectedModel: ->
-    return unless @state.selectedModelIndex?
+    return unless @state.hasModelSelected
 
     @model().at(@state.selectedModelIndex)
 

  changeOptions: 'add remove reset sort sync'

  getInitialState: ->
    selectedModelIndex: null

  _childView: (fact, index) ->
    ReactFactSearchResult


  _select: (index) ->
    index = @_fixIndexModulo(index)
    @setState hasModelSelected: true, selectedModelIndex: index
    @refs[index].scrollIntoView()

  moveSelectionUp: ->
    @_select if @state.hasModelSelected then @state.selectedModelIndex-1 else -1

  moveSelectionDown: ->
    @_select if @state.hasModelSelected then @state.selectedModelIndex+1 else 0

window.ReactFactSearch = React.createBackboneClass
  displayName: 'ReactFactSearch'
